{"version":3,"sources":["../node_modules/react/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../src/contexts/IonLifeCycleContext.tsx","../../src/lifecycle/IonLifeCycleHOC.tsx","../../src/lifecycle/hooks.ts","../../src/contexts/NavContext.ts","../../src/components/utils/case.ts","../../src/components/utils/attachProps.ts","../../src/components/utils/index.tsx","../../src/components/createComponent.tsx","../../src/components/proxies.ts","../../src/components/createControllerComponent.tsx","../../src/components/createOverlayComponent.tsx","../../src/components/IonAlert.tsx","../../src/components/IonLoading.tsx","../../src/components/IonPicker.tsx","../../src/components/IonPopover.tsx","../../src/components/IonModal.tsx","../../src/routing/StackContext.tsx","../../src/routing/PageManager.tsx","../../src/components/IonPage.tsx","../../src/components/navigation/IonTabsContext.tsx","../../src/utils/HTMLElementSSR.ts","../../src/components/inner-proxies.ts","../../src/routing/OutletPageManager.tsx","../../src/components/IonRouterOutlet.tsx","../../src/components/navigation/IonTabButton.tsx","../../src/components/navigation/IonTabBar.tsx","../../src/components/navigation/IonTabs.tsx","../../src/components/utils/dev.ts","../../src/components/IonIcon.tsx","../../src/components/IonRoute.tsx","../../src/components/IonRouterContext.tsx","../../src/components/IonRedirect.tsx","../../src/components/CreateAnimation.tsx","../../src/components/index.ts","../../src/routing/RouteManagerContext.ts","../../src/routing/ViewLifeCycleManager.tsx","../../src/routing/LocationHistory.ts","../../src/routing/NavManager.tsx","../../src/routing/ViewStacks.ts","../../src/utils/generateId.ts","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/utils/bindActionCreators.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/prop-types/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../../modules/miniCreateReactContext.js","../../modules/createContext.js","../../modules/createNamedContext.js","../../modules/HistoryContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../../src/devtoolsExtension.ts","../../src/isPlainObject.ts","../../src/utils.ts","../../src/getDefaultMiddleware.ts","../../src/configureStore.ts","../../src/createAction.ts","../../src/mapBuilders.ts","../../src/createSlice.ts","../../src/createReducer.ts","../../src/nanoid.ts","../../src/createAsyncThunk.ts","../../src/listenerMiddleware/index.ts","../../src/listenerMiddleware/task.ts","../../src/autoBatchEnhancer.ts","../../src/index.ts","../../src/error.js","../../src/validation.js","../../src/clear.js","../../src/timer.js","../../src/util.js","../../src/dynamic.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/react-redux-toastr/lib/index.js","../node_modules/@wojtekmaj/date-utils/dist/esm/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@ionic/core/node_modules/tslib/tslib.es6.js","../node_modules/axios/index.js","../../../../src/flags.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/inherits/inherits_browser.js","../../../src/worldwide.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/safe-buffer/index.js","../node_modules/@ionic/core/dist/esm-es5/animation-822d986b.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-dom/index.js","../node_modules/@ionic/core/dist/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../../../src/debug-build.ts","../../../../src/utils.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../src/is.ts","../../../src/logger.ts","../node_modules/process/browser.js","../../../../src/instrument/_handlers.ts","../../../src/object.ts","../../../src/misc.ts","../../../src/hub.ts","../node_modules/@ionic/core/dist/esm-es5/helpers-1457892a.js","../node_modules/react/jsx-runtime.js","../node_modules/webpack/buildin/global.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/buffer/index.js","../../src/utils/errors.ts","../../src/utils/common.ts","../../src/utils/plugins.ts","../../src/core/scope.ts","../../src/core/finalize.ts","../../src/core/proxy.ts","../../src/core/immerClass.ts","../../src/core/current.ts","../../src/plugins/es5.ts","../../src/immer.ts","../../src/utils/env.ts","../node_modules/react-ga4/dist/index.js","../../../../../src/@ionic-native/core/decorators/common.ts","../node_modules/ionicons/icons/index.mjs","../node_modules/@ionic/core/dist/esm-es5/index-7a8b7a1c.js","../node_modules/@ionic/core/dist/esm-es5/ionic-global-63a97a32.js","../../../src/global.ts","../node_modules/react-date-picker/dist/entry.js","../node_modules/classnames/index.js","../../../src/internal/config.ts","../node_modules/axios/lib/utils.js","../../../src/session.ts","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/minimalistic-assert/index.js","../node_modules/elliptic/lib/elliptic/utils.js","../../../src/string.ts","../node_modules/@ionic/core/dist/esm-es5/index-a7711c1e.js","../node_modules/merge-class-names/dist/esm/index.js","../../../src/exports.ts","../../../src/integration.ts","../../../src/node.ts","../node_modules/hash.js/lib/hash/utils.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../src/tracing.ts","../../../../src/utils/spanUtils.ts","../../../../src/@ionic-native/core/ionic-native-plugin.ts","../../../../src/@ionic-native/core/util.ts","../../../../../src/@ionic-native/core/decorators/cordova.ts","../../../../src/@ionic-native/core/index.ts","../../../src/time.ts","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@ionic/core/dist/esm-es5/overlays-a62f858b.js","../node_modules/cipher-base/index.js","../node_modules/webpack/buildin/module.js","../node_modules/react-date-picker/dist/shared/propTypes.js","../../../../src/span.ts","../../../src/constants.ts","../../../src/eventProcessors.ts","../../../src/flags.ts","../../../../src/internal/util/UnsubscriptionError.ts","../../../src/internal/Subscription.ts","../../../../src/internal/util/isObject.ts","../../../src/internal/Subscriber.ts","../node_modules/set-interval-async/node_modules/@babel/runtime/helpers/asyncToGenerator.js","../../../../src/constants.ts","../node_modules/libphonenumber-js/metadata.min.json.js","../../source/normalizeArguments.js","../../source/constants.js","../../source/ParseError.js","../../../source/tools/semver-compare.js","../../source/metadata.js","../../../../source/helpers/extension/createExtensionPattern.js","../../../source/helpers/isViablePhoneNumber.js","../../../../source/helpers/extension/extractExtension.js","../../../source/helpers/parseDigits.js","../../source/parseIncompletePhoneNumber.js","../../../source/helpers/checkNumberLength.js","../../../source/helpers/mergeArrays.js","../../source/isPossible.js","../../../source/helpers/matchesEntirely.js","../../../source/helpers/getNumberType.js","../../../source/helpers/getPossibleCountriesForNumber.js","../../../source/helpers/applyInternationalSeparatorStyle.js","../../../source/helpers/formatNationalNumberUsingFormat.js","../../../source/helpers/getIddPrefix.js","../../source/format.js","../../../source/helpers/RFC3966.js","../../source/PhoneNumber.js","../../source/isValid.js","../../../source/helpers/stripIddPrefix.js","../../../source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../../source/helpers/extractNationalNumber.js","../../../source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../../source/helpers/extractCountryCallingCode.js","../../../source/helpers/getCountryByNationalNumber.js","../../../source/helpers/getCountryByCallingCode.js","../../../source/helpers/extractPhoneContext.js","../../../source/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../../source/parse.js","../../source/parsePhoneNumber_.js","../../source/parsePhoneNumberWithError_.js","../../source/parsePhoneNumber.js","../../source/isPossiblePhoneNumber.js","../../source/getCountries.js","../node_modules/react-phone-number-input/locale/en.json.js","../../source/PropTypes.js","../../source/helpers.js","../../source/closeBraces.js","../../source/templateFormatter.js","../../source/dom.js","../../source/inputControl.js","../../source/edit.js","../../../source/react/Input.js","../../source/AsYouTypeState.js","../../source/AsYouTypeFormatter.util.js","../../source/AsYouTypeFormatter.complete.js","../../source/AsYouTypeFormatter.PatternParser.js","../../source/AsYouTypeFormatter.PatternMatcher.js","../../source/AsYouTypeFormatter.js","../../source/AsYouTypeParser.js","../../source/AsYouType.js","../../../source/helpers/inputValuePrefix.js","../../source/InputSmart.js","../../source/InputBasic.js","../../source/formatIncompletePhoneNumber.js","../../source/unicode.js","../../source/CountrySelect.js","../../source/Flag.js","../../source/InternationalIcon.js","../../../source/helpers/countries.js","../../source/CountryIcon.js","../../../source/helpers/getInternationalPhoneNumberPrefix.js","../../../source/helpers/phoneInputHelpers.js","../../../source/helpers/getPhoneInputWithCountryStateUpdateFromNewProps.js","../../source/PhoneInputWithCountry.js","../../source/PhoneInputWithCountryDefault.js","../node_modules/react-phone-number-input/min/index.js","../../../src/normalize.ts","../node_modules/events/events.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/mode.js","../../../../src/hubextensions.ts","../../../../src/internal/util/isFunction.ts","../node_modules/react-slick/lib/index.js","../../../../src/internal/util/hostReportError.ts","../../../src/scope.ts","../node_modules/randombytes/browser.js","../node_modules/hash-base/node_modules/readable-stream/errors-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/sha.js/hash.js","../node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/react-redux-toastr/lib/utils.js","../node_modules/react-slick/lib/utils/innerSliderUtils.js","../node_modules/webpack/buildin/harmony-module.js","../../../../src/idletransaction.ts","../../../../src/transaction.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/jsonwebtoken/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/js-cookie/dist/js.cookie.js","../../../src/internal/Observer.ts","../../../../src/utils/applyScopeDataToEvent.ts","../node_modules/react-twitter-widgets/es/utils.js","../node_modules/react-twitter-widgets/es/index.js","../../src/utils/interleave.js","../../src/utils/isPlainObject.js","../../src/utils/empties.js","../../src/utils/isFunction.js","../../src/utils/getComponentName.js","../../src/utils/isStyledComponent.js","../../src/constants.js","../../src/utils/error.js","../../src/sheet/GroupedTag.js","../../src/sheet/GroupIDAllocator.js","../../src/sheet/Rehydration.js","../../src/utils/nonce.js","../../src/sheet/dom.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/generateAlphabeticName.js","../../src/utils/hash.js","../../src/utils/isStaticRules.js","../../src/models/ComponentStyle.js","../../src/utils/stylis.js","../../src/utils/stylisPluginInsertRule.js","../../src/models/StyleSheetManager.js","../../src/models/Keyframes.js","../../src/utils/hyphenateStyleName.js","../../src/utils/flatten.js","../../src/utils/isStatelessFunction.js","../../src/utils/addUnitIfNeeded.js","../../src/constructors/css.js","../../src/utils/checkDynamicCreation.js","../../src/utils/determineTheme.js","../../src/utils/escape.js","../../src/utils/generateComponentId.js","../../src/utils/isTag.js","../../src/utils/mixinDeep.js","../../src/models/ThemeProvider.js","../../src/models/StyledComponent.js","../../src/utils/generateDisplayName.js","../../src/utils/joinStrings.js","../../src/utils/domElements.js","../../src/constructors/styled.js","../../src/constructors/constructWithOptions.js","../../src/models/GlobalStyle.js","../../src/models/ServerStyleSheet.js","../../src/base.js","../node_modules/moment/moment.js","../../../src/core-plugin-definitions.ts","../../../../src/web/index.ts","../../../src/util.ts","../../../../src/web/accessibility.ts","../../../../src/web/app.ts","../../../../src/web/browser.ts","../../../../src/web/camera.ts","../../../../src/web/clipboard.ts","../../../../src/web/filesystem.ts","../../../../src/web/geolocation.ts","../../../../src/web/device.ts","../../../../src/web/local-notifications.ts","../../../../src/web/share.ts","../../../../src/web/modals.ts","../../../../src/web/motion.ts","../../../../src/web/network.ts","../../../../src/web/permissions.ts","../../../../src/web/splash-screen.ts","../../../../src/web/storage.ts","../../../../src/web/toast.ts","../../../src/web-plugins.ts","../../../src/index.ts","../../../src/syncpromise.ts","../node_modules/@ionic/core/dist/esm-es5/hardware-back-button-4a6b37fb.js","../node_modules/@ionic/core/dist/esm-es5/gesture-controller-31cb6bb9.js","../node_modules/core-util-is/lib/util.js","../node_modules/node-libs-browser/node_modules/util/util.js","../node_modules/create-hash/browser.js","../node_modules/buffer-xor/index.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/react-date-picker/dist/shared/utils.js","../node_modules/react-is/index.js","../node_modules/get-user-locale/dist/esm/index.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../src/internal/symbol/rxSubscriber.ts","../../../src/version.ts","../../src/fixed.js","../node_modules/stream-browserify/index.js","../node_modules/process-nextick-args/index.js","../node_modules/browserify-aes/aes.js","../node_modules/evp_bytestokey/index.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/parse-asn1/index.js","../node_modules/jsonwebtoken/lib/JsonWebTokenError.js","../node_modules/react-redux-toastr/lib/config.js","../node_modules/crypto-browserify/index.js","../node_modules/reselect/es/defaultMemoize.js","../node_modules/reselect/es/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../../src/internal/util/isArray.ts","../node_modules/qrcode/lib/browser.js","../../../../src/utils/getRootSpan.ts","../../../../src/tracing/dynamicSamplingContext.ts","../../../../src/utils/prepareEvent.ts","../../../src/stacktrace.ts","../node_modules/loadjs/dist/loadjs.umd.js","../../../src/dsn.ts","../../../../src/internal/util/identity.ts","../../../../src/internal/util/pipe.ts","../../../src/internal/Observable.ts","../../../../src/internal/util/toSubscriber.ts","../../../../src/internal/util/canReportError.ts","../node_modules/axios/lib/defaults.js","../node_modules/jws/index.js","../node_modules/readable-stream/readable-browser.js","../node_modules/readable-stream/node_modules/safe-buffer/index.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/util-deprecate/browser.js","../node_modules/md5.js/index.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/ripemd160/index.js","../node_modules/sha.js/index.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/modes/index.js","../node_modules/brorand/index.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/browserify-rsa/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/hash.js/lib/hash.js","../node_modules/safer-buffer/safer.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","../node_modules/@ionic/core/dist/esm-es5/ios.transition-7812dd37.js","../node_modules/@ionic/core/dist/esm-es5/md.transition-51c13987.js","../node_modules/react-redux-toastr/lib/constants.js","../node_modules/react-date-picker/dist/DateInput/Input.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/redux-thunk/es/index.js","../../index.ts","../node_modules/path-to-regexp/index.js","../node_modules/lodash.memoize/index.js","../node_modules/react-drag-drop-files/dist/react-drag-drop-files.esm.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@ionic/core/dist/esm-es5/index-34cb2743.js","../node_modules/@ionic/core/dist/esm-es5/cubic-bezier-eea9a7a9.js","../node_modules/@ionic/core/dist/esm-es5/index-9e3fe806.js","../node_modules/@ionic/core/dist/esm-es5/index-1e16c550.js","../node_modules/object-assign/index.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/jsonwebtoken/decode.js","../node_modules/isarray/index.js","../node_modules/jws/lib/data-stream.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/jwa/index.js","../node_modules/hash-base/index.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha512.js","../node_modules/create-hmac/browser.js","../node_modules/create-hash/md5.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/to-buffer.js","../node_modules/des.js/lib/des/utils.js","../node_modules/des.js/lib/des/des.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/node_modules/bn.js/lib/bn.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/xor.js","../node_modules/public-encrypt/withPublic.js","../node_modules/jws/lib/tostring.js","../node_modules/jsonwebtoken/lib/NotBeforeError.js","../node_modules/jsonwebtoken/lib/TokenExpiredError.js","../node_modules/jsonwebtoken/lib/timespan.js","../node_modules/jsonwebtoken/lib/psSupported.js","../node_modules/react-redux-toastr/lib/actions.js","../node_modules/react-redux-toastr/lib/reducer.js","../node_modules/react-redux-toastr/lib/toastrEmitter.js","../node_modules/ionicons/dist/esm-es5/index-f392fe63.js","../node_modules/enquire.js/src/Util.js","../node_modules/react-date-picker/dist/shared/dateFormatter.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../src/ReactRouter/IonRouteInner.tsx","../../src/ReactRouter/ReactRouterViewStack.tsx","../../src/ReactRouter/clonePageElement.ts","../../src/ReactRouter/StackManager.tsx","../../src/ReactRouter/IonRouter.tsx","../../src/ReactRouter/IonReactRouter.tsx","../../src/ReactRouter/IonReactMemoryRouter.tsx","../../src/ReactRouter/IonReactHashRouter.tsx","../../../../../src/@ionic-native/plugins/app-update/index.ts","../../../../src/@ionic-native/core/bootstrap.ts","../../../src/web-runtime.ts","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../../../src/browser.ts","../../../src/memo.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","../../../src/env.ts","../../../../src/errors.ts","../../../src/supports.ts","../../../src/error.ts","../../../src/envelope.ts","../../../src/api.ts","../../../../../../src/integrations/node/express.ts","../../../../../../src/integrations/node/postgres.ts","../../../../../../src/integrations/node/mysql.ts","../../../../../../src/integrations/node/mongo.ts","../../../../../src/browser/backgroundtab.ts","webpack:///../../../../../../src/browser/web-vitals/lib/bindReporter.ts?113a","webpack:///../../../../../../src/browser/web-vitals/lib/initMetric.ts?6672","webpack:///../../../../../../src/browser/web-vitals/lib/generateUniqueID.ts?91c1","webpack:///../../../../../../src/browser/web-vitals/lib/observe.ts?7d1d","webpack:///../../../../../../src/browser/web-vitals/lib/onHidden.ts?d197","webpack:///../../../../../../src/browser/web-vitals/lib/getVisibilityWatcher.ts?25cb","../../../../../../src/browser/web-vitals/getLCP.ts","../../../../../src/browser/metrics.ts","../../../../../../src/browser/web-vitals/getCLS.ts","../../../../../../src/browser/web-vitals/getFID.ts","../../../../../src/browser/request.ts","../../../../../src/browser/router.ts","../../../../../src/browser/browsertracing.ts","../../../../src/index.ts","../node_modules/@ionic/core/dist/esm-es5/app-globals-fd807b9a.js","../node_modules/@ionic/core/dist/esm-es5/loader.js","../node_modules/@ionic/core/loader/index.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha.js","../node_modules/react-async-script/lib/esm/async-script-loader.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","../node_modules/react-google-recaptcha/lib/esm/index.js","../../../src/instrument.ts","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/jws/lib/sign-stream.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/timers-browserify/main.js","../node_modules/setimmediate/setImmediate.js","../node_modules/string_decoder/node_modules/safe-buffer/index.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/writable-browser.js","../node_modules/readable-stream/duplex-browser.js","../node_modules/readable-stream/transform.js","../node_modules/readable-stream/passthrough.js","../node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","../node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","../node_modules/buffer-equal-constant-time/index.js","../node_modules/hash-base/node_modules/readable-stream/readable-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha384.js","../node_modules/create-hmac/legacy.js","../node_modules/browserify-sign/algos.js","../node_modules/pbkdf2/lib/async.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/ede.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-des/modes.js","../node_modules/diffie-hellman/browser.js","../node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/parse-asn1/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/create-ecdh/browser.js","../node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/randomfill/browser.js","../node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../node_modules/jws/lib/verify-stream.js","../node_modules/jsonwebtoken/verify.js","../node_modules/ms/index.js","../node_modules/semver/semver.js","../node_modules/jsonwebtoken/sign.js","../node_modules/lodash.includes/index.js","../node_modules/lodash.isboolean/index.js","../node_modules/lodash.isinteger/index.js","../node_modules/lodash.isnumber/index.js","../node_modules/lodash.isplainobject/index.js","../node_modules/lodash.isstring/index.js","../node_modules/lodash.once/index.js","../node_modules/react-redux-toastr/lib/ReduxToastr.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-redux-toastr/lib/ToastrBox.js","../node_modules/react-redux-toastr/lib/ProgressBar.js","../node_modules/react-redux-toastr/lib/Icon.js","../node_modules/react-redux-toastr/lib/icons.js","../node_modules/react-redux-toastr/lib/ToastrConfirm.js","../node_modules/react-redux-toastr/lib/Button.js","../node_modules/eventemitter3/index.js","../node_modules/ionicons/dist/esm-es5/utils-b4648582.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../../../../../src/@ionic-native/plugins/app-version/index.ts","../node_modules/react-ga4/dist/ga4.js","../node_modules/react-ga4/dist/gtag.js","../node_modules/react-ga4/dist/format.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/lodash.debounce/index.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/arrows.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/json2mq/index.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/react-slick/lib/default-props.js","../node_modules/enquire.js/src/index.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/assert/assert.js","../node_modules/react-date-picker/dist/DatePicker.js","../node_modules/make-event-props/dist/esm/index.js","../node_modules/react-date-picker/dist/DateInput.js","../node_modules/react-date-picker/dist/Divider.js","../node_modules/react-date-picker/dist/DateInput/DayInput.js","../node_modules/merge-refs/dist/esm/index.js","../node_modules/update-input-width/dist/esm/index.js","../node_modules/react-date-picker/dist/DateInput/MonthInput.js","../node_modules/react-date-picker/dist/DateInput/MonthSelect.js","../node_modules/react-date-picker/dist/DateInput/YearInput.js","../node_modules/react-date-picker/dist/DateInput/NativeInput.js","../node_modules/react-date-picker/dist/shared/dates.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/encode-utf8/index.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/react-calendar/dist/esm/shared/const.js","../node_modules/react-calendar/dist/esm/shared/dateFormatter.js","../node_modules/react-calendar/dist/esm/shared/dates.js","../node_modules/react-calendar/dist/esm/shared/propTypes.js","../node_modules/react-calendar/dist/esm/Calendar/Navigation.js","../node_modules/react-calendar/dist/esm/Flex.js","../node_modules/react-calendar/dist/esm/shared/utils.js","../node_modules/react-calendar/dist/esm/TileGroup.js","../node_modules/react-calendar/dist/esm/Tile.js","../node_modules/react-calendar/dist/esm/CenturyView/Decade.js","../node_modules/react-calendar/dist/esm/CenturyView/Decades.js","../node_modules/react-calendar/dist/esm/CenturyView.js","../node_modules/react-calendar/dist/esm/DecadeView/Year.js","../node_modules/react-calendar/dist/esm/DecadeView/Years.js","../node_modules/react-calendar/dist/esm/DecadeView.js","../node_modules/react-calendar/dist/esm/YearView/Month.js","../node_modules/react-calendar/dist/esm/YearView/Months.js","../node_modules/react-calendar/dist/esm/YearView.js","../node_modules/react-calendar/dist/esm/MonthView/Day.js","../node_modules/react-calendar/dist/esm/MonthView/Days.js","../node_modules/react-calendar/dist/esm/MonthView/Weekdays.js","../node_modules/react-calendar/dist/esm/MonthView/WeekNumber.js","../node_modules/react-calendar/dist/esm/MonthView/WeekNumbers.js","../node_modules/react-calendar/dist/esm/MonthView.js","../node_modules/react-calendar/dist/esm/Calendar.js","../node_modules/react-calendar/dist/esm/index.js","../node_modules/detect-element-overflow/dist/esm/index.js","../node_modules/react-fit/dist/esm/Fit.js","../node_modules/react-fit/dist/esm/index.js","../../../../src/internal/operators/map.ts","../../../../src/internal/observable/fromEvent.ts","../../../../src/instrument/dom.ts","../../../../src/instrument/xhr.ts","../../../../src/instrument/fetch.ts","../../../src/ratelimit.ts","../../../../src/integrations/inboundfilters.ts","../../../../src/integrations/functiontostring.ts","../../../src/sdk.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../../../../src/utils/sdkMetadata.ts","../../../../src/debug-build.ts","../../../../src/eventbuilder.ts","../../../../src/helpers.ts","../../../../src/client.ts","../../../../src/userfeedback.ts","../../../src/clientreport.ts","../../../../src/instrument/console.ts","../../../src/severity.ts","../../../src/url.ts","../../../../../src/integrations/breadcrumbs.ts","../../../../../src/integrations/dedupe.ts","../../../../src/instrument/globalError.ts","../../../../src/instrument/globalUnhandledRejection.ts","../../../../../src/integrations/globalhandlers.ts","../../../../../src/integrations/httpcontext.ts","../../../src/aggregate-errors.ts","../../../../../src/integrations/linkederrors.ts","../../../../../src/integrations/trycatch.ts","../../../../src/stack-parsers.ts","../../../src/promisebuffer.ts","../../../../src/transports/base.ts","../../../../../src/transports/utils.ts","../../../../../src/transports/fetch.ts","../../../../../src/transports/xhr.ts","../../../../src/sdk.ts","../../../../src/buildPolyfills/_optionalChain.ts","../../../../src/utils/isSentryRequestUrl.ts","../../../src/isBrowser.ts","../../../../src/browser/instrument.ts","../../../../src/common/debug-build.ts","../../../../../../src/browser/web-vitals/lib/bindReporter.ts","../../../../src/browser/types.ts","../../../../../../src/browser/web-vitals/lib/getNavigationEntry.ts","../../../../../../src/browser/web-vitals/lib/getActivationStart.ts","../../../../../../src/browser/web-vitals/lib/initMetric.ts","../../../../../../src/browser/web-vitals/lib/generateUniqueID.ts","../../../../../../src/browser/web-vitals/lib/observe.ts","../../../../../../src/browser/web-vitals/lib/onHidden.ts","../../../../../../src/browser/web-vitals/lib/getVisibilityWatcher.ts","../../../../../src/browser/web-vitals/getLCP.ts","../node_modules/@sentry/replay/esm/index.js","../../../../src/buildPolyfills/_nullishCoalesce.ts","../../../src/semanticAttributes.ts","../../../../src/metrics/envelope.ts","../../../../src/metrics/utils.ts","../../../src/baseclient.ts","../../../../src/vendor/supportsHistory.ts","../../../../src/instrument/history.ts"],"names":["module","exports","require","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","getOwnPropertyDescriptors","defineProperties","defineProperty","_slicedToArray","arr","arrayWithHoles","Symbol","iterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","value","err","unsupportedIterableToArray","nonIterableRest","IonLifeCycleContext","createContext","onIonViewWillEnter","ionViewWillEnter","onIonViewDidEnter","ionViewDidEnter","onIonViewWillLeave","ionViewWillLeave","onIonViewDidLeave","ionViewDidLeave","DefaultIonLifeCycleContext","callback","id","index","this","ionViewWillEnterCallbacks","findIndex","x","cb","ionViewDidEnterCallbacks","ionViewWillLeaveCallbacks","ionViewDidLeaveCallbacks","componentCanBeDestroyed","componentCanBeDestroyedCallback","withIonLifeCycle","WrappedComponent","props","componentRef","createRef","element","current","context","Consumer","ref","Component","useIonViewWillEnter","deps","Math","floor","random","useIonViewDidEnter","useIonViewWillLeave","useIonViewDidLeave","NavContext","getIonRedirect","getIonRoute","getPageManager","getStackManager","goBack","route","window","location","pathname","history","back","navigate","path","hasIonicRouter","routeInfo","setCurrentTab","changeTab","_tab","resetTab","dashToPascalCase","str","toLowerCase","split","map","segment","charAt","toUpperCase","slice","join","camelToDashCase","replace","m","attachProps","node","newProps","oldProps","Element","className","getClassName","classList","name","indexOf","eventName","substring","eventNameLc","isCoveredByReact","syncEvent","setAttribute","newClassProp","class","oldClassProp","currentClasses","arrayToMap","incomingPropClasses","oldPropClasses","finalClassNames","currentClass","has","delete","s","eventNameSuffix","document","isSupported","createElement","newEventHandler","eventStore","__events","oldEventHandler","removeEventListener","addEventListener","e","call","Map","set","createForwardRef","ReactComponent","displayName","forwardRef","forwardedRef","setRef","mergeRefs","refs","getConfig","Ionic","config","createReactComponent","tagName","routerLinkComponent","handleClick","routerLink","routerDirection","routerOptions","routerAnimation","preventDefault","stableMergedRefs","componentDidUpdate","prevProps","children","style","cProps","propsToPass","reduce","acc","includes","href","onClick","oldClick","defaultPrevented","IonApp","IonButton","IonCard","IonCardContent","IonCardHeader","IonCheckbox","IonContent","IonFab","IonFabButton","IonHeader","IonImg","IonInput","IonItem","IonItemDivider","IonItemGroup","IonLabel","IonList","IonListHeader","IonMenu","IonRadio","IonRadioGroup","IonSlide","IonSlides","IonSpinner","IonToggle","IonToolbar","createControllerComponent","controller","didDismissEventName","didPresentEventName","willDismissEventName","willPresentEventName","Overlay","handleDismiss","bind","isOpen","present","isUnmounted","overlay","dismiss","event","onDidDismiss","create","onDidPresent","onWillDismiss","onWillPresent","createOverlayComponent","el","nextProps","isDismissing","forceUpdate","elementProps","component","componentProps","createPortal","IonPopover","StackContext","registerIonPage","isInOutlet","PageManager","ionPageElementRef","add","ionViewWillEnterHandler","ionViewDidEnterHandler","ionViewWillLeaveHandler","ionViewDidLeaveHandler","ionLifeCycleContext","PureComponent","IonPageInternal","IonPage","IonTabsContext","activeTab","selectTab","HTMLElementSSR","HTMLElement","IonTabButtonInner","IonTabBarInner","IonRouterOutletInner","IonIconInner","OutletPageManager","ionRouterOutlet","setTimeout","StackManager","val","IonRouterOutletContainer","ionPage","IonRouterOutlet","IonTabButton","handleIonTabButtonClick","CustomEvent","detail","tab","routeOptions","rest","onIonTabButtonClick","IonTabBarUnwrapped","setActiveTabOnContext","tabs","Children","child","type","isTabButton","originalHref","currentHref","originalRouteOptions","currentRouteOptions","state","onTabButtonClick","renderTabButton","find","startsWith","setState","tabUrl","selected","tappedTab","onIonTabsWillChange","onIonTabsDidChange","cloneElement","selectedTab","prevActiveTab","prevHref","prevRouteOptions","search","routeAction","onSetCurrentTab","IonTabBarContainer","memo","IonTabBar","IonTabsElement","customElements","get","define","hostStyles","display","position","top","left","right","bottom","flexDirection","width","height","contain","tabsInner","flex","deprecationWarning","message","process","IonIconContainer","iconToUse","platform","icon","ios","md","isPlatformCore","IonIcon","IonRoute","IonRouteInner","console","error","IonRouterContext","Error","canGoBack","nativeBack","checkConfig","animation","currentProps","reservedProps","hasOwnProperty","fromValues","from","values","Array","isArray","property","toValues","to","fromToValues","fromTo","fromValue","toValue","onFinishValues","onFinish","opts","checkProgress","progressStart","progressStep","progressEnd","forceLinearEasing","step","playTo","dur","checkPlayback","play","pause","stop","destroy","close","RouteManagerContext","addViewItem","clearOutlet","createViewItem","findViewItemByPathname","findLeavingViewItemByRouteInfo","findViewItemByRouteInfo","getChildrenToRender","unMountViewItem","ViewLifeCycleManager","onComponentCanBeDestroyed","mount","_isMounted","show","removeView","Provider","LocationHistory","_add","_pop","_replace","routeDirection","_clear","routeInfos","_getRouteInfosByKey","ri","locationHistory","tabHistory","locationIndex","splice","tabArray","tabIndex","_areRoutesEqual","pop","route1","route2","k","pushedByRoute","NavManager","ionRouterContextValue","animationBuilder","onNativeBack","onChangeTab","onResetTab","handleHardwareBackButton","register","processNextHandler","nativeGoBack","onNavigateBack","direction","action","options","onNavigate","ionRedirect","ionRoute","stackManager","ViewStacks","clear","getViewItemsForOutlet","remove","viewItem","outletId","viewStacks","viewStack","viewItemToRemove","getStackIds","viewItems","ids","main","generateId","toString","ReactReduxContext","React","batch","createListenerCollection","first","last","notify","listener","listeners","subscribe","isSubscribed","prev","nullListeners","createSubscription","store","parentSub","unsubscribe","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","notifyNestedSubs","Boolean","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","_ref","contextValue","useMemo","previousState","getState","Context","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","_objectWithoutPropertiesLoose","wrappedComponentName","selectorFactoryOptions","_extends","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","isContextConsumer","useContext","didStoreComeFromProps","dispatch","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","useRef","renderedWrappedComponent","Connect","forwarded","hoistStatics","is","y","shallowEqual","objA","objB","keysA","keysB","prototype","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","_loop","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","arg","factories","result","strictEqual","a","b","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","stack","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","useSelector","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","Promise","then","_asyncToGenerator","fn","self","args","extendStatics","d","setPrototypeOf","__proto__","p","__extends","__","constructor","__assign","assign","t","n","__rest","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","fulfilled","rejected","__generator","body","f","g","_","label","sent","trys","ops","verb","v","op","TypeError","__values","o","__read","r","ar","__spread","concat","_typeof","obj","_toPropertyKey","input","hint","prim","toPrimitive","res","String","Number","_defineProperty","configurable","writable","formatProdErrorMessage","code","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","proto","getPrototypeOf","createStore","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","_key","previousStateForKey","nextStateForKey","bindActionCreator","compose","_len","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","middleware","_objectSpread","commonjsGlobal","globalThis","global","createEventEmitter","handlers","on","handler","off","h","newValue","changedBits","defaultValue","calculateChangedBits","contextProp","getUniqueId","emitter","getChildContext","componentWillReceiveProps","oldValue","render","childContextTypes","PropTypes","isRequired","observedBits","getValue","onUpdate","componentDidMount","componentWillUnmount","contextTypes","createNamedContext","historyContext","Router","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","url","params","isExact","RouterContext","HistoryContext","Lifecycle","onMount","onUnmount","cache","cacheCount","generatePath","pathToRegexp","compile","compilePath","pretty","Redirect","computedMatch","method","createLocation","prevLocation","locationsAreEqual","matchPath","exact","strict","sensitive","matched","cacheKey","end","pathCache","regexp","exec","Route","count","isEmptyChildren","addLeadingSlash","stripBasename","basename","base","substr","createURL","createPath","staticHandler","invariant","noop","Switch","isValidElement","withRouter","C","wrappedComponentRef","remainingProps","useHistory","useLocation","useParams","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","baseProto","MiddlewareArray","species","prepend","EnhancerArray","freezeDraftable","curryGetDefaultMiddleware","thunk","middlewareArray","withExtraArgument","extraArgument","getDefaultMiddleware","configureStore","rootReducer","curriedGetDefaultMiddleware","devTools","enhancers","finalMiddleware","middlewareEnhancer","finalCompose","trace","defaultEnhancers","storeEnhancers","composedEnhancer","createAction","prepareAction","prepared","meta","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","createSlice","_reducer","initialState","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","caseReducers","cr","caseReducer","draft","createReducer","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","actions","nanoid","size","commonProperties","miniSerializeError","simpleError","typePrefix","payloadCreator","requestId","requestStatus","pending","serializeError","rejectedWithValue","aborted","condition","AC","AbortController","signal","dispatchEvent","onabort","reason","throwIfAborted","abort","extra","abortReason","idGenerator","abortController","conditionResult","abortedPromise","getPendingMeta","race","rejectWithValue","RejectWithValue","fulfillWithValue","FulfillWithMeta","finalAction","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","queueMicrotask","promise","createQueueWithTimer","timeout","requestAnimationFrame","SetIntervalAsyncError","validateHandler","validateInterval","interval","validateTimer","timer","clearIntervalAsync","iterationId","stopped","timeouts","clearTimeout","promises","SetIntervalAsyncTimer","getNextIterationId","MAX_SAFE_INTEGER","setIntervalAsync","timeoutHandler","runHandler","startTime","Date","endTime","executionTime","nextIterationId","_toConsumableArray","arrayLikeToArray","iterableToArray","toastr","_ReduxToastr","_interopRequireDefault","ReduxToastrActions","nodeInterop","__esModule","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_toastrEmitter","WeakMap","cacheBabelInterop","cacheNodeInterop","_default","toastrEmitter","makeGetEdgeOfNeighbor","getPeriod","getEdgeOfPeriod","defaultOffset","date","offset","previousPeriod","makeGetEnd","getBeginOfNextPeriod","getTime","makeGetRange","getStart","getEnd","getYear","getFullYear","year","parseInt","isNaN","getMonth","getMonthHuman","getDate","getHours","datePieces","hoursString","hours","getMinutes","minutesString","minutes","getSeconds","secondsWithMillisecondsString","seconds","getMilliseconds","millisecondsString","milliseconds","getCenturyStart","centuryStartYear","centuryStartDate","setFullYear","setHours","getPreviousCenturyStart","getNextCenturyStart","getCenturyEnd","getPreviousCenturyEnd","getNextCenturyEnd","getCenturyRange","getDecadeStart","decadeStartYear","decadeStartDate","getPreviousDecadeStart","getNextDecadeStart","getDecadeEnd","getPreviousDecadeEnd","getNextDecadeEnd","getDecadeRange","getYearStart","yearStartDate","getPreviousYearStart","getNextYearStart","getYearEnd","getPreviousYearEnd","getNextYearEnd","getYearRange","makeGetEdgeOfNeighborMonth","month","getMonthStart","monthStartDate","getPreviousMonthStart","getNextMonthStart","getMonthEnd","getPreviousMonthEnd","getNextMonthEnd","getMonthRange","makeGetEdgeOfNeighborDay","day","getDayStart","dayStartDate","getPreviousDayStart","getNextDayStart","getDayEnd","getPreviousDayEnd","getNextDayEnd","getDayRange","getDaysInMonth","padStart","num","numStr","getHoursMinutes","getHoursMinutesSeconds","getISOLocalMonth","getISOLocalDate","getISOLocalDateTime","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","instance","__spreadArray","pack","l","SuppressedError","IS_DEBUG_BUILD","__SENTRY_DEBUG__","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","ctor","superCtor","super_","TempCtor","isGlobalObj","GLOBAL_OBJ","getGlobalObject","getGlobalSingleton","creator","gbl","__SENTRY__","_createForOfIteratorHelper","F","it","normalCompletion","didErr","_e2","buffer","Buffer","copyProps","src","dst","SafeBuffer","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","fill","encoding","buf","SlowBuffer","animationPrefix","convertCamelCaseToHypen","getAnimationPrefix","animationName","webkitAnimationName","setStyleProperty","setProperty","removeStyleProperty","removeProperty","keyframeIds","addClassToArray","createAnimation","E","S","A","w","u","c","T","K","I","D","L","N","R","O","W","j","AnimationEffect","H","animate","z","J","Q","B","oneTimeCallback","G","cancel","raf","parentNode","removeChild","ue","getFill","se","getDirection","ve","getEasing","le","getDuration","ce","getIterations","de","getDelay","we","Me","ke","animationFinish","xe","processKeyframes","generateKeyframeRules","getRootNode","head","getStyleContainer","querySelector","ownerDocument","textContent","appendChild","createKeyframeStylesheet","generateKeyframeName","Infinity","Ke","be","delay","duration","easing","iterations","onfinish","Ie","min","max","currentTime","effect","getComputedTiming","De","updateTiming","Le","Ne","update","We","He","qe","Be","sync","isFinite","passive","animationEnd","$e","Je","parentAnimation","elements","childAnimations","parent","keyframes","addAnimation","addElement","nodeType","getWebAnimations","getKeyframes","afterAddRead","afterAddWrite","afterClearStyles","afterStyles","afterRemoveClass","afterAddClass","beforeAddRead","beforeAddWrite","beforeClearStyles","beforeStyles","beforeRemoveClass","beforeAddClass","_assertThisInitialized","ReferenceError","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_inherits","subClass","superClass","_possibleConstructorReturn","assertThisInitialized","_createSuper","Derived","Super","isNativeReflectConstruct","NewTarget","Reflect","construct","DEBUG_BUILD","hasTracingEnabled","maybeOptions","client","getClient","getOptions","getActiveTransaction","maybeHub","scope","getScope","getTransaction","msToSec","time","secToMs","objectToString","isError","wat","isInstanceOf","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","run","marker","runClearTimeout","Item","array","nextTick","title","browser","env","argv","version","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","instrumented","addHandler","maybeInstrument","instrumentFn","triggerHandlers","data","typeHandlers","logger","CONSOLE_LEVELS","consoleSandbox","originalConsole","wrappedLevels","level","originalWrappedFunc","__sentry_original__","makeLogger","enabled","enable","disable","PREFIX","componentOnReady","inheritAttributes","hasAttribute","getAttribute","removeAttribute","ariaAttributes","inheritAriaAttributes","_ael","_rel","getElementRoot","shadowRoot","__zone_symbol__requestAnimationFrame","hasShadowDom","attachShadow","findItemLabel","closest","getAriaLabel","trim","getElementById","labelId","labelText","renderHiddenInput","disabled","clamp","assert","now","timeStamp","pointerCoord","changedTouches","clientX","clientY","pageX","pageY","isEndSide","debounceEvent","_original","debounce","Function","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","isEncoding","actual","write","fromString","isBuffer","checked","copy","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","_isBuffer","compare","list","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","die","msg","isDraft","DRAFT_STATE","isDraftable","Ctor","objectCtorString","DRAFTABLE","isMap","isSet","each","iter","getArchtype","entry","thing","type_","prop","propOrOldValue","hasMap","hasSet","Set","latest","copy_","base_","shallowCopy","descriptors","freeze","deep","isFrozen","dontMutateFrozenCollections","getPlugin","pluginKey","plugin","plugins","loadPlugin","implementation","getCurrentScope","currentScope","usePatchesInScope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer","immer_","canAutoFreeze_","unfinalizedDrafts_","revoke_","revoked_","processResult","baseDraft","isReplaced","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","NOTHING","rootScope","childValue","finalizeProperty","scope_","finalized_","draft_","resultEach","generatePatches_","parentState","targetObject","rootPath","targetIsSet","assigned_","autoFreeze_","peek","getDescriptorFromProto","markChanged","prepareCopy","createProxy","proxyMap_","proxySet_","isManual_","traps","objectTraps","arrayTraps","Proxy","revocable","revoke","createES5Proxy_","currentImpl","archType","hasChanges_","copyHelper","enableES5","proxyProperty","markChangesSweep","drafts","hasArrayChanges","hasObjectChanges","baseValue","baseIsDraft","markChangesRecursively","hasSymbol","hasProxies","for","getOwnPropertyNames","deleteProperty","owner","recipe","defaultBase","_this","produce","_this2","hasError","ip","produceWithPatches","patches","inversePatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","patch","applyPatchesImpl","applyPatches_","ReactGAImplementation","_ga","GA4","ERR_CORDOVA_NOT_AVAILABLE","ERR_PLUGIN_NOT_INSTALLED","getPromise","angular","doc","injector","$q","warn","tryNativePromise","wrapPromise","pluginObj","pluginResult","rej","destruct","callCordovaPlugin","catch","wrapOtherPromise","wrapObservable","complete","clearFunction","clearWithArgs","getPluginName","wrapEventObservable","checkAvailability","pluginName","pluginRef","pluginInstance","pluginPackage","getPluginRef","getPluginInstallName","cordova","pluginWarn","cordovaWarn","setIndex","callbackOrder","unshift","callbackStyle","successName","errorName","successIndex","errorIndex","setSuccessIndex","setErrorIndex","availabilityCheck","callInstance","_objectInstance","instanceAvailability","paths","wrap","eventObservable","otherPromise","wrapInstance","arrowBackSharp","caretBackSharp","chevronBack","chevronForward","closeCircle","closeSharp","menuOutline","menuSharp","reorderThreeOutline","reorderTwoSharp","searchOutline","searchSharp","isBuiltin","ty","isString","isPrimitive","isEvent","Event","isElement","isRegExp","isThenable","scopeId","contentRef","hostTagName","useNativeShadowDom","checkSlotFallbackVisibility","checkSlotRelocate","isSvgMode","queuePending","win","CSS","plt","$flags$","$resourcesUrl$","jmp","ael","rel","supportsShadow","promiseResolve","supportsConstructibleStylesheets","CSSStyleSheet","addHostEventListeners","getHostListenerTarget","hostListenerProxy","hostListenerOpts","$rmListeners$","$lazyInstance$","$queuedListeners$","consoleError","XLINK_NS","createTime","rootAppliedStyles","registerStyle","styles","addStyle","getScopeId","host","innerHTML","$cssShim$","createHostStyle","insertBefore","adoptedStyleSheets","$tagName$","convertScopedToShadow","setMode","modeResolutionChain","getMode","getHostRef","$modeName$","EMPTY_OBJ","isComplexType","$","$text$","newVNode","vdomFnUtils","$attrs$","$children$","$key$","$name$","$tag$","$elm$","Host","convertToPublic","convertToPrivate","vattrs","vchildren","vkey","vname","vtag","vtext","setAccessor","isMemberInElement","parseClassList","removeAttributeNS","setAttributeNS","parseClassListRegex","updateElement","createElm","createTextNode","createElementNS","isDef","putBackInOriginalLocation","childNodes","parentReferenceNode","referenceNode","addVnodes","removeVnodes","callNodeRefs","updateChildren","isSameVnode","nextSibling","relocateNodes","isNodeLocatedInSlot","renderVdom","$hostElement$","$cmpMeta$","$vnode$","isHost","$attrsToReflect$","relocateSlotContent","$nodeToRelocate$","$slotRefNode$","some","previousSibling","nodeName","hidden","updateFallbackSlotVisibility","getElement","createEvent","emitEvent","bubbles","composed","cancelable","attachToAncestor","$onRenderResolve$","scheduleUpdate","$ancestorComponent$","writeTask","dispatchHooks","safeCall","updateComponent","attachStyles","callRender","updateHost","postUpdateComponent","all","addHydratedFlag","$onReadyResolve$","appDidLoad","$onInstanceResolve$","isConnected","documentElement","namespace","clientHydrate","$hostId$","$nodeId$","$depth$","$index$","nodeValue","initializeDocumentHydrate","setValue","$instanceValues$","parseFloat","parsePropertyValue","$members$","$watchers$","proxyComponent","watchers","entries","$onInstancePromise$","attributeChangedCallback","observedAttributes","initializeComponent","loadModule","isProxied","fireConnectedCallback","computeMode","scopeCss","connectedCallback","$listeners$","$orgLocNodes$","initializeClientHydrate","setContentReference","createComment","firstChild","bootstrapLazy","exclude","querySelectorAll","URL","resourcesUrl","baseURI","registerHost","mode","delegatesFocus","disconnectedCallback","removeHost","$onReadyPromise$","$lazyBundleId$","getAssetPath","origin","hostRefs","registerInstance","cmpModules","queueDomReads","queueDomWrites","queueTask","flush","consume","performance","readTask","Build","isDev","isBrowser","isServer","isTesting","defaultMode","getPlatforms","setupPlatforms","isPlatform","platforms","detectPlatforms","PLATFORMS_MAP","isIpad","testUserAgent","isMobile","isAndroid","matchMedia","isHybrid","isCordova","isCapacitorNative","isNative","test","navigator","userAgent","matches","ipad","iphone","android","phablet","innerWidth","innerHeight","tablet","isAndroidTablet","capacitor","electron","pwa","standalone","mobile","mobileweb","desktop","hybrid","reset","getBoolean","getNumber","NaN","IONIC_PREFIX","IONIC_SESSION_KEY","getIonMode","initialize","sessionStorage","getItem","JSON","parse","configFromSession","persistConfig","decodeURIComponent","configFromURL","setItem","stringify","saveConfig","parentElement","_DatePicker","replacementFactory","original","wrapped","addNonEnumerableProperty","markFunctionWrapped","_Oo","dropUndefinedKeys","rv","hasOwn","classNames","classes","argType","inner","default","isUndefined","isObject","isFunction","isArrayBuffer","isFormData","FormData","isArrayBufferView","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","merge","assignValue","extend","stripBOM","content","isAbsolute","spliceOne","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueOf","valueEqual","every","item","aValue","bValue","stripLeadingSlash","prefix","hasBasename","stripTrailingSlash","hash","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goForward","block","unblock","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","equal","utils","BN","minAssert","minUtils","toArray","zero2","encode","getNAF","bits","naf","bitLength","ws","clone","mod","andln","isOdd","isubn","iushrn","getJSF","k1","k2","jsf","m8","d1","d2","cmpn","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","LIFECYCLE_WILL_LEAVE","LIFECYCLE_DID_LEAVE","LIFECYCLE_WILL_UNLOAD","transition","beforeTransition","runTransition","afterTransition","enteringEl","leavingEl","setZIndex","showGoBack","setPageHidden","getAnimationBuilder","noAnimation","animated","iosTransitionAnimation","mdTransitionAnimation","waitForReady","baseEl","fireWillEvents","playTransition","progressCallback","fireDidEvents","hasCompleted","deepWait","deepReady","shallowReady","notifyViewReady","viewIsReady","lifecycle","zIndex","getIonPageElement","contains","mergeClassNames","captureException","exception","captureMessage","captureContext","captureEvent","addBreadcrumb","breadcrumb","setContext","withScope","hub","getStackTop","startSession","isolationScope","release","environment","session","user","getUser","currentSession","getSession","status","endSession","setSession","_sendSessionUpdate","captureSession","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integrations","integration","isDefaultInstance","finalIntegrations","integrationsByName","currentInstance","existingInstance","filterDuplicates","debugIndex","debugInstance","setupIntegrations","integrationIndex","setupIntegration","afterSetupIntegrations","afterAllSetup","log","isNodeEnv","dynamicRequire","request","moduleName","inherits","isSurrogatePair","htonl","word","zero8","enc","toHex32","endian","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","carry","sum64_4_lo","sum64_5_hi","eh","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","reactIs","REACT_STATICS","contextType","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","Parent","Class","_cache","Wrapper","number","isBN","negative","words","red","_init","wordSize","parseHex4Bits","parseHexByte","parseBase","cmp","_initNumber","_initArray","_parseHex","_parseBase","ceil","strip","limbLen","limbPow","total","imuln","_iaddn","dest","_expand","_normSign","zeros","groupSizes","groupBases","smallMulTo","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","toBuffer","toArrayLike","ArrayType","reqLength","q","clz32","_countBits","_zeroBits","zeroBits","toTwos","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","round","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","egcd","isEven","yp","xp","im","jm","gcd","_invmp","x1","x2","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","output","outLen","mod3","one","nOne","lpow","inv","wnd","currentLen","mont","_getPrototypeOf","spanToTraceContext","span","spanContext","span_id","spanId","trace_id","traceId","spanToJSON","parent_span_id","tags","getSpanJSON","spanIsSpanClass","spanIsSampled","traceFlags","installed","getSupportedPlatforms","repo","install","_setPrototypeOf","_inheritsLoose","lastId","activeAnimations","createController","createOverlay","dismissOverlay","getTop","getOverlay","alertController","actionSheetController","loadingController","modalController","pickerController","popoverController","toastController","prepareOverlay","connectListeners","overlayIndex","whenDefined","getAppRoot","focusableQueryString","innerFocusableQueryString","trapKeyboardFocus","lastFocus","focus","focusFirstDescendant","activeElement","focusLastDescendant","backdropDismiss","OVERLAY_BACK_BUTTON_PRIORITY","BACKDROP","getOverlays","setRootAriaHidden","presented","willPresent","enterAnimation","overlayAnimation","didPresent","focusPreviousElementOnDismiss","keyboardClose","willDismiss","role","leaveAnimation","didDismiss","blur","eventMethod","onceEvent","isCancel","defaultGate","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","fin","webpackPolyfill","deprecate","isValueType","isRef","isMinDate","isMaxDate","_propTypes","_arrayLikeToArray","arr2","allValueTypes","_arrayWithoutHoles","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","oneOf","propName","componentName","minDate","maxDate","oneOfType","func","shape","any","maxlen","spans","_maxlen","spanRecorder","startTimestamp","parentSpanId","sampled","description","endTimestamp","startChild","childSpan","Span","transaction","setTag","setData","setStatus","setHttpStatus","httpStatus","spanStatus","spanStatusfromHttpCode","isSuccess","finish","toTraceparent","sampledString","toContext","updateWithContext","getTraceContext","start_timestamp","timestamp","DEFAULT_ENVIRONMENT","getGlobalEventProcessors","addGlobalEventProcessor","notifyEventProcessors","processors","processor","SafeSubscriber","_parentSubscriber","FINISH_REASON_TAG","IDLE_TRANSACTION_FINISH_REASONS","normalizeArguments","text","metadata","arg_1","arg_2","arg_3","arg_4","defaultCountry","VALID_DIGITS","VALID_PUNCTUATION","ParseError","pa","pb","na","nb","CALLING_CODE_REG_EXP","Metadata","is_object","countries","type_of","validateMetadata","setVersion","countryCode","v1","v2","v3","nonGeographic","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","EXTN_PATTERN","DIGITS","parseDigit","character","parseDigits","digit","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","sort","mergeArrays","actual_length","minimum_length","isPossibleNumber","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","phone","isNumberTypeEqualTo","pattern","getPossibleCountriesForNumber","possibleCountries","_metadata","couldNationalNumberBelongToCountry","applyInternationalSeparatorStyle","formattedNumber","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","carrierCode","internationalFormat","SINGLE_IDD_PREFIX_REG_EXP","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","addExtension","formatNationalNumber","formatRFC3966","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","chooseFormatForNumber","PhoneNumber","countryOrCountryCallingCode","metadataJson","getCountryAndCountryCallingCode","getMetadata","isNonGeographicCallingCode","phoneNumber","CAPTURING_DIGIT_PATTERN","stripIddPrefix","IDDPrefixPattern","matchedGroups","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumber","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCode","isNumberWithIddPrefix","numberWithoutIDD","shorterNumber","countryCallingCodeSource","getCountryByNationalNumber","nationalPhoneNumber","matchingCountries","getCountryByCallingCode","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","RFC3966_DOMAINNAME_PATTERN_","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","phoneNumberString","extractFormattedPhoneNumber","phoneContext","numberToExtractFrom","indexOfPhoneContext","phoneContextStart","phoneContextEnd","extractPhoneContext","isPhoneContextValid","indexOfNationalNumber","indexOfRfc3966Prefix","indexOfIsdn","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","extract","throwOnError","startsAt","isViablePhoneNumberStart","withExtensionStripped","numberWithoutExtension","extractExtension","parseInput","formattedPhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","__countryCallingCodeSource","valid","possible","parsePhoneNumberWithError","parsePhoneNumber_","isPossiblePhoneNumber","isPossible","getCountries","labels","objectOf","count_occurences","symbol","closeBraces","retained_template","template","placeholder","empty_placeholder","cut_before","opening_braces","closing_braces","dangling_braces","caret","formatter","should_close_braces","characters_in_template","value_character_index","filled_in_template","close_braces","template_formatter","possibly_last_input_character_index","isReadOnly","getSelection","selectionStart","selectionEnd","Keys","setCaretPosition","caret_position","ANDROID_USER_AGENT_REG_EXP","setSelectionRange","onKeyDown","_parse","on_change","operation","keyCode","getOperation","selection","eraseSelection","formatInputText","parse_character","focused_input_character_index","newValueAndCaret","edit","formatted","Input","InputComponent","inputComponent","onChange","internalRef","useCallback","_onChange","_onKeyDown","onInputKeyDown","isEmptyValue","elementType","onCut","onPaste","AsYouTypeState","onCountryChange","onCallingCodeChange","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberMatchesInput","complexPrefixBeforeNationalSignificantNumber","properties","setCountry","setCallingCode","nextDigits","DIGIT_PLACEHOLDER_MATCHER","repeat","times","cutAndStripNonPairedParens","cutBeforeIndex","cleared_string","stripNonPairedParens","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","formattedNationalNumber","isValidFormattedNationalNumber","PatternParser","instructions","parsePattern","branches","expandSingleElementArray","OPERATOR","operator","before","rightPart","startContext","getContext","endContext","oneOfSet","parseOneOfSet","ILLEGAL_CHARACTER_REGEXP","prevValue","nextValue","PatternMatcher","matchTree","allowOverflow","matchedChars","overflow","characters","tree","characterString","partialMatch","restCharacters","char","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","AsYouTypeFormatter","resetFormat","chosenFormat","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","narrowDownMatchingFormats","formattedCompleteNumber","setNationalNumberTemplate","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","leadingDigitsPatternIndex","formatSuits","formatMatches","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPattern","getFormatFormat","createTemplateForFormat","getTemplateForFormat","spacing","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","populateTemplateWithDigits","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","justLeadingPlus","extractedNumber","hasPlus","_extractFormattedDigitsAndPlus","formattedDigits","extractFormattedDigitsAndPlus","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","onExtractedNationalNumber","prevNationalSignificantNumber","nationalSignificantNumberIndex","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","newCallingCode","AsYouType","optionsOrDefaultCountry","getCountryAndCallingCode","parser","formattedOutput","determineTheCountryIfNeeded","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","getNonFormattedNationalNumberWithPrefix","ambiguousCountries","isValid","getTemplate","getNonFormattedTemplate","getInputValuePrefix","withCountryCallingCode","removeInputValuePrefix","createInput","defaultMetadata","InputSmart","bool","InputBasic","formatIncompletePhoneNumber","getRegionalIndicatorSymbol","letter","fromCodePoint","CountrySelect","onChange_","getSelectedOption","divider","DIVIDER_STYLE","arrayOf","fontSize","backgroundColor","color","CountrySelectWithIcon","Icon","iconComponent","getIconAspectRatio","arrowComponent","Arrow","DefaultArrowComponent","unicodeFlags","selectedOption","aria-hidden","aspectRatio","option","FlagComponent","countryName","flags","flagUrl","alt","InternationalIcon","InternationalIcon1x1","InternationalIcon3x2","xmlns","viewBox","stroke","strokeWidth","strokeMiterlimit","strokeLinecap","y1","y2","isCountrySupportedWithError","getSupportedCountries","createCountryIconComponent","flagComponent","internationalIcon","CountryIcon","_aspectRatio","DefaultInternationalIcon","Flag","getInternationalPhoneNumberPrefix","getPhoneDigitsForNewCountry","phoneDigits","prevCountry","newCountry","useNationalFormat","countryCallingCodePrefix","country_calling_code","stripCountryCallingCode","newCountryPrefix","e164","asYouType","getNumberValue","partial_national_significant_number","getNationalSignificantNumberDigits","trimNumber","nationalSignificantNumberPart","overflowDigitsCount","getMaxNumberLength","getCountryForPartialE164Number","partialE164Number","required","derived_country","getCountry","getCountryFromPossiblyIncompleteInternationalPhoneNumber","couldNumberBelongToCountry","convertInternationalPhoneDigitsToNational","formatNational","compareStrings","locales","localeCompare","intlPhoneNumberPrefix","getInitialPhoneDigits","generateNationalNumberDigits","valuesAreEqual","value1","value2","PhoneNumberInput_","inputRef","focusInputOnCountrySelection","newPhoneDigits","hasUserSelectedACountry","_phoneDigits","addInternationalOption","limitMaxLength","countryCallingCodeEditable","prevPhoneDigits","countryRequired","getAnyCountry","onPhoneDigitsChange","getFirstSupportedCountry","forceRerender","isFocused","_onFocus","onFocus","onBlur","_onBlur","countrySelectProps","displayInitialValueAsLocalNumber","initialValueFormat","preSelectedCountry","getPreSelectedCountry","newDefaultCountry","newReset","prevDefaultCountry","prevReset","_getInitialPhoneDigits","parameters","isNewDefaultCountrySupported","noValueHasBeenEnteredByTheUser","parsedCountry","hasUserSelectedACountryUpdate","supportedCountries","getPhoneInputWithCountryStateUpdateFromNewProps","selectedCountry","prevState","countryOptionsOrder","useMemoCountrySelectOptions","order","optionsOnTop","optionsOnBottom","appendTo","sortCountryOptions","countryNames","compareStringsLocales","_compareStrings","countrySelectOptions","ZZ","getCountrySelectOptions","countryOptions","getSupportedCountryOptions","countrySelectOptionsMemoDependencies","areEqualArrays","countrySelectOptionsMemo","readOnly","autoComplete","numberInputProps","smartCaret","CountrySelectComponent","countrySelectComponent","ContainerComponent","containerComponent","aria-label","onCountryFocus","onCountryBlur","setInputRef","PhoneNumberInput","withDefaultProps","labelsPropType","metadataPropType","createPhoneInput","PhoneInputDefault","defaultLabels","_parsePhoneNumber","_isPossiblePhoneNumber","normalize","depth","maxProperties","visit","ERROR","normalizeToSize","maxSize","normalized","jsonSize","memoize","unmemoize","stringified","stringifyValue","remainingDepth","valueWithToJSON","jsonValue","numAdded","visitable","visitKey","visitValue","_events","objName","getConstructorName","encodeURI","utf8Length","ReflectOwnKeys","ReflectApply","receiver","NumberIsNaN","EventEmitter","init","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","events","existing","warning","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","_listeners","evlistener","unwrapListeners","arrayClone","wrapListener","setMaxListeners","getMaxListeners","doError","er","originalListener","rawListeners","eventNames","pna","objectKeys","Duplex","util","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","_destroy","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","toSJISFunction","CODEWORDS_COUNT","getSymbolSize","getSymbolTotalCodewords","getBCHDigit","setToSJISFunction","isKanjiModeEnabled","toSJIS","kanji","VersionCheck","Regex","NUMERIC","ccBits","ALPHANUMERIC","BYTE","KANJI","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","traceHeaders","getSpan","sample","samplingContext","setMetadata","transactionSampling","tracesSampler","sampleRate","rate","parentSampled","tracesSampleRate","isValidSampleRate","_startTransaction","transactionContext","customSamplingContext","initSpanRecorder","_experiments","maxSpans","startIdleTransaction","idleTimeout","onScope","addExtensionMethods","carrier","extensions","startTransaction","_addTracingExtensions","packageToIntegrationMapping","mongodb","Mongo","mongoose","mysql","Mysql","pg","Postgres","mappedPackages","pkg","_autoloadDatabaseIntegrations","_extra","truncate","snipLine","line","colno","newLine","lineLength","isMatchingPattern","crypto","msCrypto","getRandomValues","generated","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","expected","determiner","this_len","endsWith","getBuffer","Hash","blockSize","finalSize","_block","_finalSize","_blockSize","accum","assigned","remainder","digest","rem","lowBits","highBits","_hash","_bind","strinOrAray","fnMap","handle","guid","which","mapToToastrMessage","_config","removeOnHover","showCloseButton","timeOut","onCSSTransitionEnd","transitions","oanimation","MSAnimation","webkitAnimation","whichAnimationEvent","timeoutId","initEvent","createNewEvent","toastrWarn","maxAnimationDelay","runOnce","stopPropagation","preventDuplication","currentData","newObjec","hasDuplication","preventDuplicates","updateConfig","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getPostClones","getPreClones","getTrackLeft","getTrackAnimateCSS","getTrackCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","swipeEnd","swipeMove","swipeStart","keyHandler","changeSlide","slideHandler","initializedState","extractObject","canGoNext","getSwipeDirection","getHeight","getWidth","lazySlidesOnRight","lazySlidesOnLeft","lazyEndIndex","lazyStartIndex","getRequiredLazySlides","getOnDemandLazySlides","safePreventDefault","_react","_reactName","spec","onDemandSlides","startIndex","endIndex","slideIndex","lazyLoadedList","requiredSlides","currentSlide","centerMode","slidesToShow","centerPadding","elem","offsetWidth","offsetHeight","touchObject","xDist","yDist","swipeAngle","verticalSwiping","startX","curX","startY","curY","atan2","infinite","slideCount","newObject","slideWidth","listNode","listRef","listWidth","trackNode","trackRef","trackWidth","vertical","centerPaddingAdj","slideHeight","listHeight","initialSlide","rtl","slidesToLoad","autoplaying","autoplay","waitForAnimate","animating","fade","lazyLoad","slidesToScroll","useCSS","finalSlide","animationLeft","finalLeft","animationSlide","targetSlide","trackStyle","swipeLeft","indexOffset","previousInt","slideOffset","previousTargetSlide","accessibility","swipe","draggable","dragging","touches","scrolling","swipeToSlide","edgeFriction","edgeDragged","onEdge","swiped","swiping","swipeEvent","curLeft","swipeLength","verticalSwipeLength","positionOffset","dotCount","swipeDirection","touchSwipeLength","touchThreshold","onSwipe","minSwipe","newSlide","activeSlide","currentLeft","breakpoint","counter","indexes","navigables","prevNavigable","centerOffset","swipedSlide","slickList","slides","slide","offsetTop","offsetLeft","currentIndex","dataset","keysArray","trackHeight","trackChildren","opacity","WebkitTransition","useTransform","WebkitTransform","msTransform","attachEvent","marginTop","marginLeft","speed","cssEase","unslick","targetLeft","variableWidth","slidesToOffset","targetSlideIndex","trackElem","originalModule","DEFAULT_IDLE_TIMEOUT","_pushActivity","_popActivity","transactionSpanId","_idleHub","_idleTimeout","_onScope","activities","_heartbeatCounter","_finished","_beforeFinishCallbacks","clearActiveTransaction","configureScope","setSpan","_initTimeout","toISOString","keepSpan","registerBeforeFinishCallback","IdleTransactionSpanRecorder","_pingHeartbeat","_beat","heartbeatString","_prevHeartbeatString","_measurements","_hub","_trimEnd","trimEnd","setName","setMeasurements","measurements","newMetadata","finishedSpans","contexts","sdkProcessingMetadata","transport","getTransport","recordLostEvent","decode","verify","sign","JsonWebTokenError","NotBeforeError","TokenExpiredError","converter","defaultAttributes","attributes","expires","toUTCString","encodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","cookies","jar","parts","withAttributes","withConverter","factory","applyScopeDataToEvent","fingerprint","breadcrumbs","transactionName","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","applyDataToEvent","rootSpan","dynamicSamplingContext","applySpanToEvent","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeData","eventProcessors","attachments","propagationContext","mergeAndOverwriteScopeData","mergeVal","twWidgetFactory","rejectWithError","loadjs","isDefined","ready","success","twttr","widgets","useShallowCompareMemoize","isShallowEqual","cloneShallow","useTwitterWidget","factoryFunctionName","primaryArg","onLoad","_useState","useState","setError","attribute","isCanceled","childEl","wf","resultMaybe","Timeline","_ref5","dataSource","renderError","_useTwitterWidget5","strings","interpolations","typeOf","EMPTY_OBJECT","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","REACT_APP_SC_ATTR","IS_BROWSER","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","throwStyledComponentsError","DefaultGroupedTag","tag","Uint32Array","indexOfGroup","group","insertRules","rules","oldBuffer","oldSize","newSize","throwStyledError","ruleIndex","insertRule","clearGroup","deleteRule","getGroup","css","getRule","groupIDRegister","reverseRegister","nextFreeGroup","getGroupForId","getIdForGroup","setGroupForId","SELECTOR","MARKER_RE","rehydrateNamesFromContent","sheet","names","registerName","rehydrateSheetFromTag","getTag","getNonce","__webpack_nonce__","makeStyleTag","prevStyle","__VERSION__","nonce","CSSOMTag","styleSheets","ownerNode","rule","_error","cssRules","cssText","TextTag","nodes","refNode","VirtualTag","_target","SHOULD_REHYDRATE","defaultOptions","useCSSOMInjection","StyleSheet","globalStyles","gs","server","registerId","reconstructWithOptions","withNames","allocateGSInstance","hasNameForId","groupNames","clearNames","clearRules","clearTag","AD_REPLACER_R","getAlphabeticChar","generateAlphabeticName","phash","isStaticRules","SEED","ComponentStyle","componentId","baseStyle","staticRulesId","isStatic","NODE_ENV","baseHash","generateAndInjectStyles","executionContext","styleSheet","stylis","cssStatic","flatten","generateName","cssStaticFormatted","dynamicHash","partRule","partChunk","partString","cssFormatted","COMMENT_REGEX","COMPLEX_SELECTOR_PREFIX","createStylisInstance","_componentId","_selector","_selectorRegexp","_consecutiveSelfRefRegExp","Stylis","parsingRules","parseRulesPlugin","toSheet","selectors","parents","column","ns","at","delimiter","selfReferenceReplacer","stringifyRules","flatCSS","cssStr","use","parsedRules","StyleSheetContext","StylisContext","masterSheet","masterStylis","useStyleSheet","useStylis","StyleSheetManager","stylisPlugins","setPlugins","contextStyleSheet","disableCSSOMInjection","disableVendorPrefixes","shallowequal","Keyframes","inject","stylisInstance","resolvedName","getName","uppercaseCheck","uppercasePattern","msPattern","prefixAndLowerCase","hyphenateStyleName","isFalsish","chunk","ruleSet","isReactComponent","objToCssArray","prevKey","isCss","hyphenate","unitless","addTag","interleave","originalConsoleError","providedTheme","theme","escapeRegex","dashesAtEnds","isTag","isValidKey","mixin","mixinDeep","ThemeContext","identifiers","createStyledComponent","isTargetStyledComp","isCompositeComponent","attrs","parentComponentId","generateComponentId","finalAttrs","shouldForwardProp","filterFn","elementToBeCreated","WrappedStyledComponent","componentStyle","forwardedComponent","componentAttrs","foldedComponentIds","resolvedAttrs","resolvedAttrDef","attrDef","determineTheme","generatedClassName","warnTooManyClasses","refToForward","$as","as","isTargetTag","computedProps","propsForElement","validAttr","withComponent","previousComponentId","optionsToCopy","newComponentId","_foldedDefaultProps","hoist","styled","constructWithOptions","componentConstructor","isValidElementType","templateFunction","withConfig","StyledComponent","domElement","GlobalStyle","createStyles","removeStyles","renderStyles","ServerStyleSheet","_emitSheetCSS","SC_ATTR_VERSION","getStyleTags","sealed","getStyleElement","dangerouslySetInnerHTML","__html","seal","collectStyles","interleaveWithNodeStream","hookCallback","hooks","hasOwnProp","isObjectEmpty","arrLen","createUTC","locale","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","M","ms","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","extractFromRFC2822Strings","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","createFromConfig","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","separator","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","period","addSubtract","isAdding","invalid","subtract","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","sod","startOf","calendarFormat","asFloat","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","toObject","toDate","keepOffset","suffix","zone","isLocal","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","cameraModal_1","directory","_b","uuid4","Uint16Array","pad","isRejected","onfinally","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_contexts","_sdkProcessingMetadata","newScope","Scope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setTags","setExtras","extras","setExtra","setFingerprint","setLevel","setTransactionName","setTransaction","updatedScope","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","clearBreadcrumbs","applyToEvent","_applyFingerprint","_notifyEventProcessors","setSDKProcessingMetadata","newData","errors","sid","ignoreDuration","startingTime","started","ipAddress","ip_address","did","email","username","user_agent","_version","_stack","bindClient","isOlderThan","pushScope","getStack","popScope","eventId","_lastEventId","event_id","finalHint","syntheticException","originalException","_invokeClient","lastEventId","beforeBreadcrumb","finalBreadcrumb","oldHub","makeMain","getIntegration","_oO","startSpan","_callExtensionMethod","layer","getMainCarrier","sentry","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","activeDomain","domain","active","registryHubTopStack","getHubFromActiveDomain","blockHardwareBackButton","startHardwareBackButton","MIN_SAFE_INTEGER","MENU_BACK_BUTTON_PRIORITY","GestureController","gestureId","requestedStart","disabledGestures","disabledScroll","createGesture","GestureDelegate","newID","disableScroll","createBlocker","BlockerDelegate","canStart","capture","capturedId","gestureName","disableGesture","enableGesture","BACKDROP_NO_SCROLL","enableScroll","isDisabled","isCaptured","isScrollDisabled","ctrl","GESTURE_CONTROLLER","isBoolean","isNull","isNullOrUndefined","isSymbol","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","idx","arrayToHash","formatError","braces","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","debuglog","NODE_DEBUG","pid","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseReject","custom","callbackify","callbackified","maybeCb","MD5","RIPEMD160","sha","alg","BlockHash","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","Reporter","DecoderBuffer","EncoderBuffer","reporter","isEncoderBuffer","isDecoderBuffer","save","restore","isEmpty","skip","raw","fail","_reporterState","isValidNumber","between","safeMax","_len2","_key2","safeMin","getUserLocales","_ref$useFallbackLocal","useFallbackLocale","_ref$fallbackLocale","fallbackLocale","languageList","languages","language","userLanguage","browserLanguage","systemLanguage","splitEl","normalizeLocales","getUserLocale","SDK_VERSION","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","executor","_state","States","PENDING","_handlers","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","_setResult","RESOLVED","REJECTED","_value","cachedHandlers","dateTimestampSource","nowSeconds","platformPerformance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","timestampWithMs","browserPerformanceTimeOrigin","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","Stream","EE","PassThrough","ondata","ondrain","resume","_isStdio","onclose","didOnEnd","onerror","cleanup","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","password","salt","keyBits","ivLen","keyLen","iv","used","keyStart","ivStart","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","asn1","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipher","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","signature","captureStackTrace","newestOnTop","randomBytes","rng","pseudoRandomBytes","prng","createHash","createHmac","Hmac","algos","algoKeys","hashes","getHashes","pbkdf2","aes","Cipher","createCipher","Cipheriv","createCipheriv","Decipher","createDecipher","Decipheriv","getCiphers","listCiphers","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","constants","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","resultEqualityCheck","comparator","createCacheKeyComparator","put","getEntries","createSingletonCache","cacheIndex","createLruCache","memoized","matchingEntry","clearCache","getDependencies","dep","dependencyTypes","createSelectorCreator","memoizeOptionsFromArgs","createSelector","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption","_directlyPassedOption2","finalMemoizeOptions","memoizedResultFunc","lastResult","recomputations","resetRecomputations","_isNativeReflectConstruct","sham","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","toCanvas","toDataURL","renderToDataURL","getRootSpan","getDynamicSamplingContextFromClient","public_key","getDsn","publicKey","user_segment","dsc","getDynamicSamplingContextFromSpan","txn","v7FrozenDsc","_frozenDynamicSamplingContext","maybeSampleRate","sample_rate","prepareEvent","normalizeDepth","normalizeMaxBreadth","dist","maxValueLength","applyClientOptions","integrationNames","sdk","applyIntegrationsMetadata","stackParser","debugIdStackFramesCache","debugIdMap","_sentryDebugIds","cachedDebugIdStackFrameCache","debugIdStackParserCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","filename","stacktrace","frames","frame","debug_id","applyDebugIds","finalScope","getFinalScope","mechanism","clientEventProcessors","getEventProcessors","getScopeData","isolationData","finalScopeData","evt","abs_path","debug_meta","images","code_file","applyDebugMeta","maxBreadth","normalizeEvent","parseEventHintOrCaptureContext","hintIsScopeOrFunction","captureContextKeys","hintIsScopeContext","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","executeCallbacks","depsNotFound","loadFile","callbackFn","numTries","isLegacyIECss","async","maxTries","numRetries","beforeCallbackFn","pathStripped","relList","onload","onbeforeload","ev","loadFn","numWaiting","loadFiles","returnPromise","bundleIds","DSN_REGEX","dsnToString","dsn","withPassword","pass","port","projectId","protocol","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","rawValue","encoder","stringifySafely","transformResponse","strictJSONParsing","responseType","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","SignStream","VerifyStream","ALGORITHMS","CorkedRequest","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","OurUint8Array","realHasInstance","destroyImpl","nop","stream","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","_uint8ArrayToBuffer","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","localStorage","HashBase","ARRAY16","_c","rotl","fnF","fnG","fnH","fnI","_blockOffset","_length","ERR_STREAM_PREMATURE_CLOSE","eos","called","onlegacyfinish","writableEnded","readableEnded","endEmitted","onrequest","req","setHeader","isRequest","zl","zr","sl","sr","hl","hr","fn1","fn2","fn3","fn4","fn5","br","dr","tl","tr","Algorithm","sha1","sha224","sha256","sha384","sha512","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","Rand","rand","generate","_rand","getBytes","getByte","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","move","_move","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","elliptic","curves","ec","eddsa","pre","PresetCurve","short","edwards","isInfinity","defineCurve","lambda","basis","ripemd","hmac","ripemd160","safer","Safer","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","methods","Node","_baseState","reverseArgs","choice","optional","useDecoder","explicit","implicit","_wrap","cstate","_useArgs","def","newKey","_decode","wrapResult","prevObj","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","entity","_use","_createEncoderBuffer","_encodeValue","_skipDefault","_encodeChoice","_encodePrimitive","cls","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","rethrow","pathLen","inherited","partial","reverse","tagClass","0","1","2","3","tagClassByName","tagByName","getClonedElement","shadow","getLargeTitle","getBackButton","slot","animateBackButton","animateLargeTitle","innerText","X","getBoundingClientRect","forward","backward","createLargeTitleTransition","translucent","TRANSITIONS","SHOW_CONFIRM","REMOVE_TOASTR","REMOVE_BY_TYPE","HIDE_CONFIRM","CLEAN_TOASTR","ADD_TOASTR","_mergeClassNames","_mergeRefs","_updateInputWidth","_propTypes2","isIEOrEdgeLegacy","isFirefox","select","updateInputWidthOnFontLoad","fonts","font","getFontShorthand","check","makeOnKeyPress","isNumberKey","getSelectionString","ariaLabel","autoFocus","nameForClass","_onKeyUp","onKeyUp","_ref$placeholder","showLeadingZeros","hasLeadingZero","inputMode","onKeyPress","createThunkMiddleware","reactOneSignalFunctionQueue","isOneSignalInitialized","isOneSignalScriptFailed","doesOneSignalExist","processQueuedOneSignalFunctions","promiseResolver","OneSignalReact","appId","script","handleOnLoad","handleOnError","isPushNotificationsEnabled","showHttpPrompt","registerForPushNotifications","setDefaultNotificationUrl","setDefaultTitle","getTags","sendTag","sendTags","deleteTag","deleteTags","addListenerForNotificationOpened","setSubscription","newSubscription","showHttpPermissionRequest","showNativePrompt","showSlidedownPrompt","showCategorySlidedown","showSmsSlidedown","showEmailSlidedown","showSmsAndEmailSlidedown","getNotificationPermission","onComplete","getUserId","getSubscription","setEmail","setSMSNumber","smsNumber","logoutEmail","logoutSMS","setExternalUserId","externalUserId","authHash","removeExternalUserId","getExternalUserId","provideUserConsent","consent","getEmailId","getSMSId","sendOutcome","outcomeName","outcomeWeight","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","modifier","asterisk","escapeGroup","escapeString","encodeURIComponentPretty","attachKeys","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","reIsHostCtor","freeGlobal","freeSelf","root","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","uid","IE_PROTO","funcToString","reIsNative","getNative","nativeCreate","ListCache","MapCache","assocIndexOf","baseIsNative","isHostObject","toSource","getMapData","__data__","isKeyable","Cache","overRide","minSize","hoverTitle","handleChange","fileOrFiles","onSizeError","onTypeError","V","onSelect","onDrop","multiple","onDraggingStateChange","dropMessageStyle","U","Z","Y","File","labelRef","handleChanges","click","dataTransfer","items","files","htmlFor","accept","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","attr","getDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","_shouldRoundValues","bmPow","bmSqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","absArr","defaultCurveSegments","degToRads","roundCorner","roundValues","bmRnd","styleDiv","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","setupWorker","Worker","Blob","blob","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","comp","findComp","__used","ks","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","chars","charData","st","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","response","responseText","load","fullPath","errorCallback","onreadystatechange","readyState","open","send","completeData","onError","createProcess","loadAnimation","processId","loadData","completeAnimation","anim","ImagePreloader","proxyImage","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","loadAssets","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","_elementHelper","append","setCacheType","elementHelper","BaseEvent","triggerEvent","_cbs","callbacks","markerParser","parsePayloadLines","lines","keysCount","_markers","markers","_marker","markerData","tm","cm","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","wrapper","container","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","fileName","trigger","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","playSegments","advanceTime","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","hide","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","animItem","subtractPlayingCount","registerAnimation","addPlayingCount","activate","nowTime","elapsedTime","searchAnimations","animElements","getElementsByClassName","lenAnims","getElementsByTagName","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_maxLength","pool","newElement","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","lastPoint","lengthData","BezierData","segmentLength","PointData","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","u0","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","interpolateValue","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","ax","ay","az","aw","bx","by","bz","bw","acos","quat","qx","qy","qz","qw","heading","attitude","asin","bank","c3","getValueAtCurrentTime","renderedFrame","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","PropertyFactory","getProp","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","skew","skewFromAxis","scale","sz","setTransform","translate","tx","tz","e2","f2","g2","h2","i2","j2","l2","n2","o2","_identityCalculated","e1","f1","g1","h1","i1","j1","l1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","useWebWorker","setIDPrefix","__getFactory","scripts","myScript","bodymovin","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","appliedTransformations","px","py","pz","ry","rz","_isDirty","applyToMatrix","mat","precalculateMatrix","autoOriented","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","polynomialCoefficients","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","fStyle","fWeight","weight","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","p10","p11","p20","p21","bounds","shapeSegmentInverted","pointsType","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","combinedCharacters","surrogateModifiers","setUpNode","family","fontFamily","fontVariant","fontStyle","fontWeight","letterSpacing","familyArray","enabledFamilies","trimFontOptions","createHelper","helper","engine","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","measureText","getComputedTextLength","getCodePoint","isRegionalCode","Font","typekitLoaded","_warned","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","BLACK_FLAG_CODE_POINT","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","sc","getCharData","_char","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isInRange","isTransparent","renderableComponents","addRenderableComponent","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","4","5","6","7","8","9","10","11","12","13","14","15","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","Effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ost","buildShapeString","_o","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","anIndexes","animatorJustifyOffset","animatorData","letterData","based","animators","fh","fs","fb","rn","totalChars","newInd","currentInd","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","ne","sm","getMult","textProperty","easer","tot","smoothness","newCharsFlag","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","titleElement","titleId","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createLumaSvgFilter","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","actionFlag","containerStyle","mozTransformOrigin","isDashed","elementWidth","elementHeight","elementRel","animationRel","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","startdenom","significance","ARC4","me","mixkey","seed","smear","stringseed","tostring","shortseed","typ","entropy","screen","autoseed","arc4","int32","quick","is_math_call","initialize$2","SHAPE","_typeof$1","ExpressionManager","fetch","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","_tMin","rnd","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","noOp","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","anchor_point","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","pathMasker","dasharrayValue","getTotalLength","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","reactPropsRegex","isPropValid","_sPassive","supportsPassive","getDocument","Document","gesturePriority","maxAngle","onWillStart","onStart","onEnd","notCaptured","onMove","blurOnStart","currentY","velocityX","velocityY","deltaX","deltaY","detect","isGesture","createPanRecognizer","calcGestureData","createPointerEvents","updateDetail","getTimeGivenProgression","solveCubicBezier","solveCubicParametricEquation","solveCubicEquation","solveQuadraticEquation","sanitizeDOMString","IonicSafeString","isSanitizerEnabled","createDocumentFragment","blockedTags","getElementChildren","sanitizeElement","allowedAttributes","sanitizerEnabled","baseAnimation","menuOverlayAnimation","menuInnerEl","backdropEl","menuPushAnimation","contentEl","menuRevealAnimation","menuController","side","menuId","_isOpen","isAnimating","getMenus","getOpen","isEnabled","swipeGesture","toggle","_getOpenSync","_createAnimation","_register","_unregister","_setOpen","setOpen","_setActiveMenu","createMenuController","propIsEnumerable","test1","test2","test3","shouldUseNative","paramsSerializer","serializedParams","hashmarkIndex","isAxiosError","columnNumber","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","auth","unescape","Authorization","btoa","baseURL","onloadend","responseHeaders","getAllResponseHeaders","statusText","responseURL","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","__CANCEL__","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Cancel","jws","jwt","decoded","header","DataStream","ReadableState","EElistenerCount","debugUtil","debug","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","setEncoding","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","pipeOnDrain","increasedAwaitDrain","dests","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","err2","bufferEqual","formatEcdsa","MSG_INVALID_SECRET","MSG_INVALID_VERIFIER_KEY","supportsKeyObjects","createPublicKey","checkIsPublicKey","typeError","asymmetricKeyType","export","checkIsPrivateKey","fromBase64","toBase64","base64url","errMsg","normalizeInput","createHmacSigner","secret","checkIsSecretKey","createHmacVerifier","computedSig","createKeySigner","signer","createKeyVerifier","verifier","createPSSKeySigner","RSA_PKCS1_PSS_PADDING","saltLength","RSA_PSS_SALTLEN_DIGEST","createPSSKeyVerifier","createECDSASigner","derToJose","createECDSAVerifer","joseToDer","createNoneSigner","createNoneVerifier","signerFactories","hs","es","none","verifierFactories","_finalized","throwIfNotStringOrBuffer","createReadableStreamAsyncIterator","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","emitClose","autoDestroy","updateReadableListening","wState","asyncIterator","iterable","emitErrorAndCloseNT","emitCloseNT","rState","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","Sha256","maj","sigma0","sigma1","gamma0","_g","_h","T1","T2","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","gh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","Legacy","md5","ZEROS","blocksize","_alg","_ipad","opad","_opad","MAX_ALLOC","checkParameters","sizes","rmd160","saltLen","shaFunc","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inOff","outOff","_encrypt","_decrypt","lStart","rStart","keyL","keyR","incr32","getBlock","_cipher","_prev","encrypt","chunkNum","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","bn","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","bignum","decoders","encoders","der","pem","DEREncoder","DERNode","encodedTag","encodeTag","lenOctets","unused","relative","ident","objid","getUTCHours","getUTCSeconds","numArray","_getEncoder","dataBuffer","defaultBuffer","DERDecoder","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","subident","mon","sec","_getDecoder","i2ops","paddedMsg","expiredAt","iat","semver","satisfies","_utils","toastrsCache","_constants","ignoreToastr","showConfirm","removeByType","hideConfirm","clean","_createReducer","toastrs","newToastr","a11yId","newState","addToToastr","collection","formatShortMonth","formatMonth","getFormatter","_getUserLocale","formatterCache","localeWithDefault","formatterCacheLocale","Intl","DateTimeFormat","getSafeFormatter","safeDate","toSafeHour","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","getTotalCodewordsCount","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","hex2rgba","hexCode","hexValue","dark","light","rendererOpts","getScale","qrSize","getImageWidth","qrToImageData","imgData","qr","modules","symbolSize","scaledMargin","palette","posDst","pxColor","TRACEPARENT_REGEXP","extractTraceparentData","traceparent","_arrayWithHoles","_nonIterableRest","ReactRouterViewStack","reactElement","page","ionPageElement","matchProps","disableIonPageManagement","routeData","childProps","matchComponent","clonedChild","findViewItemByPath","mustBeIonRoute","lastPathname","forceExact","matchView","matchDefaultRoute","getAllViewItems","myMatch","clonePageElement","leavingViewHtml","html","outerHTML","newEl","ionBackButton","stackContextValue","transitionPage","handlePageTransition","routerOutletElement","setupRouterOutlet","commit","enteringViewItem","leavingViewItem","prevRouteLastPathname","unmount","enteringRoute","matchRoute","foundView","routerOutlet","swipeHandler","_shouldContinue","runCommit","progressAnimation","routeAnimation","newLeavingElement","only","components","matchedNode","IonRouterInner","routeMangerContextState","handleNavigateBack","handleChangeTab","handleResetTab","handleNativeBack","handleNavigate","registerHistoryListener","handleHistoryChange","handleSetCurrentTab","getCurrentRouteInfoForTab","incomingRouteParams","leavingLocationInfo","previous","currentTab","currentRoute","prevInfo","findLastLocation","isPushed","lastRoute","currentRouteInfo","currentPushedBy","defaultHref","getFirstRouteInfoForTab","newRouteInfo","IonRouter","IonReactMemoryRouter","locationValue","actionValue","historyListenHandler","AppUpdate","checkAppUpdate","updateUrl","compareContext","bHasOwnProperty","valueA","valueB","stylis_min","ia","ka","aa","ba","la","ma","ea","oa","ca","fa","ha","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeOpacity","memoBuilder","hasWeakSet","WeakSet","_objectDestructuringEmpty","htmlTreeAsString","keyAttrs","currentElem","sepLength","nextStr","_htmlElementAsString","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","registerErrorInstrumentation","activeTransaction","SentryError","logLevel","isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","getSDKSource","getBaseApiEndpoint","Express","_router","router","app","_methods","setupOnce","originalCallback","wrapMiddlewareArgs","patchMiddleware","instrumentMiddlewares","__sentry_transaction","_usePgNative","usePgNative","native","Client","orig","sql","fields","OPERATIONS","OPERATION_SIGNATURES","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","dropIndex","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexExists","insertMany","insertOne","mapReduce","rename","replaceOne","updateMany","updateOne","_operations","operations","_describeOperations","describeOperations","_useMongoose","useMongoose","_instrumentOperations","Collection","_patchOperation","getSpanContext","_getSpanContextFromOperationArguments","lastArg","parentSpan","maybePromise","collectionName","dbName","shouldDescribe","bindReporter","metric","reportAllChanges","forceReport","observe","PerformanceObserver","supportedEntryTypes","po","buffered","onHiddenOrPageHide","visibilityState","firstHiddenTime","getVisibilityWatcher","reportedMetricIDs","_reportAllChanges","_performanceCursor","mark","_trackCLS","_trackLCP","_trackFID","addPerformanceEntries","responseStartTimestamp","requestStartTimestamp","entryType","addPerformanceNavigationTiming","_startChild","requestStart","responseEnd","responseStart","addRequest","addNavigationSpans","measureStartTimestamp","measureEndTimestamp","addMeasureSpans","firstHidden","shouldRecord","resourceName","initiatorType","transferSize","encodedBodySize","decodedBodySize","addResourceSpans","_trackNavigator","measurementTimestamp","normalizedValue","lcpEntry","clsEntry","tagMetricInfo","_lcpEntry","_clsEntry","connection","effectiveType","isMeasurementValue","rtt","downlink","deviceMemory","hardwareConcurrency","onReport","report","sessionValue","sessionEntries","entryHandler","hadRecentInput","firstSessionEntry","lastSessionEntry","takeRecords","visibilityWatcher","disconnect","processingStart","eventEnd","defaultRequestInstrumentationOptions","traceFetch","traceXHR","tracingOrigins","instrumentOutgoingRequests","_options","shouldCreateSpanForRequest","urlMap","defaultShouldCreateSpan","origins","shouldCreateSpan","handlerData","fetchData","__span","Request","fetchCallback","__sentry_own_request__","__sentry_xhr__","__sentry_xhr_span_id__","status_code","xhrCallback","DEFAULT_BROWSER_TRACING_OPTIONS","markBackgroundTransactions","maxTransactionDuration","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","BrowserTracing","_configuredIdleTimeout","_emitOptionsWarning","_metricOptions","_metrics","_getCurrentHub","instrumentRouting","_createRouteTransaction","beforeNavigate","parentContextFromHeader","metaName","getMetaContent","getHeaderContext","expandedContext","modifiedContext","finalContext","idleTransaction","maxDuration","adjustTransactionDuration","globalScripts","defineCustomElements","supports","__cssshim","ReCAPTCHA","_React$Component","handleExpired","handleErrored","handleRecaptchaRef","_proto","grecaptcha","_widgetId","getResponse","getWidgetId","execute","_executeRequested","executeAsync","executionResolve","executionReject","onExpired","onErrored","explicitRender","sitekey","tabindex","stoken","badge","captcha","delayOfCaptchaIframeRemoving","temporaryNode","_this$props","SCRIPT_MAP","idCount","makeAsyncScriptLoader","getScriptURL","recaptchaOptions","useRecaptchaNet","callbackName","globalName","AsyncScriptLoader","_Component","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","observers","_this3","scriptURL","scriptId","errored","callObserverFuncAndRemoveObserver","observersMap","removeOnUnmount","allScripts","ForwardedComponent","RecaptchaWrapper","getFunctionName","supportsFetch","Headers","Response","isNativeFetch","lastHref","instrument","originalConsoleMethod","instrumentConsole","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","instrumentDOM","xhrproto","originalOpen","xhrInfo","onreadystatechangeHandler","readyStateArgs","originalSend","instrumentXHR","sandbox","contentWindow","supportsNativeFetch","originalFetch","getFetchMethod","getFetchUrl","instrumentFetch","chrome","isChromePackagedApp","runtime","hasHistoryApi","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","instrumentHistory","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","fetchArgs","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","shouldShortcircuitPreviousDebounce","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","isPureReactComponent","__self","__source","$$typeof","_owner","keyPrefix","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Fragment","Profiler","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","lazy","_ctor","_status","_result","useImperativeHandle","currentTarget","qa","ra","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","Ya","Za","$a","ab","bb","db","eb","gb","hb","ib","kb","lb","mb","qb","_debugOwner","_debugSource","return","sb","xb","_valueTracker","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","Gb","Fb","Hb","defaultSelected","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","lastChild","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","alternate","effectTag","memoizedState","dehydrated","hc","sibling","gc","ic","jc","kc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","mc","nc","srcElement","correspondingUseElement","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","Oc","jd","gridArea","lineClamp","kd","ld","nd","menuitem","area","embed","keygen","link","param","wbr","od","pd","qd","sd","ud","vd","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","Interface","isDefaultPrevented","returnValue","ee","eventPool","fe","destructor","getPooled","cancelBubble","persist","eventPhase","isTrusted","ge","he","je","documentMode","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","te","ctrlKey","altKey","metaKey","datetime","range","tel","ye","change","ze","Ae","Ce","Ee","Fe","Ge","detachEvent","_isInputEventSupported","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","af","bf","cf","df","ff","hf","jf","anchorNode","anchorOffset","focusNode","focusOffset","lf","pseudoElement","mf","clipboardData","nf","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","sf","tf","targetTouches","uf","vf","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","childExpirationTime","qg","firstContext","expirationTime","rg","sg","responders","ug","updateQueue","baseState","baseQueue","shared","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","Mg","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","memoizedProps","revealOrder","ih","responder","jh","kh","mh","nh","oh","qh","rh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Ah","Bh","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","gi","pendingContext","ni","qi","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","si","wasMultiple","onclick","ui","vi","yi","zi","Ai","Bi","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","mj","nj","oj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","vb","Uj","Vj","Wj","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","dk","ek","fk","Jc","_internalRoot","gk","hk","jk","kk","form","Lj","lk","Events","findFiberByHostInstance","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","port2","port1","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","spread","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","responseInterceptorChain","newConfig","onFulfilled","onRejected","getUri","eject","throwIfCancellationRequested","throwIfRequested","fns","normalizedName","secure","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","hostname","requestURL","deprecatedWarnings","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","opt","schema","allowUnknown","resolvePromise","jwa","jwsSign","secretOrKey","securedInput","encodedHeader","encodedPayload","jwsSecuredInput","secretStream","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","channel","installMessageChannelImplementation","installReadyStateChangeImplementation","task","bufferEq","origBufEqual","origSlowBufEqual","pipeline","_toPrimitive","_getString","_getBuffer","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","ERR_MISSING_ARGS","destroyer","popCallback","streams","destroys","Sha","rotl30","ft","Sha1","rotl5","Sha224","Sha384","ZERO_BUF","subtle","toBrowser","checks","getNextTick","browserPbkdf2","importKey","deriveBits","prom","checkNative","resp","aesModes","desModes","ebtk","suite","des","instantiate","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","PADDING","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","fromArray","_multiply","lsbVi","abl","_last","unpad","autoPadding","generatePrime","DH","ENCODINGS","genc","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","getPrime","front","getPrivateKey","getGenerator","algorithms","_hashType","_tag","_signType","sig","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","_endoSplit","q1","q2","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","negate","zinv","zinv2","pz2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yyyy","yyyy8","c8","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","yyu4","kbase","pz3","eqXToP","zs","MontCurve","i4","a24","diffAdd","jumlAdd","EdwardsCurve","twisted","mOneA","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","sha1_K","SHA1","SHA224","SHA384","outer","HmacDRBG","KeyPair","Signature","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropyEnc","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","_importPrivate","privEnc","_importPublic","pubEnc","derive","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","seq","int","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","ECParameters","namedCurve","Entity","_createNamed","Generated","_initNamed","PEMEncoder","PEMDecoder","_reverse","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","iHash","hLen2","dblen","maskedDb","maskedSeed","oaep","nonZero","pkcs1","zBuffer","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","getParamBytesForAlg","signatureAsBuffer","countPadding","paramBytes","maxEncodedParamLength","inputLength","TAG_SEQ","seqLength","TAG_INT","rLength","rOffset","sLength","sOffset","rPadding","sPadding","signatureBytes","rsBytes","shortLength","MAX_OCTET","getParamSize","paramBytesForAlg","ES256","ES384","ES512","JWS_REGEX","safeJsonParse","headerFromJWS","jwsSig","signatureFromJWS","isValidJws","jwsVerify","securedInputFromJWS","jwsDecode","payloadFromJWS","json","timespan","PS_SUPPORTED","PUB_KEY_ALGS","RSA_KEY_ALGS","HS_ALGS","jwtString","secretOrPublicKey","clockTimestamp","decodedToken","secretCallback","hasSignature","nbf","ignoreNotBefore","clockTolerance","exp","ignoreExpiration","audience","audiences","aud","targetAudience","issuer","iss","subject","jwtid","jti","maxAge","maxAgeTimestamp","plural","msAbs","isPlural","long","fmtLong","fmtShort","SemVer","SEMVER_SPEC_VERSION","safeRe","safeRegexReplacements","makeSafeRe","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","LETTERDASHNUMBER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","LONETILDE","TILDETRIM","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","loose","includePrerelease","major","minor","prerelease","build","compareMain","comparePre","compareIdentifiers","inc","identifier","version1","version2","defaultResult","numeric","anum","bnum","neq","Comparator","ANY","rcompareIdentifiers","compareLoose","rcompare","rsort","Range","parseRange","isX","hyphenReplace","$0","fM","fm","fp","fpr","tM","tpr","testSet","allowed","outside","hilo","gtfn","ltefn","ltfn","ecomp","comparators","high","low","intersects","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","compRe","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","replaceXRange","replaceXRanges","replaceStars","parseComparator","thisComparators","thisComparator","rangeComparators","rangeComparator","toComparators","maxSatisfying","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","ltr","gtr","r1","coerce","isInteger","SUPPORTED_ALGS","sign_options_schema","expiresIn","notBefore","noTimestamp","keyid","mutatePayload","registered_claims_schema","parameterName","options_to_payload","options_for_objects","secretOrPrivateKey","isObjectPayload","kid","failure","validatePayload","invalid_options","validateOptions","claim","reTrim","reIsBadHex","reIsBinary","reIsOctal","reIsUint","freeParseInt","baseIsNaN","baseValues","iteratee","arrayMap","nativeKeys","nativeMax","arrayLikeKeys","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","baseKeys","isPrototype","isLength","guard","isBinary","toFinite","toInteger","predicate","fromRight","baseFindIndex","baseIndexOf","getPrototype","ReduxToastr","_reactRedux","_classnames","_ToastrBox","_ToastrConfirm","hasNativeReflectConstruct","_super","toastrFired","mergedItem","progressBar","transitionIn","transitionOut","closeOnToastrClick","inMemory","addToMemory","_addToMemory","attention","onAttentionClick","toastrPositions","_renderToastrForPosition","_this$props2","_renderToastrs","confirmOptions","okText","cancelText","connect","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","getShim","ReactPropTypes","bigint","instanceOf","checkPropTypes","_ProgressBar","_Icon","ToastrBox","handleClickToastr","handleClickCloseButton","_this$props$item$opti","onToastrClick","ignoreIsHiding","_setShouldClose","_removeToastr","onCloseButtonClick","_setIntervalId","_setIsHiding","_getItemTimeOut","_this$props$item$opti2","removeOnHoverTimeOut","isHiding","shouldClose","_props$item$options","_setTransition","toastrBoxElement","_onAnimationComplete","closeButton","disableCloseButtonFocus","toastrControls","_this$props$item$opti3","_this$props$item","removeCurrentToastrFunc","_this$props$item2","iconName","closeButtonAttributes","handlePressEnterOrSpaceKeyCloseButton","isToastrClickable","_this$props$item3","renderIcon","renderSubComponent","renderCloseButton","_this$props$item4","renderMessage","renderToastr","onHideComplete","onShowComplete","_this4","autoRemove","animationType","onEndListener","_this5","_this$props$item5","toastrClickAttributes","handlePressEnterOrSpaceKeyToastr","onMouseEnter","onMouseLeave","ProgressBar","_icons","_Button","ToastrConfirm","_confirm$options","disableCancel","closeOnShadowClick","isKeyDown","hasClicked","confirmHolderElement","setTransition","handleCancelClick","confirmElement","removeConfirm","onOk","handleButtonClick","onCancel","handleConfirmClick","_this$props$confirm","handleOnKeyDown","handleOnKeyUp","containsOkButton","innerRef","containsCancelButton","getCustomButtonHandler","getCustomButtonText","getCustomButtonClassName","handleCloseOnShadowClick","Button","clearEvent","prefixed","CACHED_MAP","getIconMap","Ionicons","addIcons","getUrl","getSrc","getNamedUrl","toLower","isSrc","isStr","getAppName","getPackageName","getVersionCode","getVersionNumber","_gtag","_excluded3","_x","_r","_iterableToArrayLimit","isInitialized","_testMode","_currentMeasurementId","_hasLoadedGA","_isQueuing","_queueGtag","GA_MEASUREMENT_ID","gtagUrl","dataLayer","gtag","gaOptions","mapFields","cookieUpdate","cookieExpires","cookieDomain","cookieFlags","userId","clientId","anonymizeIp","contentGroup1","contentGroup2","contentGroup3","contentGroup4","contentGroup5","allowAdFeatures","allowAdPersonalizationSignals","nonInteraction","hitCallback","initConfigs","trackingId","gtagOptions","_options$testMode","testMode","_loadGA","mergedGtagOptions","_toGtagOptions","queues","fieldsObject","_gaCommand","eventCategory","eventAction","eventLabel","eventValue","event_category","event_label","non_interaction","_gaCommandSendEvent","_args$","hitType","timingCategory","timingVar","timingValue","timingLabel","_this$_toGtagOptions","page_path","page_title","page_location","_len3","_key3","_gaCommandSendPageview","_args$2","_len4","_key4","_gaCommandSendEventParameters","_gaCommandSendPageviewParameters","_gaCommandSendTiming","_len5","_key5","command","_len6","_key6","_gaCommandSend","_gaCommandSet","_len7","_key7","readyCallback","ga","optionsOrName","category","fieldObject","_window","titleCase","redactingEmail","_str","toTitleCase","redactEmail","smallWords","_innerSlider","_json2mq","_defaultProps","_innerSliderUtils","enquire","Slider","innerSlider","slickPrev","slickNext","dontAnimate","slickGoTo","autoPlay","_responsiveMediaHandlers","query","responsive","breakpoints","breakpt","bQuery","minWidth","maxWidth","media","unregister","settings","rows","slidesPerRow","newChildren","currentWidth","row","InnerSlider","innerSliderRefHandler","_initialState","_lodash","_track","_dots","_arrows","_resizeObserverPolyfill","adaptiveHeight","onInit","onLazyLoad","updateState","adaptHeight","lazyLoadTimer","progressiveLazyLoad","onWindowResized","callbackTimers","onfocus","pauseOnFocus","onSlideFocus","onblur","onSlideBlur","animationEndCallback","autoplayTimer","checkImagesLoad","onReInit","setTrackStyle","didPropsChange","debouncedResize","resizeWindow","isTrackMounted","updatedState","_trackWidth","_trackLeft","childrenWidths","preClones","postClones","_i2","_trackStyle","childrenCount","trackLeft","imagesCount","image","prevClickHandler","onLazyLoadError","_index","asNavFor","beforeChange","afterChange","_slideHandler","asNavForIndex","firstBatch","focusOnSelect","clickable","ontouchmove","disableBodyScroll","triggerSlideHandler","enableBodyScroll","playType","autoplaySpeed","pauseType","dots","prevArrow","nextArrow","trackProps","pauseOnHover","onTrackOver","onTrackLeave","onMouseOver","selectHandler","dotProps","pauseOnDotsHover","clickHandler","onDotsLeave","onDotsOver","Dots","arrowProps","arrows","PrevArrow","NextArrow","verticalHeightStyle","centerPaddingStyle","listStyle","touchMove","listProps","onMouseDown","onMouseMove","onMouseUp","onTouchStart","onTouchMove","onTouchEnd","touchEnd","onTouchCancel","innerSliderProps","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_i3","_Object$keys","currentDirection","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","getSlideClasses","slickActive","slickCenter","slickCloned","fallbackKey","renderSlides","preCloneSlides","postCloneSlides","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","outline","preCloneNo","_React$PureComponent","mouseEvents","handleRef","_rightBound","rightBound","_leftBound","leftBound","dotOptions","customPaging","appendDots","dotsClass","prevClasses","prevHandler","prevArrowProps","customProps","_React$PureComponent2","_super2","nextClasses","nextHandler","nextArrowProps","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","timeoutCallback","throttle","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","camel2hyphen","obj2mq","mq","features","feature","isDimension","MediaQueryDispatch","MediaQuery","Util","queries","browserIsIncapable","shouldDegrade","isUnconditional","removeHandler","QueryHandler","mql","assess","constuctor","deferSetup","initialised","unmatch","pSlice","functionsHaveNames","pToString","arrbuf","DataView","something","rawname","stackStartFunction","AssertionError","_deepEqual","memos","multiline","ignoreCase","Float64Array","actualIndex","actualVisitedObjects","aIsArgs","bIsArgs","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","fn_name","next_line","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","notStrictEqual","throws","doesNotThrow","ifError","_makeEventProps","_reactCalendar","_reactFit","_DateInput","baseClassName","outsideActionEvents","DatePicker","_PureComponent","composedPath","closeCalendar","openCalendarOnFocus","openCalendar","isOpenProps","handleOutsideActionListeners","onCalendarClose","onCalendarOpen","shouldListen","fnName","onOutsideAction","_this$props3","calendarAriaLabel","calendarIcon","clearAriaLabel","clearIcon","dayAriaLabel","dayPlaceholder","disableCalendar","maxDetail","monthAriaLabel","monthPlaceholder","nativeInputAriaLabel","yearAriaLabel","yearPlaceholder","valueFrom","ariaLabelProps","placeholderProps","isCalendarOpen","resetValue","toggleCalendar","_this$props4","calendarClassName","calendarProps","eventProps","_this$props5","eventPropsWithoutOnChange","renderInputs","renderCalendar","iconProps","CalendarIcon","ClearIcon","isValue","clipboardEvents","compositionEvents","focusEvents","formEvents","imageEvents","keyboardEvents","mediaEvents","dragEvents","selectionEvents","touchEvents","pointerEvents","uiEvents","wheelEvents","animationEvents","transitionEvents","otherEvents","changeEvents","allEvents","makeEventProps","getArgs","eventHandler","_dateUtils","_Divider","_DayInput","_MonthInput","_MonthSelect","_YearInput","_NativeInput","_dateFormatter","_dates","defaultMinDate","defaultMaxDate","allViews","datesAreDifferent","date1","date2","getValueType","valueDate","getDetailValue","valuePiece","valueType","detailValueFrom","getBegin","getDetailValueFrom","getDetailValueTo","getDetailValueArray","isInternalInput","findInput","DateInput","_event$target","onChangeExternal","_value$split2","yearString","monthString","dayString","monthIndex","proposedValue","formElements","dayInput","monthInput","yearInput","formElement","validity","getProcessedValue","currentMatch","_this$state","showLeadingZerosFromFormat","commonInputProps","_this$state2","processFunction","dividers","formattedDate","formatDate","datePieceReplacements","datePiece","dateToFormat","formattedDatePiece","useGrouping","datePieceReplacement","_this$props6","elementFunctions","allowMultipleInstances","usedFunctions","renderFunction","elementFunction","_renderCustomInputs","renderDay","renderMonth","renderYear","_this$props7","onChangeNative","renderNativeInput","renderCustomInputs","Divider","DayInput","_Input","otherProps","currentMonthMaxDays","isSameMonth","maxDay","minDay","inputRefs","filteredInputRefs","firstRef","cachedCanvas","allowedVariants","updateInputWidth","MonthInput","isSameYear","maxMonth","minMonth","MonthSelect","_short","YearInput","maxYear","minYear","yearStep","NativeInput","nativeInputType","nativeValueParser","visibility","rangeType","Utils","BitBuffer","BitMatrix","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Mode","Segments","setupFormatInfo","maskPattern","getEncodedBits","createData","dataTotalCodewordsBits","getLengthInBits","putBit","remainingByte","bitBuffer","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","dcData","ecData","maxDataSize","dataSize","createCodewords","createSymbol","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","getPositions","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","bitIndex","byteIndex","isReserved","setupData","getBestMask","applyMask","toSJISFunc","bufIndex","reservedBit","reserved","getRowColCoords","posCount","intervals","coords","posLength","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","getPenaltyN1","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","Polynomial","degree","genPoly","generateECPolynomial","paddedData","buff","GF","coeff","divident","poly","EXP_TABLE","LOG_TABLE","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getBitsLength","getCapacity","usableBits","seg","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","G15_BCH","NumericData","AlphanumericData","ByteData","KanjiData","dijkstra","getStringByteLength","getSegments","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","graph","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildGraph","segs","buildNodes","find_path","optimizedSegs","curr","prevSeg","mergeSegments","remainingNum","ALPHA_NUM_CHARS","encodeUtf8","single_source_shortest_paths","predecessors","costs","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","cost","extract_shortest_path_from_predecessor_list","sorter","default_sorter","qrData","canvasEl","getCanvasElement","putImageData","quality","getColorAttrib","attrib","svgCmd","cmd","qrcodesize","moveBy","newRow","qrToPath","svgTag","jsx","jsxs","__webpack_amd_options__","_CALENDAR_TYPE_LOCALE","CALENDAR_TYPES","ARABIC","HEBREW","US","CALENDAR_TYPE_LOCALES","WEEKDAYS","formatDay","formatLongDate","formatMonthYear","formatShortWeekday","formatWeekday","formatYear","SUNDAY","FRIDAY","SATURDAY","getDayOfWeek","calendarType","getBeginOfWeek","getMonthIndex","getBeginNext","getRange","getValueRange","rawNextValue","toYearLabel","defaultFormatYear","getDecadeLabel","isWeekend","calendarTypes","isCalendarType","isClassName","isViews","allowedViews","views","tileGroupProps","activeStartDate","hover","tileClassName","tileContent","tileProps","tileDisabled","Navigation","drillUp","_ref$formatMonthYear","defaultFormatMonthYear","_ref$formatYear","_ref$navigationAriaLa","navigationAriaLabel","navigationAriaLive","navigationLabel","_ref$next2AriaLabel","next2AriaLabel","_ref$next2Label","next2Label","_ref$nextAriaLabel","nextAriaLabel","_ref$nextLabel","nextLabel","_ref$prev2AriaLabel","prev2AriaLabel","_ref$prev2Label","prev2Label","_ref$prevAriaLabel","prevAriaLabel","_ref$prevLabel","prevLabel","setActiveStartDate","showDoubleView","drillUpAvailable","shouldShowPrevNext2Buttons","previousActiveStartDate","getBeginPrevious","previousActiveStartDate2","getBeginPrevious2","nextActiveStartDate","nextActiveStartDate2","getBeginNext2","prevButtonDisabled","previousActiveEndDate","getEndPrevious","prev2ButtonDisabled","getEndPrevious2","nextButtonDisabled","next2ButtonDisabled","renderLabel","getCenturyLabel","labelClassName","renderButton","toPercent","Flex","flexWrap","flexBasis","isValueWithinRange","isRangeWithinRange","greaterRange","smallerRange","doRangesOverlap","range1","range2","getRangeClassNames","valueRange","dateRange","isRangeStart","isRangeEnd","getTileClasses","dateType","valueRangeClassNames","valueArray","hoverRange","hoverRangeClassNames","TileGroup","_ref$count","dateTransform","_ref$step","Tile","tile","tiles","tileClassNameProps","activeStartDateProps","tileContentProps","formatAbbr","maxDateTransform","minDateTransform","Decade","Decades","beginOfCentury","getBeginOfCenturyYear","CenturyView","Year","Years","beginOfDecade","getBeginOfDecadeYear","DecadeView","Month","_ref$formatMonth","defaultFormatMonth","Months","YearView","Day","_ref$formatDay","defaultFormatDay","_ref$formatLongDate","defaultFormatLongDate","currentMonthIndex","Days","showFixedNumberOfWeeks","showNeighboringMonth","hasFixedNumberOfWeeks","dayOfWeek","activeEndDate","weekdayClassName","Weekdays","_props$formatShortWee","defaultFormatShortWeekday","_props$formatWeekday","defaultFormatWeekday","anyDate","beginOfMonth","weekdayDate","WeekNumber","onClickWeekNumber","weekNumber","WeekNumbers","numberOfWeeks","weekNumbers","beginOfFirstWeek","calendarTypeForWeekNumber","beginOfWeek","getWeekNumber","weekIndex","MonthView","_props$calendarType","getCalendarTypeFromLocale","showWeekNumbers","alignItems","getLimitedViews","minDetail","getView","isViewAllowed","getActiveStartDate","getIsSingleValue","Calendar","_args","defaultActiveStartDate","_assertThisInitialize","previousView","allowPartialRange","onActiveStartDateChange","onViewChange","selectRange","prevArgs","shouldUpdate","setStateAndCallCallbacks","drillDownAvailable","onClickTile","_assertThisInitialize2","onDrillDown","nextView","_assertThisInitialize3","onDrillUp","goToRangeStartOnSelect","isFirstValueInRange","onClickDay","onClickDecade","onClickMonth","onClickYear","activeStartDateState","getInitialActiveStartDate","valueProps","valueState","viewProps","viewState","currentActiveStartDate","_this$props8","commonProps","drillDown","_formatYear","_this$props9","_this$props10","showNavigation","_this$props11","_this$props12","renderNavigation","renderContent","isActiveStartDate","isLooseValue","getRect","detectElementOverflow","isDisplayContentsSupported","isMutationObserverSupported","capitalize","findScrollContainer","alignAxis","axis","invertAxis","secondary","scrollContainer","scrollContainerCollisions","documentCollisions","startProperty","endProperty","sizeProperty","overflowStartProperty","overflowEndProperty","scrollProperty","uppercasedSizeProperty","offsetSizeProperty","clientSizeProperty","minSizeProperty","scrollbarWidth","startSpacing","availableStartSpace","endSpacing","availableEndSpace","offsetSize","displayStartIfFits","displayEndIfFits","moreSpaceStart","rawMinSize","getPropertyValue","shrinkToSize","displayStart","displayEnd","displayWhereverShrinkedFits","displayIfFits","availableSpace","fits","alignBothAxis","invertSecondaryAxis","commonArgs","alignMainAxis","alignSecondaryAxis","Fit","fit","parentPosition","mainAxis","attributeFilter","firstElementChild","dateTimestampInSeconds","timestampInSeconds","lastCapturedEventType","lastCapturedEventTargetId","WINDOW","addClickKeypressInstrumentationHandler","isSimilarToLastCapturedEvent","_sentryId","eventType","getEventTarget","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","parseUrl","request_headers","setRequestHeaderArgs","sentryXhrData","addFetchInstrumentationHandler","parseFetchArgs","finishedHandlerData","erroredHandlerData","hasProp","getUrlFromResource","resource","parseRetryAfterHeader","headerDelay","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","inboundFiltersIntegration","processEvent","_hint","clientOptions","_shouldDropEvent","_mergeOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","_isSentryError","originalFunctionToString","SETUP_CLIENTS","functionToStringIntegration","originalFunction","applySdkMetadata","exceptionFromError","ex","parseStackFrames","extractMessage","eventFromError","popSize","framesToPop","reactMinifiedRegexp","getPopSize","attachStacktrace","eventFromString","eventFromUnknownInput","isUnhandledRejection","domException","getNonErrorObjectExceptionValue","__serialized__","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","__sentry_wrapped__","sentryWrapped","wrappedArguments","BrowserClient","SENTRY_SDK_SOURCE","sendClientReports","_flushOutcomes","feedback","_isEnabled","envelope","tunnel","sent_at","createUserFeedbackEnvelopeItem","createUserFeedbackEnvelope","getSdkMetadata","_sendEnvelope","outcomes","_clearOutcomes","_dsn","discarded_events","clientReportItem","createClientReportEnvelope","addConsoleInstrumentationHandler","validSeverityLevels","severityLevelFromString","fragment","breadcrumbsIntegration","dom","_getConsoleBreadcrumbHandler","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","dedupeIntegration","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","lineno","function","currentFingerprint","previousFingerprint","instrumentError","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","instrumentUnhandledRejection","globalHandlersIntegration","stackTraceLimit","_installGlobalOnErrorHandler","globalHandlerLog","_installGlobalOnUnhandledRejectionHandler","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","handled","addGlobalUnhandledRejectionInstrumentationHandler","_getUnhandledRejectionError","httpContextIntegration","preprocessEvent","referrer","Referer","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","truncateAggregateExceptions","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parentId","parent_id","exceptions","linkedErrorsIntegration","DEFAULT_EVENT_TARGET","browserApiErrorsIntegration","eventTarget","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","xmlHttpRequestProps","wrapOptions","globalObject","handleEvent","wrappedEventHandler","originalEventHandler","createFrame","in_app","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackLineParsers","subMatch","extractSafariExtensionDetails","defaultStackParser","isSafariExtension","isSafariWebExtension","makePromiseBuffer","taskProducer","drain","capturedSetTimeout","createTransport","makeRequest","bufferSize","rateLimits","filteredEnvelopeItems","dataCategory","getEventForEnvelopeItem","recordDroppedEvent","filteredEnvelope","recordEnvelopeLoss","textEncoder","statusCode","__sentry__baseTransport__","cachedFetchImpl","getNativeFetchImplementation","fetchImpl","clearCachedFetchImplementation","makeFetchTransport","nativeFetch","pendingBodySize","pendingCount","requestSize","requestOptions","referrerPolicy","keepalive","fetchOptions","makeXHRTransport","getDefaultIntegrations","startSessionTracking","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","initAndBind","browserInit","_optionalChain","lastAccessLHS","isSentryRequestUrl","hubOrClient","isHub","checkDsn","removeTrailingSlash","checkTunnel","_previousLcp","__WEB_VITALS_POLYFILL__","getEntriesByType","navigation","navigationEntry","navEntry","activationStart","navigationType","prerendering","rating","addPerformanceInstrumentationHandler","durationThreshold","instrumentPerformanceObserver","getCleanupCallback","instrumentLcp","handleEntries","lastEntry","stopListening","addMetricObserver","stopOnCallback","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","record","__await","unwrapped","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","awrap","skipTempReset","rootRecord","rval","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","NodeType$1","_optionalChain$5","_value2","isShadowRoot","_2","isNativeShadowDom","stringifyStylesheet","stringifyRule","importStringified","isCSSImportRule","statement","layerName","supportsText","mediaText","escapeImportStatement","isCSSStyleRule","selectorText","NodeType","Mirror","idNodeMap","nodeMetaMap","rhsFn","_3","getMeta","_4","_5","getId","childNode","removeNodeFromMap","oldNode","getNode","shouldMaskInput","maskInputOptions","maskInputValue","maskInputFn","getInputType","getInputValue","canvasService","canvasCtx","tagNameRegex","genId","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","_step","_iterator","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","attributeValue","isSVGElement","ownerSVGElement","getHref","transformAttribute","maskAttributeFn","collectCharacters","regEx","descriptorsStr","inParens","getAbsoluteSrcsetString","ignoreAttribute","distanceToMatch","matchPredicate","ELEMENT_NODE","createMatchPredicate","eIndex","elementClassMatchesRegex","needMaskingText","maskTextClass","maskTextSelector","unmaskTextClass","unmaskTextSelector","maskAllText","autocomplete","maskDistance","unmaskDistance","serializeNode","mirror","blockClass","blockSelector","unblockSelector","inlineStylesheet","_options$maskInputOpt","maskTextFn","_options$dataURLOptio","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options$newlyAddedEl","newlyAddedElement","rootId","hasNode","docId","getRootId","DOCUMENT_NODE","compatMode","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","_options$maskInputOpt2","_options$dataURLOptio2","_options$newlyAddedEl2","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","stylesheet","_cssText","forceMask","__context","getImageData","originalGetImageData","pixel","is2DCanvasBlank","rr_dataURL","canvasDataURL","blankCanvas","blankCanvasDataURL","recordInlineImage","naturalWidth","naturalHeight","currentSrc","rr_mediaState","rr_mediaCurrentTime","rr_scrollLeft","rr_scrollTop","_n$getBoundingClientR","rr_width","rr_height","contentDocument","rr_src","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","isTextarea","_6","_7","_8","textarea","isInputMasked","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","_options$skipChild","skipChild","_options$inlineStyles","_options$maskInputOpt3","slimDOMOptions","_options$dataURLOptio3","_options$inlineImages","_options$recordCanvas","onSerialize","onIframeLoad","_options$iframeLoadTi","iframeLoadTimeout","onStylesheetLoad","_options$stylesheetLo","stylesheetLoadTimeout","_options$keepIframeSr","_options$newlyAddedEl3","_options$preserveWhit","preserveWhiteSpace","_serializedNode","sn","comment","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_Array$from","serializedChildNode","isElement$1","_Array$from2","isShadow","iframeEl","onceIframeLoaded","iframeDoc","serializedIframeNode","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","snapshot","_ref3$mirror","_ref3$blockClass","_ref3$blockSelector","_ref3$unblockSelector","_ref3$maskAllText","_ref3$maskTextClass","_ref3$unmaskTextClass","_ref3$maskTextSelecto","_ref3$unmaskTextSelec","_ref3$inlineStyleshee","_ref3$inlineImages","_ref3$recordCanvas","_ref3$maskAllInputs","maskAllInputs","_ref3$slimDOM","slimDOM","_ref3$keepIframeSrcFn","_optionalChain$4","_value3","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle$1","clearTimeout$1","setTimeout$1","replacement","__rrweb_original__","nowTimestamp","getWindowScroll","scrollingElement","pageXOffset","pageYOffset","_9","_10","_11","_12","_13","_14","getWindowHeight","getWindowWidth","closestElementOfNode","checkAncestors","blockedPredicate","isUnblocked","blockDistance","unblockDistance","isIgnored","legacy_isTouchEvent","polyfill","NodeList","DOMTokenList","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","_18","StyleSheetMirror","styleIDMap","idStyleMap","newId","getShadowHost","shadowHost","_19","_20","_21","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","cachedImplementations","getImplementation","cached","impl","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","_optionalChain$3","_value4","isNodeInLinkedList","errorHandler","DoubleLinkedList","__ln","moveKey","MutationBuffer","frozen","locked","texts","attributeMap","removes","mapRemoves","movedMap","addedSet","movedSet","droppedSet","processMutations","mutations","processMutation","adds","addedIds","addList","getNextId","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","_step2","_iterator2","isParentRemoved","_step3","_iterator3","isAncestorInSet","candidate","tailNode","_node","unhandledNode","removeNode","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","mutationCb","unattachedDoc","createHTMLDocument","old","_Array$from3","pname","newPriority","getPropertyPriority","_i4","_Array$from4","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","isAncestorRemoved","processedNodeManager","inOtherBuffer","targetId","childN","canvasManager","unlock","addsSet","_isParentRemoved","_isAncestorInSet","registerErrorHandler","unregisterErrorHandler","callbackWrapper","_optionalChain$2","_value6","mutationBuffers","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","onMutation","attributeOldValue","characterDataOldValue","initMoveObserver","_ref4","mousemoveCb","sampling","mousemove","timeBaseline","callbackThreshold","mousemoveCallback","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMouseInteractionObserver","_ref6","mouseInteractionCb","mouseInteraction","disableMap","currentPointerType","eventKey","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","_ref7","scrollCb","scrollLeftTop","scroll","initViewportResizeObserver","_ref8","_ref9","viewportResizeCb","lastH","lastW","INPUT_TAGS","lastInputValueMap","initInputObserver","_ref10","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","userTriggered","isChecked","cbWithDedup","lastInputValue","currentWindow","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","hookSetter","isRevoked","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","initStyleSheetObserver","_ref11","_ref12","styleSheetRuleCb","argumentsList","_argumentsList","_getIdAndStyleId","replaceSync","_getIdAndStyleId2","_getIdAndStyleId3","_getIdAndStyleId4","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","_ref13","_ref14","typeKey","_argumentsList5","_getIdAndStyleId5","_getIdAndStyleId6","_ref15","_ref16","initAdoptedStyleSheetObserver","_ref17","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","_this6","sheets","_this7","_15","_16","adoptStyleSheets","initStyleDeclarationObserver","_ref18","_ref19","styleDeclarationCb","ignoreCSSAttributes","CSSStyleDeclaration","_argumentsList7","_getIdAndStyleId7","_17","_getIdAndStyleId8","initMediaInteractionObserver","_ref20","mediaInteractionCb","muted","playbackRate","initFontObserver","_ref21","fontCb","fontMap","originalFontFace","FontFace","fontFace","fontSource","restoreHandler","initSelectionObserver","selectionCb","collapsed","updateSelection","isCollapsed","ranges","getRangeAt","startContainer","startOffset","endContainer","endOffset","initCustomElementObserver","_ref22","customElementCb","initObservers","_step4","mutationObserver","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","collectFonts","selectionObserver","customElementObserver","pluginHandlers","_iterator4","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","_this8","_this9","getRemoteId","_optionalChain$1","_value7","wrappedEmit","_takeFullSnapshot","IframeManagerNoop","crossOriginIframeMirror","crossOriginIframeRootIdMap","IframeManager","iframes","crossOriginIframeMap","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","_this10","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","IncrementalSnapshot","Mutation","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Selection","AdoptedStyleSheet","iframeMirror","_step5","_iterator5","getIds","_this11","_this12","ShadowDomManagerNoop","ShadowDomManager","shadowDoms","restoreHandlers","patchAttachShadow","_this13","iframeElement","manager","CanvasManagerNoop","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","_step6","adoptedStyleSheetData","styleIds","_iterator6","CSSRule","ProcessedNodeManager","nodeMap","periodicallyClear","_this14","onRequestAnimationFrame","thisBuffer","checkoutEveryNms","checkoutEveryNth","_options$blockClass","_options$blockSelecto","_options$unblockSelec","_options$ignoreClass","_options$ignoreSelect","_options$maskAllText","_options$maskTextClas","_options$unmaskTextCl","_options$maskTextSele","_options$unmaskTextSe","_options$inlineStyles2","_maskInputOptions","_slimDOMOptions","_options$maxCanvasSiz","maxCanvasSize","packFn","_options$sampling","_options$dataURLOptio4","mousemoveWait","_options$recordCanvas2","_options$recordCrossO","_options$recordAfter","recordAfter","_options$userTriggere","_options$collectFonts","_options$inlineImages2","_options$keepIframeSr2","_options$ignoreCSSAtt","getCanvasManager","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","radio","checkbox","incrementalSnapshotCount","eventProcessor","_step7","_iterator7","exceedCount","exceedTime","takeFullSnapshot","_step8","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","__RRWEB_EXCLUDE_IFRAME__","_iterator8","getMirror","nodeMirror","_getCanvasManager","__RRWEB_EXCLUDE_SHADOW_DOM__","initialOffset","canvasMutationCb","CustomElement","addLoadListener","getCanvasManagerFn","timestampToMs","timestampToS","addBreadcrumbEvent","replay","triggerUserActivity","checkAndHandleExpiredSession","addUpdate","throttledAddEvent","getClosestInteractive","getClickTargetNode","getTargetNode","isEventWithTarget","onWindowOpen","originalWindowOpen","_len8","_key8","ClickDetector","slowClickConfig","_addBreadcrumbEvent","_lastMutation","_lastScroll","_clicks","_timeout","_threshold","_scollTimeout","scrollTimeout","_replay","_ignoreSelector","_this15","cleanupWindowOpen","nowInSeconds","_teardown","_checkClickTimeout","SLOW_CLICK_TAGS","ignoreElement","isClickBreadcrumb","newClick","clickBreadcrumb","clickCount","_scheduleCheckClicks","_handleMultiClick","_getClicks","_this16","timedOutClicks","mutationAfter","scrollAfter","_i5","_timedOutClicks","_generateBreadcrumbs","hadScroll","hadMutation","isSlowClick","timeAfterClickMs","endReason","getCurrentRoute","_this17","_checkClicks","updateClickDetectorForRecordingEvent","clickDetector","isIncrementalEvent","registerMutation","registerScroll","isIncrementalMouseInteraction","_event$data","registerClick","createBreadcrumb","ATTRIBUTES_TO_RECORD","getAttributesToRecord","normalizedKey","handleDomListener","_getDomTarget","isClick","maxStringLength","getDomTarget","getBaseDomBreadcrumb","handleDom","handleKeyboardEvent","updateUserActivity","isInputElement","hasModifierKey","isCharacterKey","baseBreadcrumb","getKeyboardBreadcrumb","ENTRY_TYPES","responseStatus","getAbsoluteTime","paint","domComplete","domContentLoadedEventStart","domContentLoadedEventEnd","domInteractive","loadEventStart","loadEventEnd","redirectCount","createPerformanceEntry","setupPerformanceObserver","addPerformanceEntry","performanceEntries","onEntries","_ref23","clearCallbacks","addLcpInstrumentationHandler","_ref24","replayPerformanceEntries","getLargestContentfulPaint","clearCallback","logInfo","shouldAddBreadcrumb","addLogBreadcrumb","logInfoNextTick","EventBufferSizeExceededError","_Error","_wrapNativeSuper","EventBufferArray","_totalSize","hasCheckout","_addEvent2","_callee","eventSize","_context2","_this18","eventsRet","WorkerHandler","worker","_worker","_this19","_ensureReadyPromise","_ref25","terminate","_this20","_getAndIncrementId","_ref26","EventBufferCompressionWorker","_earliestTimestamp","ensureReady","_sendEventToWorker","_finishRequest","_finishRequest2","_callee2","_context3","EventBufferProxy","_fallback","_compression","_used","_ensureWorkerIsLoadedPromise","_ensureWorkerIsLoaded","hasEvents","getEarliestTimestamp","addEvent","_finish","_callee3","_context4","ensureWorkerIsLoaded","_ensureWorkerIsLoaded2","_callee4","_context5","_switchToCompressionWorker","_switchToCompressionWorker2","_callee5","_this$_fallback","addEventPromises","_iterator9","_step9","_context6","createEventBuffer","_ref27","useCompression","customWorkerUrl","workerUrl","__SENTRY_EXCLUDE_REPLAY_WORKER__","_getWorkerUrl","_loadWorker","hasSessionStorage","clearSession","removeItem","deleteSession","isSampled","makeSession","lastActivity","segmentId","previousSessionId","saveSession","getSessionSampleType","sessionSampleRate","allowBuffering","createSession","_ref28","_ref28$stickySession","stickySession","_ref29","isExpired","initialTime","expiry","targetTime","isSessionExpired","_ref30","maxReplayDuration","sessionIdleExpire","_ref30$targetTime","shouldRefreshSession","_ref31","loadOrCreateSession","_ref32","sessionOptions","traceInternals","existingSession","sessionStringFromStorage","sessionObj","fetchSession","addEventSync","shouldAddEvent","_addEvent","_x2","_x3","_x4","_addEvent3","_callee11","replayOptions","eventAfterPossibleCallback","_context12","eventBuffer","recordingMode","maybeApplyCallback","beforeAddRecordingEvent","timestampInMs","sessionIdlePause","initialTimestamp","isCustomEvent","isErrorEvent","isTransactionEvent","isReplayEvent","isFeedbackEvent","handleAfterSendEvent","enforceStatusCode","isBaseTransportSend","sendResponse","replayContext","traceIds","handleTransactionEvent","errorIds","replayId","beforeErrorSampling","sendBufferedReplayOrFlush","handleErrorEvent","handleBeforeSendEvent","exceptionValue","handleHydrationError","isRrwebError","__rrweb__","addFeedbackBreadcrumb","feedbackId","shouldSampleForBufferEvent","errorSampleRate","createPerformanceSpans","_ref33","handleHistorySpanListener","handleHistory","urls","addNetworkBreadcrumb","shouldFilterRequest","handleXhrSpanListener","handleXhr","getBodySize","formDataStr","_serializeFormData","parseContentLengthHeader","getBodyString","mergeWarning","_meta","warnings","newMeta","existingWarnings","makeNetworkReplayBreadcrumb","buildSkippedNetworkRequestOrResponse","bodySize","buildNetworkRequestOrResponse","_normalizeNetworkBody","exceedsSizeLimit","isProbablyJson","_strIsProbablyJson","truncatedBody","e3","normalizeNetworkBody","normalizedBody","getAllowedHeaders","allowedHeaders","filteredHeaders","formData","urlMatches","fullUrl","fixedUrl","getFullUrl","stringMatchesSomePattern","_captureFetchBreadcrumbToReplay","_callee12","_context13","_prepareFetchData","_x8","_x9","_x10","_prepareFetchData2","_callee13","_hint$startTimestamp2","_hint$endTimestamp2","_breadcrumb$data2","_breadcrumb$data2$sta","requestBodySize","responseBodySize","captureDetails","_context14","request_body_size","response_body_size","networkDetailAllowUrls","networkDetailDenyUrls","_getRequestInfo","_getResponseInfo","_ref34","networkCaptureBodies","networkRequestHeaders","getHeadersFromOptions","getRequestHeaders","_getBodyString","_getFetchRequestArgBody","_getBodyString2","bodyStr","_x11","_x12","_x13","_x14","_getResponseInfo2","_callee14","_ref35","networkResponseHeaders","_yield$_parseFetchRes","_yield$_parseFetchRes2","bodyText","_context15","getAllHeaders","_parseFetchResponseBody","getResponseData","_ref36","_x15","_parseFetchResponseBody2","_callee15","_context16","_tryCloneResponse","_tryGetResponseText","allHeaders","_x16","_getResponseText2","_getResponseText","txt","finally","_callee16","_context17","_captureXhrBreadcrumbToReplay","_callee17","_context18","_prepareXhrData","enrichXhrBreadcrumb","reqSize","resSize","_getBodySize","_hint$startTimestamp","_hint$endTimestamp","_breadcrumb$data","_breadcrumb$data$stat","_line$split","_line$split2","getResponseHeaders","_ref37","_ref38","requestBody","requestWarning","_ref39","_parseXhrResponse","_getXhrResponseBody","_ref40","responseBody","responseWarning","handleNetworkBreadcrumbs","TextEncoder","_replay$getOptions2","_isXhrBreadcrumb","_isXhrHint","_x17","_x18","_x19","captureXhrBreadcrumbToReplay","_isFetchBreadcrumb","_isFetchHint","enrichFetchBreadcrumb","_x5","_x6","_x7","captureFetchBreadcrumbToReplay","beforeAddNetworkBreadcrumb","handleFetch","handleFetchSpanListener","_LAST_BREADCRUMB","handleScopeListener","newBreadcrumb","getLastBreadcrumb","isBreadcrumbWithCategory","isTruncated","normalizedArgs","normalizedArg","normalizeConsoleBreadcrumb","handleScope","addGlobalListeners","addHistoryInstrumentationHandler","includeAfterSendEventHandling","afterSendHandler","replay_id","getSessionId","captureExceptions","handleGlobalEventListener","hasHooks","lastTransaction","feedbackEvent","includeReplay","addMemoryEntry","_x20","_addMemoryEntry","_callee18","_context19","createMemoryEntry","memory","memoryEntry","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","getHandleRecordingEmit","hadFirstEvent","_isCheckout","setInitialState","shouldRecordCanvas","isRecordingCanvas","useCompressionOption","blockAllMedia","networkDetailHasUrls","networkRequestHasHeaders","networkResponseHasHeaders","createOptionsEvent","addSettingsEvent","earliestEvent","createReplayEnvelope","replayEvent","recordingData","createEnvelope","createEventEnvelopeHeaders","getSdkMetadataForEnvelopeHeader","prepareRecordingData","_ref41","payloadWithSequence","replayHeaders","prepareReplayEvent","_x21","_prepareReplayEvent","_callee19","_ref42","eventHint","preparedEvent","_ref52","_context20","_integrations","getIsolationScope","sendReplayRequest","_x22","_sendReplayRequest","_callee20","_ref43","segment_id","eventContext","preparedRecordingData","baseEvent","_context21","replay_start_timestamp","error_ids","trace_ids","replay_type","cause","TransportStatusCodeError","updateRateLimits","isRateLimited","RateLimitError","_Error2","_Error3","_super3","_this21","sendReplay","_x23","_sendReplay","_callee22","replayData","retryConfig","_args22","_context23","_retryCount","_callee21","_context22","ReplayContainer","_ref44","_this22","recordingOptions","__init","__init2","__init3","__init4","__init5","__init6","_lastActivity","_isPaused","_hasInitializedCoreListeners","initialUrl","_recordingOptions","_debouncedFlush","callbackReturnValue","maxTimerId","cancelTimers","flushMinDelay","flushMaxDelay","_throttledAddEvent","maxCount","durationSeconds","_cleanup","_getTotalCount","isThrottled","wasThrottled","_this$getOptions","slowClickTimeout","slowClickIgnoreSelectors","_canvas","_this$_options","_initializeSessionForSampling","_initializeRecording","_handleException","_updateUserActivity","canvasOptions","_stopRecording","_onMutationHandler","_stop","_callee6","_ref45","_ref45$forceFlush","forceFlush","_args6","_context7","_removeListeners","stopRecording","force","_checkSession","startRecording","_sendBufferedReplayOrFlush","_callee7","_ref46","_ref46$continueRecord","continueRecording","activityTime","hasStoppedRecording","_args7","_context8","flushImmediate","_updateSessionActivity","_maybeSaveSession","cbResult","urlPath","_clearContext","_this23","_addListeners","_refreshSession","_refreshSession2","_callee8","_context9","initializeSampling","_x24","_handleVisibilityChange","_handleWindowBlur","_handleWindowFocus","_handleKeyboardEvent","addListeners","_performanceCleanupCallback","removeListeners","_this24","_doChangeToForegroundTasks","_doChangeToBackgroundTasks","_this25","_this26","_this27","_createCustomBreadcrumb","conditionalFlush","_this28","_runFlush2","_callee9","_context10","_addPerformanceEntries","_updateInitialTimestampFromEventBuffer","_popEventContext","_this29","_callee10","_ref48","_ref48$force","tooShort","tooLong","_args10","_context11","minReplayDuration","_flushLock","_runFlush","_this30","mutationLimit","overMutationLimit","mutationBreadcrumbLimit","getOption","defaultSelectors","deprecatedClassOption","deprecatedSelectorOption","deprecatedSelectors","allSelectors","getPrivacyOptions","_ref49","unmask","ignore","maskAttribute","_ref50","maskAttributes","privacyOptions","MEDIA_SELECTORS","DEFAULT_NETWORK_HEADERS","_initialized","Replay$1","_ref51","_ref51$flushMinDelay","_ref51$flushMaxDelay","_ref51$minReplayDurat","_ref51$maxReplayDurat","_ref51$stickySession","_ref51$useCompression","_ref51$_experiments","_ref51$maskAllText","_ref51$maskAllInputs","_ref51$blockAllMedia","_ref51$mutationBreadc","_ref51$mutationLimit","_ref51$slowClickTimeo","_ref51$slowClickIgnor","_ref51$networkDetailA","_ref51$networkDetailD","_ref51$networkCapture","_ref51$networkRequest","_ref51$networkRespons","_ref51$mask","_ref51$maskAttributes","_ref51$unmask","_ref51$block","_ref51$unblock","_ref51$ignore","maskFn","_initialOptions","_getMergedNetworkHeaders","_isInitialized","_this31","_setup","_initialize","startBuffering","_maybeLoadFromReplayCanvasIntegration","finalOptions","initialOptions","replaysSessionSampleRate","replaysOnErrorSampleRate","loadReplayOptionsFromClient","canvasIntegration","getIntegrationByName","__initStatic","createEventEnvelope","sdkInfo","packages","enhanceEventWithSdkInfo","envelopeHeaders","eventItem","createMetricEnvelope","metricBucketItems","tagEntries","maybeTags","serializeMetricBuckets","createMetricEnvelopeItem","ALREADY_SEEN_ERROR","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_transport","transportOptions","_process","eventFromException","_captureEvent","eventMessage","promisedEvent","eventFromMessage","capturedSpanScope","sendSession","metricsAggregator","_isClientDoneProcessing","clientFinished","transportFlushed","forceInitialize","_setupIntegrations","integrationId","integrationName","isAlreadyInstalled","attachment","envelopeItem","createSessionEnvelope","_event","chromeVar"],"mappings":"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K,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,OAAO,UAAY,CAAC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,EAAE,IAAI,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,yDAAyD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,wBAAwB,WAAW,CAAC,oBAAoB,OAAO,CAAC,wBAAwB,WAAW,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,yDAAyD,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,OAAO,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,OAAO,CAAC,mBAAmB,QAAQ,CAAC,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,gCAAgC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,mBAAmB,QAAQ,CAAC,WAAW,SAAS,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,SAAS,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,GAAK,CAAC,KAAK,KAAK,uCAAuC,CAAC,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,uFAAuF,kNAAkN,kSAAkS,+WAA+W,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,GAAG,CAAC,gCAAgC,cAAc,CAAC,yBAAyB,4FAA4F,wNAAwN,4SAA4S,wXAAwX,MAAM,EAAE,eAAe,CAAC,gCAAgC,cAAc,CAAC,MAAM,MAAM,EAAE,eAAe,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,gCAAgC,cAAc,CAAC,KAAK,MAAM,EAAE,gBAAgB,IAAI,EAAE,0jBAA0jB,OAAO,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,KAAK,KAAK,mKAAmK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,sBAAsB,QAAQ,CAAC,uDAAuD,OAAO,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,KAAK,sDAAsD,+EAA+E,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,wBAAwB,WAAW,CAAC,UAAU,SAAS,CAAC,2BAA2B,WAAW,CAAC,kBAAkB,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,8aAA8a,CAAC,IAAI,CAAC,iHAAiH,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,mDAAmD,CAAC,EAAE,EAAE,GAAG,MAAM,QAAQ,GAAK,CAAC,MAAM,KAAK,8BAA8B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,GAAK,CAAC,MAAM,sDAAsD,4FAA4F,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,OAAO,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,qBAAqB,6BAA6B,SAAS,CAAC,mCAAmC,cAAc,CAAC,UAAU,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,OAAO,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,kFAAkF,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,qBAAqB,QAAQ,CAAC,wLAAwL,OAAO,CAAC,qBAAqB,QAAQ,CAAC,aAAa,OAAO,CAAC,kBAAkB,QAAQ,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,sBAAsB,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,gCAAgC,cAAc,CAAC,eAAe,OAAO,CAAC,mCAAmC,cAAc,CAAC,UAAU,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,cAAc,GAAK,CAAC,MAAM,KAAK,iDAAiD,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,6BAA6B,cAAc,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,mBAAmB,OAAO,CAAC,0BAA0B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,uCAAuC,OAAO,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,6BAA6B,WAAW,CAAC,cAAc,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,qBAAqB,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,GAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,eAAe,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,uCAAuC,CAAC,0CAA0C,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,4CAA4C,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,GAAK,CAAC,MAAM,cAAc,+BAA+B,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,QAAQ,CAAC,eAAe,CAAC,WAAW,KAAK,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,OAAO,IAAI,EAAE,YAAY,GAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,GAAK,CAAC,KAAK,yCAAyC,0FAA0F,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,uBAAuB,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,QAAQ,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,SAAS,IAAI,EAAE,8DAA8D,MAAM,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,kBAAkB,CAAC,mCAAmC,cAAc,CAAC,cAAc,GAAK,CAAC,MAAM,KAAK,uDAAuD,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,mBAAmB,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQ,GAAK,CAAC,MAAM,MAAM,mIAAmI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,QAAQ,CAAC,6BAA6B,WAAW,CAAC,OAAO,QAAQ,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,yFAAyF,SAAS,CAAC,mCAAmC,cAAc,CAAC,2BAA2B,SAAS,CAAC,mCAAmC,cAAc,CAAC,SAAS,SAAS,CAAC,6BAA6B,WAAW,CAAC,QAAQ,SAAS,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,gCAAgC,cAAc,CAAC,QAAQ,GAAK,CAAC,IAAI,MAAM,gCAAgC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,2MAA2M,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,kPAAkP,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,OAAO,GAAK,CAAC,KAAK,sDAAsD,qEAAqE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,MAAM,EAAE,EAAE,CAAC,CAAC,0IAA0I,CAAC,IAAI,CAAC,iHAAiH,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAAC,mDAAmD,CAAC,EAAE,EAAE,GAAG,MAAM,QAAQ,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,mBAAmB,QAAQ,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,8BAA8B,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,WAAW,GAAK,CAAC,KAAK,KAAK,uBAAuB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,mCAAmC,cAAc,CAAC,aAAa,OAAO,CAAC,2CAA2C,iBAAiB,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,GAAK,CAAC,KAAK,yDAAyD,qCAAqC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,wBAAwB,WAAW,CAAC,WAAW,QAAQ,CAAC,wBAAwB,WAAW,CAAC,WAAW,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,QAAQ,CAAC,6BAA6B,WAAW,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,SAAS,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,wCAAwC,iBAAiB,CAAC,cAAc,GAAK,CAAC,KAAK,6BAA6B,sHAAsH,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,+BAA+B,yCAAyC,OAAO,CAAC,qBAAqB,QAAQ,CAAC,+QAA+Q,4SAA4S,qUAAqU,wUAAwU,OAAO,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,2BAA2B,WAAW,CAAC,2BAA2B,2BAA2B,8DAA8D,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,iMAAiM,MAAM,GAAG,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,MAAM,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,WAAW,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,4BAA4B,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,KAAK,4BAA4B,2CAA2C,CAAC,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,QAAQ,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,WAAW,CAAC,KAAK,MAAM,EAAE,aAAa,IAAI,EAAE,2BAA2B,GAAK,CAAC,MAAM,KAAK,gDAAgD,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,CAAC,2BAA2B,WAAW,CAAC,UAAU,EAAE,EAAE,uCAAuC,GAAK,CAAC,KAAK,MAAM,gDAAgD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,eAAe,SAAS,CAAC,kBAAkB,QAAQ,CAAC,KAAK,SAAS,CAAC,gBAAgB,QAAQ,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,IAAI,6BAA6B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,GAAK,CAAC,MAAM,KAAK,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,wBAAwB,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAK,CAAC,KAAK,sDAAsD,qEAAqE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,MAAM,EAAE,EAAE,CAAC,CAAC,4JAA4J,CAAC,IAAI,CAAC,iHAAiH,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAAC,mDAAmD,CAAC,EAAE,EAAE,GAAG,MAAM,QAAQ,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,QAAQ,GAAK,CAAC,KAAK,KAAK,gMAAgM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,sBAAsB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,sBAAsB,QAAQ,CAAC,sGAAsG,gHAAgH,OAAO,CAAC,sBAAsB,QAAQ,CAAC,uGAAuG,4bAA4b,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,sBAAsB,QAAQ,CAAC,KAAK,OAAO,CAAC,sBAAsB,QAAQ,CAAC,OAAO,OAAO,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,qBAAqB,QAAQ,CAAC,SAAS,OAAO,CAAC,sBAAsB,QAAQ,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,IAAI,MAAM,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,QAAQ,EAAE,YAAY,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,KAAK,6CAA6C,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mDAAmD,iFAAiF,CAAC,qBAAqB,QAAQ,CAAC,sBAAsB,6BAA6B,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQ,GAAK,CAAC,KAAK,KAAK,yCAAyC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,OAAO,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,mCAAmC,cAAc,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,KAAK,GAAK,CAAC,MAAM,sDAAsD,2EAA2E,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,kBAAkB,QAAQ,CAAC,mCAAmC,OAAO,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,OAAO,CAAC,qBAAqB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,sBAAsB,QAAQ,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,GAAK,CAAC,MAAM,YAAY,qCAAqC,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,IAAI,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,EAAE,EAAE,uBAAuB,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,wCAAwC,iBAAiB,CAAC,UAAU,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,gCAAgC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,WAAW,QAAQ,EAAE,EAAE,0DAA0D,MAAM,GAAK,CAAC,KAAK,KAAK,qCAAqC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,QAAQ,SAAS,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,QAAQ,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,qCAAqC,oDAAoD,OAAO,CAAC,qBAAqB,QAAQ,CAAC,0BAA0B,OAAO,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,kCAAkC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,67CAA67C,CAAC,EAAE,KAAK,CAAC,4NAA4N,CAAC,KAAK,CAAC,kCAAkC,CAAC,8DAA8D,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,4FAA4F,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,mCAAmC,cAAc,CAAC,MAAM,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,cAAc,OAAO,CAAC,mCAAmC,cAAc,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,kDAAkD,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,SAAS,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,oCAAoC,CAAC,KAAK,CAAC,kCAAkC,CAAC,6DAA6D,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,4FAA4F,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,WAAW,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,oFAAoF,CAAC,0CAA0C,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,4CAA4C,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,mBAAmB,QAAQ,CAAC,WAAW,GAAK,CAAC,KAAK,KAAK,iDAAiD,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,+DAA+D,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,6BAA6B,WAAW,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,QAAQ,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,qBAAqB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,GAAK,CAAC,MAAM,MAAM,yCAAyC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,GAAK,CAAC,MAAM,0BAA0B,sDAAsD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,SAAS,CAAC,mBAAmB,QAAQ,CAAC,mCAAmC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,GAAK,CAAC,MAAM,KAAK,iEAAiE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,GAAK,CAAC,KAAK,KAAK,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,WAAW,CAAC,2BAA2B,WAAW,CAAC,wDAAwD,WAAW,CAAC,6BAA6B,WAAW,CAAC,SAAS,UAAU,MAAM,GAAK,CAAC,KAAK,SAAS,+EAA+E,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,SAAS,CAAC,qBAAqB,QAAQ,CAAC,OAAO,OAAO,CAAC,qBAAqB,QAAQ,CAAC,UAAU,SAAS,CAAC,6BAA6B,WAAW,CAAC,aAAa,OAAO,CAAC,qBAAqB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,sDAAsD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,kCAAkC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,CAAC,0BAA0B,WAAW,CAAC,KAAK,SAAS,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,SAAS,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,SAAS,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,KAAK,SAAS,CAAC,gCAAgC,cAAc,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,gBAAgB,gDAAgD,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,wBAAwB,WAAW,CAAC,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,cAAc,CAAC,WAAW,CAAC,qCAAqC,cAAc,CAAC,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,oCAAoC,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,SAAS,EAAE,wBAAwB,GAAK,CAAC,KAAK,KAAK,0CAA0C,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,8BAA8B,4CAA4C,8CAA8C,EAAE,GAAG,CAAC,qBAAqB,QAAQ,CAAC,MAAM,QAAQ,EAAE,GAAG,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,2BAA2B,WAAW,CAAC,qCAAqC,2DAA2D,4FAA4F,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,sYAAsY,meAAme,ykBAAykB,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,iKAAiK,wSAAwS,mWAAmW,MAAM,GAAG,CAAC,mBAAmB,QAAQ,CAAC,SAAS,MAAM,GAAG,CAAC,6BAA6B,WAAW,CAAC,eAAe,iBAAiB,EAAE,GAAG,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,IAAI,KAAK,GAAK,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,wCAAwC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,MAAM,OAAO,CAAC,qBAAqB,QAAQ,CAAC,4EAA4E,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,4BAA4B,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,KAAK,KAAK,2FAA2F,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,CAAC,qBAAqB,QAAQ,CAAC,wCAAwC,0DAA0D,CAAC,qBAAqB,QAAQ,CAAC,mCAAmC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,6BAA6B,WAAW,CAAC,YAAY,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,+aAA+a,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,EAAE,IAAI,CAAC,iHAAiH,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,MAAM,GAAK,CAAC,KAAK,KAAK,oCAAoC,CAAC,IAAI,EAAE,IAAI,EAAE,sBAAsB,SAAS,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,yDAAyD,CAAC,gCAAgC,CAAC,yGAAyG,CAAC,gBAAgB,EAAE,CAAC,iHAAiH,CAAC,6FAA6F,CAAC,cAAc,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,aAAa,SAAS,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,KAAK,MAAM,0DAA0D,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,OAAO,CAAC,wBAAwB,WAAW,CAAC,0FAA0F,4KAA4K,mMAAmM,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,wBAAwB,WAAW,CAAC,wBAAwB,2CAA2C,OAAO,CAAC,2BAA2B,WAAW,CAAC,qVAAqV,gnBAAgnB,gsBAAgsB,iuBAAiuB,OAAO,CAAC,2BAA2B,WAAW,CAAC,oCAAoC,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,KAAK,GAAK,CAAC,MAAM,MAAM,2DAA2D,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,uBAAuB,OAAO,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,kCAAkC,cAAc,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,WAAW,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,KAAK,mDAAmD,CAAC,EAAE,GAAG,EAAE,KAAK,GAAK,CAAC,MAAM,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,GAAK,CAAC,IAAI,MAAM,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,QAAQ,iCAAiC,CAAC,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,wBAAwB,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,KAAK,sDAAsD,2GAA2G,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,0BAA0B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,IAAI,EAAE,6BAA6B,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kCAAkC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,IAAI,MAAM,qCAAqC,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAK,CAAC,MAAM,KAAK,6CAA6C,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,qBAAqB,OAAO,CAAC,mCAAmC,cAAc,CAAC,aAAa,OAAO,CAAC,mCAAmC,cAAc,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,iDAAiD,OAAO,CAAC,2BAA2B,WAAW,CAAC,YAAY,KAAK,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,4BAA4B,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,IAAI,EAAE,YAAY,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,kDAAkD,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,SAAS,GAAG,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,GAAG,CAAC,mBAAmB,QAAQ,CAAC,uBAAuB,SAAS,GAAG,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,IAAI,IAAI,EAAE,QAAQ,GAAK,CAAC,MAAM,KAAK,yEAAyE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,qEAAqE,CAAC,2BAA2B,WAAW,CAAC,qEAAqE,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,qCAAqC,cAAc,CAAC,uBAAuB,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,6CAA6C,iBAAiB,CAAC,uBAAuB,CAAC,qCAAqC,cAAc,CAAC,qDAAqD,EAAE,EAAE,qDAAqD,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,kBAAkB,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,oBAAoB,qDAAqD,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,6BAA6B,0CAA0C,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,uJAAuJ,CAAC,0EAA0E,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,4BAA4B,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,wCAAwC,iBAAiB,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,0DAA0D,CAAC,0CAA0C,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,4CAA4C,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,QAAQ,IAAI,EAAE,oBAAoB,QAAQ,GAAK,CAAC,MAAM,MAAM,kCAAkC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,KAAK,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,gCAAgC,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,gCAAgC,cAAc,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,GAAK,CAAC,KAAK,KAAK,oEAAoE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,6DAA6D,OAAO,CAAC,0BAA0B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,0BAA0B,WAAW,CAAC,+BAA+B,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,MAAM,2BAA2B,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,qBAAqB,QAAQ,CAAC,cAAc,OAAO,CAAC,qBAAqB,QAAQ,CAAC,sCAAsC,4CAA4C,OAAO,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,IAAI,MAAM,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,GAAK,CAAC,MAAM,uBAAuB,uCAAuC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,kBAAkB,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,GAAK,CAAC,MAAM,YAAY,2CAA2C,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,2BAA2B,WAAW,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,WAAW,QAAQ,KAAK,GAAK,CAAC,KAAK,QAAQ,0IAA0I,CAAC,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,gCAAgC,WAAW,CAAC,oBAAoB,EAAE,GAAG,CAAC,gCAAgC,WAAW,CAAC,KAAK,EAAE,IAAI,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,KAAK,KAAK,iCAAiC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,6BAA6B,WAAW,CAAC,+BAA+B,oDAAoD,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,gCAAgC,cAAc,CAAC,kBAAkB,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,CAAC,2BAA2B,WAAW,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mCAAmC,cAAc,CAAC,0BAA0B,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,gBAAgB,QAAQ,CAAC,UAAU,EAAE,EAAE,mBAAmB,OAAO,GAAK,CAAC,MAAM,MAAM,sDAAsD,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,0BAA0B,WAAW,CAAC,0BAA0B,OAAO,CAAC,6BAA6B,WAAW,CAAC,gBAAgB,OAAO,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,8BAA8B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,GAAK,CAAC,KAAK,KAAK,+EAA+E,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,gBAAgB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,2CAA2C,OAAO,CAAC,2BAA2B,WAAW,CAAC,cAAc,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,0BAA0B,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,mBAAmB,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,gBAAgB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,qCAAqC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,KAAK,mCAAmC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,GAAK,CAAC,KAAK,aAAa,8FAA8F,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,YAAY,OAAO,CAAC,6BAA6B,WAAW,CAAC,kBAAkB,yBAAyB,OAAO,CAAC,wBAAwB,WAAW,CAAC,6BAA6B,OAAO,CAAC,6BAA6B,WAAW,CAAC,sBAAsB,OAAO,CAAC,6BAA6B,WAAW,CAAC,YAAY,OAAO,CAAC,6BAA6B,WAAW,CAAC,6BAA6B,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,6CAA6C,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,oDAAoD,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,QAAQ,GAAK,CAAC,KAAK,0BAA0B,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,SAAS,CAAC,gBAAgB,QAAQ,CAAC,KAAK,SAAS,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,CAAC,2BAA2B,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,WAAW,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mCAAmC,cAAc,CAAC,aAAa,CAAC,mCAAmC,cAAc,CAAC,QAAQ,GAAK,CAAC,MAAM,cAAc,mDAAmD,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,CAAC,mBAAmB,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,KAAK,KAAK,kDAAkD,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,SAAS,CAAC,qBAAqB,QAAQ,CAAC,qEAAqE,uHAAuH,SAAS,CAAC,mBAAmB,QAAQ,CAAC,wBAAwB,iCAAiC,SAAS,CAAC,wBAAwB,WAAW,CAAC,KAAK,SAAS,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,SAAS,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,qCAAqC,cAAc,CAAC,OAAO,KAAK,GAAK,CAAC,KAAK,KAAK,kKAAkK,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,qBAAqB,QAAQ,CAAC,kJAAkJ,uKAAuK,SAAS,CAAC,qBAAqB,QAAQ,CAAC,8DAA8D,SAAS,CAAC,mBAAmB,QAAQ,CAAC,MAAM,SAAS,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,qDAAqD,SAAS,CAAC,mCAAmC,cAAc,CAAC,UAAU,UAAU,KAAK,GAAK,CAAC,KAAK,KAAK,wDAAwD,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,2BAA2B,WAAW,CAAC,iFAAiF,oFAAoF,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,mDAAmD,CAAC,mCAAmC,cAAc,CAAC,gCAAgC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,IAAI,MAAM,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,GAAK,CAAC,MAAM,SAAS,iCAAiC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,uDAAuD,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,yCAAyC,SAAS,CAAC,qBAAqB,QAAQ,CAAC,0DAA0D,SAAS,CAAC,6BAA6B,WAAW,CAAC,wDAAwD,SAAS,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,sBAAsB,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,KAAK,iDAAiD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,wCAAwC,CAAC,qGAAqG,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC,yDAAyD,CAAC,qCAAqC,GAAK,CAAC,KAAK,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,cAAc,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,GAAK,CAAC,MAAM,KAAK,wGAAwG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wBAAwB,OAAO,CAAC,sBAAsB,QAAQ,CAAC,UAAU,QAAQ,KAAK,GAAK,CAAC,IAAI,MAAM,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,mCAAmC,cAAc,CAAC,qBAAqB,qDAAqD,yEAAyE,SAAS,GAAG,CAAC,gCAAgC,cAAc,CAAC,sBAAsB,2EAA2E,8LAA8L,SAAS,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,SAAS,GAAG,CAAC,mCAAmC,cAAc,CAAC,4BAA4B,SAAS,GAAG,CAAC,mCAAmC,cAAc,CAAC,KAAK,WAAW,IAAI,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,QAAQ,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,QAAQ,8BAA8B,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iCAAiC,GAAK,CAAC,MAAM,aAAa,kCAAkC,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,KAAK,KAAK,0EAA0E,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,MAAM,EAAE,YAAY,CAAC,mBAAmB,QAAQ,CAAC,mBAAmB,MAAM,EAAE,SAAS,CAAC,2BAA2B,WAAW,CAAC,0CAA0C,MAAM,EAAE,YAAY,CAAC,kCAAkC,cAAc,CAAC,KAAK,MAAM,EAAE,eAAe,CAAC,6BAA6B,WAAW,CAAC,wHAAwH,MAAM,EAAE,YAAY,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,MAAM,EAAE,YAAY,CAAC,qCAAqC,cAAc,CAAC,qDAAqD,MAAM,EAAE,eAAe,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,EAAE,eAAe,CAAC,gCAAgC,cAAc,CAAC,KAAK,MAAM,EAAE,eAAe,CAAC,mCAAmC,cAAc,CAAC,iFAAiF,MAAM,EAAE,eAAe,CAAC,mCAAmC,cAAc,CAAC,KAAK,MAAM,EAAE,eAAe,CAAC,2CAA2C,iBAAiB,CAAC,QAAQ,MAAM,EAAE,mBAAmB,KAAK,GAAK,CAAC,KAAK,YAAY,+CAA+C,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,4BAA4B,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,GAAK,CAAC,MAAM,uBAAuB,mCAAmC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,WAAW,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,yBAAyB,OAAO,CAAC,gCAAgC,cAAc,CAAC,UAAU,UAAU,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,KAAK,KAAK,mCAAmC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,yCAAyC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,0BAA0B,WAAW,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,cAAc,mBAAmB,OAAO,CAAC,gCAAgC,cAAc,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,UAAU,KAAK,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,EAAE,gBAAgB,UAAU,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,uDAAuD,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,WAAW,KAAK,CAAC,UAAU,CAAC,gBAAgB,QAAQ,CAAC,kCAAkC,CAAC,gBAAgB,QAAQ,CAAC,mBAAmB,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,CAAC,qBAAqB,QAAQ,CAAC,8BAA8B,KAAK,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,GAAK,CAAC,MAAM,KAAK,sCAAsC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,WAAW,GAAK,CAAC,IAAI,MAAM,sCAAsC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,IAAI,KAAK,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAqB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,QAAQ,0BAA0B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,GAAK,CAAC,KAAK,UAAU,6CAA6C,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAK,GAAK,CAAC,MAAM,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,SAAS,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,wBAAwB,WAAW,CAAC,WAAW,CAAC,2BAA2B,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,GAAK,CAAC,MAAM,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,UAAU,CAAC,gCAAgC,cAAc,CAAC,SAAS,UAAU,CAAC,mBAAmB,QAAQ,CAAC,KAAK,SAAS,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,GAAK,CAAC,MAAM,KAAK,oDAAoD,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oCAAoC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,YAAY,GAAK,CAAC,KAAK,KAAK,iDAAiD,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,MAAM,GAAG,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,kBAAkB,oBAAoB,MAAM,GAAG,CAAC,mCAAmC,cAAc,CAAC,oBAAoB,QAAQ,GAAG,CAAC,6BAA6B,WAAW,CAAC,MAAM,MAAM,IAAI,KAAK,GAAK,CAAC,IAAI,MAAM,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,sBAAsB,QAAQ,EAAE,OAAO,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,GAAK,CAAC,MAAM,mBAAmB,+CAA+C,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,OAAO,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,0BAA0B,WAAW,CAAC,wCAAwC,gDAAgD,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,GAAK,CAAC,MAAM,UAAU,4BAA4B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,mFAAmF,OAAO,CAAC,mBAAmB,QAAQ,CAAC,wFAAwF,qGAAqG,OAAO,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,GAAK,CAAC,MAAM,UAAU,qCAAqC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,2BAA2B,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,IAAI,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,2BAA2B,aAAa,CAAC,SAAS,EAAE,EAAE,aAAa,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,0pBAA0pB,CAAC,IAAI,CAAC,wCAAwC,CAAC,kBAAkB,CAAC,6OAA6O,GAAK,CAAC,MAAM,mBAAmB,qDAAqD,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,UAAU,GAAK,CAAC,MAAM,MAAM,4BAA4B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,SAAS,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAK,CAAC,KAAK,KAAK,+EAA+E,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,KAAK,KAAK,uCAAuC,CAAC,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,QAAQ,KAAK,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAqB,QAAQ,EAAE,OAAO,GAAK,CAAC,IAAI,MAAM,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAO,GAAK,CAAC,KAAK,KAAK,mDAAmD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,GAAG,CAAC,qBAAqB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,UAAU,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,SAAS,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,IAAI,KAAK,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,mCAAmC,cAAc,CAAC,QAAQ,GAAK,CAAC,MAAM,IAAI,gDAAgD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,0BAA0B,WAAW,CAAC,4BAA4B,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,sBAAsB,GAAK,CAAC,KAAK,KAAK,yBAAyB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,QAAQ,KAAK,GAAK,CAAC,MAAM,KAAK,wHAAwH,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,0FAA0F,OAAO,CAAC,0BAA0B,WAAW,CAAC,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,mBAAmB,QAAQ,CAAC,6CAA6C,8EAA8E,SAAS,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,+CAA+C,iDAAiD,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,qBAAqB,QAAQ,CAAC,6IAA6I,OAAO,CAAC,6BAA6B,WAAW,CAAC,mBAAmB,OAAO,CAAC,qBAAqB,QAAQ,CAAC,aAAa,YAAY,QAAQ,MAAM,cAAgB,CAAC,IAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,2BAA2B,IAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,iBAAiB,IAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,0CAA0C,IAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,eAAe,IAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,IAAM,CAAC,MAAM,EAAE,uEAAuE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,YAAY,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,+BAA+B,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,6BAA6B,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,kEAAkE,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,mLAAmL,IAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,6BAA6B,WAAW,CAAC,sCAAsC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,mCAAmC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,wIAAwI,IAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,2BAA2B,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,IAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,oB,6gDCC1qhF,SAASC,EAAmB9mE,GAC1C,IAEI+mE,EACAr2E,EACAs2E,EAJJ,IAAqCl7E,MAAMgN,UAAU7c,MAAM4C,KAAKmhB,GAAhE,GAAOinE,EAAP,KAAcC,EAAd,KAAqBC,EAArB,KAA4BC,EAA5B,KAQA,GAAqB,kBAAVH,EAGN,MAAM,IAAI/kE,UAAU,wCAIzB,GANC6kE,EAAOE,EAMHC,GAA0B,kBAAVA,EAgBhB,KAAI5xB,EAAS4xB,GASb,MAAM,IAAI/7E,MAAJ,mCAAsC+7E,IAP5CC,GACHz2E,EAAWw2E,EACXF,EAAWG,GAEXH,EAAWE,OApBRE,GACH12E,EAAUy2E,EACVH,EAAWI,IAEX12E,OAAUzZ,EACV+vF,EAAWG,GAGRD,IACHx2E,E,+VAAU,CAAH,CAAK22E,eAAgBH,GAAUx2E,IAgBxC,MAAO,CACNq2E,OACAr2E,UACAs2E,YAMF,IAAM1xB,EAAW,SAAA5zC,GAAC,MAAiB,WAAb,EAAOA,IC5ChB4lE,EAAe,6CAefC,EAAoB,GAAH,OAZf,oCAYe,OAXd,WAWc,OAVjB,WAUiB,OATJ,+BASI,OARb,oCAQa,OANf,uB,q1DChBMC,E,keACnB,WAAYhkE,GAAM,a,4FAAA,SAChB,cAAMA,GAGNpuB,OAAO+qB,eAAP/qB,KAA4BoyF,EAAW1uE,WACvC,EAAKhc,KAAO,EAAK0jB,YAAY1jB,KALb,E,iGADoBqO,QCGzB,WAAS8Q,EAAGC,GACvBD,EAAIA,EAAErgB,MAAM,KACZsgB,EAAIA,EAAEtgB,MAAM,KAGZ,IAFA,IAAI6rF,EAAKxrE,EAAE,GAAGrgB,MAAM,KAChB8rF,EAAKxrE,EAAE,GAAGtgB,MAAM,KACX7F,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI4xF,EAAKxkE,OAAOskE,EAAG1xF,IACf6xF,EAAKzkE,OAAOukE,EAAG3xF,IACnB,GAAI4xF,EAAKC,EAAI,OAAO,EACpB,GAAIA,EAAKD,EAAI,OAAQ,EACrB,IAAK/wD,MAAM+wD,IAAO/wD,MAAMgxD,GAAK,OAAO,EACpC,GAAIhxD,MAAM+wD,KAAQ/wD,MAAMgxD,GAAK,OAAQ,EAEzC,OAAI3rE,EAAE,IAAMC,EAAE,GACHD,EAAE,GAAKC,EAAE,GAAK,EAAKD,EAAE,GAAKC,EAAE,IAAM,EAAI,GAEzCD,EAAE,IAAMC,EAAE,GAAK,EAAKD,EAAE,KAAOC,EAAE,IAAM,EAAI,G,qlBCpBrD,IAUM2rE,EAAuB,QAKRC,E,WACpB,WAAYd,GAAU,UAibhB,SAA0BA,GAChC,IAAKA,EACJ,MAAM,IAAI77E,MAAM,6EAKjB,IAAK48E,EAAUf,KAAce,EAAUf,EAASgB,WAC/C,MAAM,IAAI78E,MAAJ,6JAAoK48E,EAAUf,GAAY,yBAA2B5xF,OAAOD,KAAK6xF,GAAU9qF,KAAK,MAAQ,KAAO,KAAO+rF,EAAQjB,GAAY,KAAOA,EAAjS,MAxbNkB,CAAiBlB,GACjBxuF,KAAKwuF,SAAWA,EAChBmB,EAAWtpF,KAAKrG,KAAMwuF,G,sCAGvB,WACC,OAAO5xF,OAAOD,KAAKqD,KAAKwuF,SAASgB,WAAWzyF,QAAO,SAAAmsB,GAAC,MAAU,QAANA,O,gCAGzD,SAAmB0mE,GAClB,OAAO5vF,KAAKwuF,SAASgB,UAAUI,K,2BAGhC,WACC,KAAI5vF,KAAK6vF,IAAM7vF,KAAK8vF,IAAM9vF,KAAK+vF,IAI/B,OAAO/vF,KAAKwuF,SAASwB,eAAiBhwF,KAAKwuF,SAASyB,kB,wBAGrD,SAAWC,GACV,YAA4CzxF,IAArCuB,KAAKmwF,mBAAmBD,K,4BAGhC,SAAeE,GACd,GAAIpwF,KAAKqwF,8BAA8BD,GACtC,OAAO,EAER,GAAIpwF,KAAKgwF,iBACR,GAAIhwF,KAAKgwF,gBAAgBI,GACxB,OAAO,MAEF,CAEN,IAAME,EAAetwF,KAAKuwF,sBAAsBH,GAChD,GAAIE,GAAwC,IAAxBA,EAAa7yF,QAAoC,QAApB6yF,EAAa,GAC7D,OAAO,K,wCAKV,SAA2BF,GAC1B,OAAIpwF,KAAKgwF,kBACDhwF,KAAKgwF,gBAAgBI,IAErBpwF,KAAKqwF,8BAA8BD,K,qBAK5C,SAAQR,GACP,OAAO5vF,KAAKwwF,oBAAoBZ,K,iCAGjC,SAAoBA,EAAaQ,GAMhC,GAJIR,GAAeP,EAAqB/1B,KAAKs2B,KAC5CQ,EAAcR,EACdA,EAAc,MAEXA,GAA+B,QAAhBA,EAAuB,CACzC,IAAK5vF,KAAKywF,WAAWb,GACpB,MAAM,IAAIj9E,MAAJ,2BAA8Bi9E,IAErC5vF,KAAK0wF,cAAgB,IAAIC,EAAc3wF,KAAKmwF,mBAAmBP,GAAc5vF,WACvE,GAAIowF,EAAa,CACvB,IAAKpwF,KAAK4wF,eAAeR,GACxB,MAAM,IAAIz9E,MAAJ,gCAAmCy9E,IAE1CpwF,KAAK0wF,cAAgB,IAAIC,EAAc3wF,KAAK6wF,yBAAyBT,GAAcpwF,WAEnFA,KAAK0wF,mBAAgBjyF,EAEtB,OAAOuB,O,2CAGR,SAA8BowF,GAC7B,IAAME,EAAetwF,KAAKuwF,sBAAsBH,GAChD,GAAIE,EAAc,CAUjB,GAA4B,IAAxBA,EAAa7yF,QAA2C,IAA3B6yF,EAAa,GAAG7yF,OAChD,OAED,OAAO6yF,K,0CAIT,SAA6BF,GAC5B,IAAME,EAAetwF,KAAKqwF,8BAA8BD,GACxD,GAAIE,EACH,OAAOA,EAAa,K,sCAItB,SAAyBF,GACxB,IAAMR,EAAc5vF,KAAK8wF,6BAA6BV,GACtD,GAAIR,EACH,OAAO5vF,KAAKmwF,mBAAmBP,GAEhC,GAAI5vF,KAAKgwF,gBAAiB,CACzB,IAAMxB,EAAWxuF,KAAKgwF,gBAAgBI,GACtC,GAAI5B,EACH,OAAOA,MAEF,CAMN,IAAM8B,EAAetwF,KAAKuwF,sBAAsBH,GAChD,GAAIE,GAAwC,IAAxBA,EAAa7yF,QAAoC,QAApB6yF,EAAa,GAC7D,OAAOtwF,KAAKwuF,SAASgB,UAAU,U,gCAMlC,WACC,OAAOxvF,KAAK0wF,cAAcN,gB,uBAI3B,WACC,OAAOpwF,KAAK0wF,cAAcK,c,8BAI3B,WACC,OAAO/wF,KAAK0wF,cAAcM,qB,mCAI3B,WACC,OAAOhxF,KAAK0wF,cAAcO,0B,6BAI3B,WACC,OAAOjxF,KAAK0wF,cAAcQ,oB,qBAI3B,WACC,OAAOlxF,KAAK0wF,cAAcS,Y,sCAI3B,WACC,OAAOnxF,KAAK0wF,cAAcU,6B,yCAI3B,WACC,OAAOpxF,KAAK0wF,cAAcW,gC,2BAI3B,WACC,OAAOrxF,KAAK0wF,cAAcY,kB,sBAI3B,WACC,OAAOtxF,KAAK0wF,cAAca,a,kBAI3B,SAAKziF,GACJ,OAAO9O,KAAK0wF,cAAc5hF,KAAKA,K,iBAIhC,WACC,OAAO9O,KAAK0wF,cAAc/0C,Q,iCAG3B,WACC,OAAI37C,KAAK6vF,GAAW7vF,KAAKwuF,SAASgD,gCAC3BxxF,KAAKwuF,SAASiD,wB,+CAItB,SAAkCrB,GACjC,OAAOpwF,KAAKwwF,oBAAoBJ,K,sCAGjC,WACC,YAA8B3xF,IAAvBuB,KAAK0wF,kB,KAIRC,E,WACL,WAAYnC,EAAUkD,GAAsB,UAC3C1xF,KAAK0xF,qBAAuBA,EAC5B1xF,KAAKwuF,SAAWA,EAChBmB,EAAWtpF,KAAKrG,KAAM0xF,EAAqBlD,U,qCAG5C,WACC,OAAOxuF,KAAKwuF,SAAS,K,gDAStB,WACC,OAAOxuF,KAAK0xF,qBAAqBb,yBAAyB7wF,KAAKowF,iB,uBAIhE,WACC,IAAIpwF,KAAK6vF,KAAM7vF,KAAK8vF,GACpB,OAAO9vF,KAAKwuF,SAAS,K,8BAItB,WACC,IAAIxuF,KAAK6vF,KAAM7vF,KAAK8vF,GACpB,OAAO9vF,KAAKwuF,SAAS,M,mCAGtB,WACC,OAAIxuF,KAAK6vF,IAAM7vF,KAAK8vF,GAAW9vF,KAAKwuF,SAAS,GACtCxuF,KAAKwuF,SAAS,K,6BAItB,WACC,IAAIxuF,KAAK6vF,GACT,OAAO7vF,KAAKwuF,SAASxuF,KAAK8vF,GAAK,EAAI,K,yBAGpC,SAAYtB,GACX,OAAOA,EAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,EAAI,K,qBAM7C,WAAU,WACHqB,EAAUnxF,KAAK2xF,YAAY3xF,KAAKwuF,WAAaxuF,KAAK2xF,YAAY3xF,KAAK4xF,uCAAyC,GAClH,OAAOT,EAAQ9tF,KAAI,SAAA6lB,GAAC,OAAI,IAAI2oE,EAAO3oE,EAAG,Q,4BAGvC,WACC,OAAOlpB,KAAKwuF,SAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,EAAI,K,8CAGlD,SAAiCtB,GAChC,OAAOA,EAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,EAAI,K,0CAM7C,WACC,OAAO9vF,KAAK8xF,iCAAiC9xF,KAAKwuF,WAAaxuF,KAAK8xF,iCAAiC9xF,KAAK4xF,wC,uCAG3G,WACC,OAAO5xF,KAAKwuF,SAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,EAAI,K,sCAGlD,WAGC,OAAO9vF,KAAK+xF,6BAA+B/xF,KAAKgyF,mB,yCAGjD,WACC,OAAOhyF,KAAKwuF,SAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,EAAI,K,wDAGlD,WACC,QAAS9vF,KAAKwuF,SAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,EAAI,K,oEAOpD,WACC,OAAO9vF,KAAKiyF,2CAA2CjyF,KAAKwuF,WAC3DxuF,KAAKiyF,2CAA2CjyF,KAAK4xF,wC,2BAGvD,WACC,OAAO5xF,KAAKwuF,SAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,EAAI,M,mBAGlD,WACC,OAAO9vF,KAAKwuF,SAASxuF,KAAK6vF,GAAK,EAAI7vF,KAAK8vF,GAAK,GAAK,M,sBAGnD,WAGC,QAAI9vF,KAAKkyF,SAAmC,IAAxBlyF,KAAKkyF,QAAQz0F,WAKxBuC,KAAKkyF,U,kBAGf,SAAKpjF,GACJ,GAAI9O,KAAKuxF,YAAcY,EAAQnyF,KAAKkyF,QAASpjF,GAC5C,OAAO,IAAIsjF,EAAKD,EAAQnyF,KAAKkyF,QAASpjF,GAAO9O,Q,iBAI/C,WACC,OAAIA,KAAK6vF,IAAM7vF,KAAK8vF,GA9UK,SA+UlB9vF,KAAKwuF,SAAS,KA/UI,a,KAmVrBqD,E,WACL,WAAYQ,EAAQ7D,GAAU,UAC7BxuF,KAAKsyF,QAAUD,EACfryF,KAAKwuF,SAAWA,E,iCAGjB,WACC,OAAOxuF,KAAKsyF,QAAQ,K,oBAGrB,WACC,OAAOtyF,KAAKsyF,QAAQ,K,mCAGrB,WACC,OAAOtyF,KAAKsyF,QAAQ,IAAM,K,0CAG3B,WACC,OAAOtyF,KAAKsyF,QAAQ,IAAMtyF,KAAKwuF,SAAS+D,iC,oEAGzC,WACC,QAASvyF,KAAKsyF,QAAQ,IAAMtyF,KAAKwuF,SAASgE,2D,qEAG3C,WAMC,OAAOxyF,KAAKyyF,uBAAyBzyF,KAAKwyF,2D,gCAI3C,WACC,SAAOxyF,KAAKuyF,gCAEVG,EAAgCp5B,KAAKt5D,KAAKuyF,mC,iCAS7C,WACC,OAAOvyF,KAAKsyF,QAAQ,IAAMtyF,KAAKqyF,a,KAS3BK,EAAkC,cAElCN,E,WACL,WAAYtjF,EAAM0/E,GAAU,UAC3BxuF,KAAK8O,KAAOA,EACZ9O,KAAKwuF,SAAWA,E,iCAGjB,WACC,OAAIxuF,KAAKwuF,SAASqB,GAAW7vF,KAAK8O,KAC3B9O,KAAK8O,KAAK,K,6BAGlB,WACC,IAAI9O,KAAKwuF,SAASqB,GAClB,OAAO7vF,KAAK8O,KAAK,IAAM9O,KAAKwuF,SAAS0C,sB,KAIvC,SAASiB,EAAQD,EAAOpjF,GACvB,OAAQA,GACP,IAAK,aACJ,OAAOojF,EAAM,GACd,IAAK,SACJ,OAAOA,EAAM,GACd,IAAK,YACJ,OAAOA,EAAM,GACd,IAAK,eACJ,OAAOA,EAAM,GACd,IAAK,kBACJ,OAAOA,EAAM,GACd,IAAK,YACJ,OAAOA,EAAM,GACd,IAAK,MACJ,OAAOA,EAAM,GACd,IAAK,QACJ,OAAOA,EAAM,GACd,IAAK,OACJ,OAAOA,EAAM,GACd,IAAK,cACJ,OAAOA,EAAM,IAmBhB,IAAM3C,EAAY,SAAArmE,GAAC,MAAiB,WAAb,EAAOA,IAKxBumE,EAAU,SAAAvmE,GAAC,SAAWA,IA6BrB,SAASypE,EAAsBzC,EAAS1B,GAE9C,IADAA,EAAW,IAAIc,EAASd,IACXiC,WAAWP,GACvB,OAAO1B,EAAS0B,QAAQA,GAAS0C,qBAElC,MAAM,IAAIjgF,MAAJ,2BAA8Bu9E,IAG9B,SAAS2C,EAAmB3C,EAAS1B,GAG3C,YAAuC/vF,IAAhC+vF,EAASgB,UAAUU,GAG3B,SAASP,EAAWnB,GACnB,IAAQx9C,EAAYw9C,EAAZx9C,QACe,kBAAZA,GACVhxC,KAAK6vF,GAAiB,IAAZ7+C,EACVhxC,KAAK8vF,GAAiB,IAAZ9+C,EACVhxC,KAAK+vF,GAAiB,IAAZ/+C,EACVhxC,KAAK8yF,GAAiB,IAAZ9hD,GAELA,GAEgC,IAA1ByJ,EAAQzJ,EAvgBV,SAwgBRhxC,KAAK8vF,IAAK,GAC0B,IAA1Br1C,EAAQzJ,EAtgBV,UAugBRhxC,KAAK+vF,IAAK,EAEV/vF,KAAK8yF,IAAK,EANV9yF,KAAK6vF,IAAK,EC1gBb,IAOMkD,EAA4B,SAACC,GAAD,kBAAoBlE,EAApB,eAAuCkE,EAAvC,OASnB,SAASC,EAAuBC,GAsF9C,MAtG2B,QAgEpBH,EAzC0B,MA+EhB,KApCEI,iIAEZJ,EA7C0B,MAcR,MAkED,KAhCJI,2FAElBJ,EA9C+B,KAUR,MAmEA,KAtDA,QA2BvBA,EAhDwB,KAgDyB,KA4BZ,KAzBhBK,kDAEhBL,EAzDwB,MAYN,MAqEG,KArBPK,8CAEfL,EA5D2B,KAUR,MCP1B,IAKaM,EACZ,qBAEOtE,EAFP,MAGOD,EAHP,UAMCC,EACAD,EACD,KAWKwE,EAAmC,IAAIC,OAC5C,sBAGOxE,EAHP,MAIOD,EAJP,WAOC,KAEW0E,EACZH,EAEA,MAAQJ,IAA2B,KAI9BQ,EAA6B,IAAIF,OAEtC,sDAMCC,EACD,IACC,KASa,SAASE,EAAoB5iB,GAC3C,OAAOA,EAAOrzE,QL9FmB,GK+FhCg2F,EAA2Bn6B,KAAKwX,GC5FlC,IAAM6iB,EAAe,IAAIJ,OAAO,MAAQN,IAA2B,KAAM,K,s0BCElE,IAAMW,EAAS,CACrB,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KAGJ,SAASC,EAAWC,GAC1B,OAAOF,EAAOE,GAgBA,SAASC,EAAY19C,GAQnC,IAPA,IAOA,EAPI9yB,EAAS,GAOb,IAAwB8yB,EAAOjzC,MAAM,OAArC,aAA0C,KACnC4wF,EAAQH,EAD2B,SAErCG,IACHzwE,GAAUywE,GAGZ,OAAOzwE,E,y0BC/DO,SAAS0wE,GAA2B59C,GAQlD,IAPA,IAOA,EAPI9yB,EAAS,GAOb,IAAwB8yB,EAAOjzC,MAAM,OAArC,aAA0C,CACzCmgB,GAAU2wE,GAD+B,QACM3wE,IAAW,GAE3D,OAAOA,EAcD,SAAS2wE,GAA0BJ,EAAWK,GAEpD,GAAkB,MAAdL,EAAmB,CAGtB,GAAIK,EACH,OAED,MAAO,IAGR,OAAON,EAAWC,G,00BCnDJ,SAASM,GAAkBC,EAAgB7F,GACzD,OAKM,SAAS8F,EAAyBD,EAAgBvlF,EAAM0/E,GAC9D,IAAM+F,EAAY/F,EAAS1/E,KAAKA,GAS5B0lF,EAAmBD,GAAaA,EAAUrD,mBAAqB1C,EAAS0C,kBAI5E,IAAKsD,EACJ,MAAO,cAGR,GAAa,yBAAT1lF,EAAiC,CAGpC,IAAK0/E,EAAS1/E,KAAK,cAGlB,OAAOwlF,EAAyBD,EAAgB,SAAU7F,GAG3D,IAAMiG,EAAcjG,EAAS1/E,KAAK,UAC9B2lF,IAMHD,ECpCY,SAAqB/wE,EAAGC,GAGtC,IAFA,IAEA,EAFMgxE,EAASjxE,EAAEhgB,QAEjB,KAAsBigB,KAAtB,aAAyB,KAAd3iB,EAAc,QACpB0iB,EAAElf,QAAQxD,GAAW,GACxB2zF,EAAOv3F,KAAK4D,GAId,OAAO2zF,EAAOC,MAAK,SAAClxE,EAAGC,GAAJ,OAAUD,EAAIC,KD2BZkxE,CAAYJ,EAAkBC,EAAYvD,yBAa1D,GAAIpiF,IAASylF,EACjB,MAAO,iBAGR,IAAMM,EAAgBR,EAAe52F,OAU/Bq3F,EAAiBN,EAAiB,GAExC,GAAIM,IAAmBD,EACtB,MAAO,cAGR,GAAIC,EAAiBD,EACpB,MAAO,YAGR,GAAIL,EAAiBA,EAAiB/2F,OAAS,GAAKo3F,EACnD,MAAO,WAIR,OAAOL,EAAiBjwF,QAAQswF,EAAe,IAAM,EAAI,cAAgB,iBAjFlEP,CAAyBD,OAAgB51F,EAAW+vF,GE+DrD,SAASuG,GAAiBV,EAAgB7F,GAChD,OAAQ4F,GAAkBC,EAAgB7F,IACzC,IAAK,cACJ,OAAO,EAKR,QACC,OAAO,GCtEK,SAASwG,GAAgBzG,EAAM0G,GAI7C,OADA1G,EAAOA,GAAQ,GACR,IAAIgF,OAAO,OAAS0B,EAAqB,MAAM37B,KAAKi1B,G,00BCN5D,IAAM2G,GAA6B,CAClC,SACA,eACA,YACA,cACA,OACA,kBACA,QACA,MACA,aAIc,SAASC,GAAc9qE,EAAOnS,EAASs2E,GAQrD,GAJAt2E,EAAUA,GAAW,GAIhBmS,EAAM6lE,QAAX,EAIA1B,EAAW,IAAIc,EAASd,IAEfgC,oBAAoBnmE,EAAM6lE,QAAS7lE,EAAMuoE,oBAElD,IAAMyB,EAAiBn8E,EAAQ43E,GAAKzlE,EAAMgqE,eAAiBhqE,EAAM+qE,MAMjE,GAAKJ,GAAgBX,EAAgB7F,EAASyC,yBAA9C,CAKA,GAAIoE,GAAoBhB,EAAgB,aAAc7F,GAKrD,OAAIA,EAAS1/E,KAAK,WAAmD,KAAtC0/E,EAAS1/E,KAAK,UAAUwmF,UAC/C,uBAUH9G,EAAS1/E,KAAK,UAOfumF,GAAoBhB,EAAgB,SAAU7F,GAC1C,uBAGD,aAVC,uBAaT,IAAK,IAAL,OAAmB0G,MAAnB,aAA+C,KAApCpmF,EAAoC,QAC9C,GAAIumF,GAAoBhB,EAAgBvlF,EAAM0/E,GAC7C,OAAO1/E,KAKH,SAASumF,GAAoBhB,EAAgBvlF,EAAM0/E,GAEzD,UADA1/E,EAAO0/E,EAAS1/E,KAAKA,MACPA,EAAKwmF,eASfxmF,EAAKoiF,mBACRpiF,EAAKoiF,kBAAkB3sF,QAAQ8vF,EAAe52F,QAAU,IAGlDu3F,GAAgBX,EAAgBvlF,EAAKwmF,YCtF9B,SAASC,GAA8BnF,EAAaiE,EAAgB7F,GAClF,IACIgH,EADc,IAAIlG,EAASd,GACG6B,8BAA8BD,GAChE,OAAKoF,EAGEA,EAAkBz4F,QAAO,SAACmzF,GAChC,OAIF,SAA4CmE,EAAgBnE,EAAS1B,GACpE,IAAMiH,EAAY,IAAInG,EAASd,GAE/B,GADAiH,EAAUjF,oBAAoBN,GAC1BuF,EAAU/E,cAAcQ,kBAAkB3sF,QAAQ8vF,EAAe52F,SAAW,EAC/E,OAAO,EAER,OAAO,EAVCi4F,CAAmCrB,EAAgBnE,EAAS1B,MAH5D,GCmBM,SAASmH,GAAiCC,GACxD,OAAOA,EAAgBhyF,QAAQ,IAAI2vF,OAAJ,WAAexE,EAAf,MAAsC,KAAM,KAAK56C,OC3B1E,IAAM0hD,GAAsB,SAEpB,SAASC,GACvBhlB,EACAuhB,EAFc,GASb,IALA0D,EAKA,EALAA,uBACAC,EAIA,EAJAA,mBAKKJ,GADL,EAHAK,YAGA,EAFAzH,SAGuB1d,EAAOltE,QAC9B,IAAI2vF,OAAOlB,EAAOiD,WAClBS,EACG1D,EAAO6D,sBAeRF,GAAsB3D,EAAOE,+BAC1BF,EAAOA,SAASzuF,QAAQiyF,GAAqBxD,EAAOE,gCACpDF,EAAOA,WAGb,OAAI0D,EACIJ,GAAiCC,GAElCA,ECjCR,IAAMO,GAA4B,yC,ugDCAlC,IAAMC,GAAkB,CACvBC,gBAAiB,SAACT,EAAiBU,EAAW9H,GAA7B,gBAA6CoH,GAA7C,OAA+DpH,EAAS7yC,OAAxE,OAAgF26C,KAkBnF,SAASC,GAAalsE,EAAOgoE,EAAQn6E,EAASs2E,GAU5D,GAPCt2E,EADGA,EACI,SAAQk+E,IAAoBl+E,GAEzBk+E,GAGX5H,EAAW,IAAIc,EAASd,GAEpBnkE,EAAM6lE,SAA6B,QAAlB7lE,EAAM6lE,QAAmB,CAE7C,IAAK1B,EAASiC,WAAWpmE,EAAM6lE,SAC9B,MAAM,IAAIv9E,MAAJ,2BAA8B0X,EAAM6lE,UAE3C1B,EAAS0B,QAAQ7lE,EAAM6lE,aAEnB,KAAI7lE,EAAMuoE,mBAGV,OAAOvoE,EAAM+qE,OAAS,GAF1B5G,EAASgC,oBAAoBnmE,EAAMuoE,oBAIpC,IAMI9hB,EANE8hB,EAAqBpE,EAASoE,qBAE9ByB,EAAiBn8E,EAAQ43E,GAAKzlE,EAAMgqE,eAAiBhqE,EAAM+qE,MAMjE,OAAQ/C,GACP,IAAK,WAGJ,OAAKgC,EAIEmC,GADP1lB,EAAS2lB,GAAqBpC,EAAgBhqE,EAAM4rE,YAAa,WAAYzH,EAAUt2E,GAC3DmS,EAAMsxB,IAAK6yC,EAAUt2E,EAAQm+E,iBAHjD,GAKT,IAAK,gBAGJ,OAAKhC,GAGLvjB,EAAS2lB,GAAqBpC,EAAgB,KAAM,gBAAiB7F,EAAUt2E,GAExEs+E,GADP1lB,EAAM,WAAO8hB,EAAP,YAA6B9hB,GACPzmD,EAAMsxB,IAAK6yC,EAAUt2E,EAAQm+E,kBAJxD,WAAWzD,GAMb,IAAK,QAEJ,iBAAWA,GAAX,OAAgCyB,GAEjC,IAAK,UACJ,OCnCI,YAAwC,IAAfvjB,EAAe,EAAfA,OAAQn1B,EAAO,EAAPA,IACvC,IAAKm1B,EACJ,MAAO,GAER,GAAkB,MAAdA,EAAO,GACV,MAAM,IAAIn+D,MAAJ,6DAEP,MAAO,OAAP,OAAcm+D,GAAd,OAAuBn1B,EAAM,QAAUA,EAAM,ID4BpC+6C,CAAc,CACpB5lB,OAAM,WAAM8hB,GAAN,OAA2ByB,GACjC14C,IAAKtxB,EAAMsxB,MAOb,IAAK,MACJ,IAAKzjC,EAAQy+E,YACZ,OAUD,OAAOH,GAgDV,SACCnC,EACA4B,EACArD,EACA+D,EACAnI,GAIA,GAF+BmE,EAAsBgE,EAAanI,EAASA,YAE5CoE,EAAoB,CAClD,IAAMgD,EAAkBa,GAAqBpC,EAAgB4B,EAAa,WAAYzH,GAGtF,MAA2B,MAAvBoE,EACIA,EAAqB,IAAMgD,EAW5BA,EAER,IAAMgB,EDtKQ,SAAsB1G,EAASE,EAAa5B,GAC1D,IAAMqI,EAAkB,IAAIvH,EAASd,GAErC,OADAqI,EAAgBrG,oBAAoBN,EAASE,GACzCyG,EAAgB7F,mBACZ6F,EAAgB7F,mBAEpBmF,GAA0B78B,KAAKu9B,EAAgB9F,aAC3C8F,EAAgB9F,iBADxB,ECgKkB+F,CAAaH,OAAal4F,EAAW+vF,EAASA,UAChE,GAAIoI,EACH,gBAAUA,EAAV,YAAuBhE,EAAvB,YAA6C6D,GAAqBpC,EAAgB,KAAM,gBAAiB7F,IApFhFuI,CACvB1C,EACAhqE,EAAM4rE,YACNrD,EACA16E,EAAQy+E,YACRnI,GAEoCnkE,EAAMsxB,IAAK6yC,EAAUt2E,EAAQm+E,iBAEnE,QACC,MAAM,IAAI1jF,MAAJ,iEAAoE0/E,EAApE,OAIT,SAASoE,GAAqB3lB,EAAQmlB,EAAae,EAAUxI,EAAUt2E,GACtE,IAAMm6E,EAgBA,SAA+B4E,EAAkBC,GACvD,eAAqBD,KAArB,aAAuC,KAA5B5E,EAA4B,QAItC,GAAIA,EAAO8E,wBAAwB15F,OAAS,EAAG,CAE9C,IAAM25F,EAA2B/E,EAAO8E,wBAAwB9E,EAAO8E,wBAAwB15F,OAAS,GAExG,GAAyD,IAArDy5F,EAAgB9mF,OAAOgnF,GAC1B,SAIF,GAAIpC,GAAgBkC,EAAiB7E,EAAOiD,WAC3C,OAAOjD,GA/BMgF,CAAsB7I,EAAS2C,UAAWrgB,GACzD,OAAKuhB,EAGEyD,GACNhlB,EACAuhB,EACA,CACC0D,uBAAqC,kBAAbiB,EACxBhB,oBAAoB3D,EAAOG,2DAA6Dt6E,IAAsC,IAA3BA,EAAQ85E,eAC3GiE,cACAzH,aATM1d,EAkCT,SAAS0lB,GAAaZ,EAAiBj6C,EAAK6yC,EAAU6H,GACrD,OAAO16C,EAAM06C,EAAgBT,EAAiBj6C,EAAK6yC,GAAYoH,E,o2BE/IhE,IAEqB0B,G,WAOpB,WAAYC,EAA6BlD,EAAgB7F,GACxD,G,4FADkE,UAC7D+I,EACJ,MAAM,IAAI7tE,UAAU,gDAErB,IAAK2qE,EACJ,MAAM,IAAI3qE,UAAU,+BAErB,IAAK8kE,EACJ,MAAM,IAAI9kE,UAAU,yBAErB,MA0FF,SAAyC6tE,EAA6BC,GACrE,IAAItH,EACA0C,EAEEpE,EAAW,IAAIc,EAASkI,GANR14F,EASJy4F,EATc,aAAaj+B,KAAKx6D,IAUjDoxF,EAAUqH,EACV/I,EAASgC,oBAAoBN,GAC7B0C,EAAqBpE,EAASoE,sBAE9BA,EAAqB2E,EAdD,IAACz4F,EAuBtB,MAAO,CACNoxF,UACA0C,sBAjHwC6E,CACvCF,EACA/I,GAFO0B,EAAR,EAAQA,QAAS0C,EAAjB,EAAiBA,mBAIjB5yF,KAAKkwF,QAAUA,EACflwF,KAAK4yF,mBAAqBA,EAC1B5yF,KAAKq0F,eAAiBA,EACtBr0F,KAAK8wE,OAAS,IAAM9wE,KAAK4yF,mBAAqB5yF,KAAKq0F,eAKnDr0F,KAAK03F,YAAc,kBAAMlJ,G,6CAG1B,SAAO7yC,GACN37C,KAAK27C,IAAMA,I,kCAGZ,WACC,OAAI37C,KAAKkwF,QACD,CAAClwF,KAAKkwF,SAEPqF,GACNv1F,KAAK4yF,mBACL5yF,KAAKq0F,eACLr0F,KAAK03F,iB,wBAIP,WACC,OT1Ca,SAA+BrtE,EAAOnS,EAASs2E,GAQ7D,QANgB/vF,IAAZyZ,IACHA,EAAU,IAGXs2E,EAAW,IAAIc,EAASd,GAEpBt2E,EAAQ43E,GAAI,CACf,IAAKzlE,EAAMuoE,mBACV,MAAM,IAAIjgF,MAAM,sCAEjB67E,EAASgC,oBAAoBnmE,EAAMuoE,wBAC7B,CACN,IAAKvoE,EAAM+qE,MACV,OAAO,EAER,GAAI/qE,EAAM6lE,QAAS,CAClB,IAAK1B,EAASiC,WAAWpmE,EAAM6lE,SAC9B,MAAM,IAAIv9E,MAAJ,2BAA8B0X,EAAM6lE,UAE3C1B,EAAS0B,QAAQ7lE,EAAM6lE,aACjB,CACN,IAAK7lE,EAAMuoE,mBACV,MAAM,IAAIjgF,MAAM,sCAEjB67E,EAASgC,oBAAoBnmE,EAAMuoE,qBAKrC,GAAIpE,EAAS0C,kBACZ,OAAO6D,GAAiB1qE,EAAM+qE,OAAS/qE,EAAMgqE,eAAgB7F,GAQ7D,GAAInkE,EAAMuoE,oBAAsBpE,EAASmJ,2BAA2BttE,EAAMuoE,oBAGzE,OAAO,EAEP,MAAM,IAAIjgF,MAAM,kGSHVoiF,CAAiB/0F,KAAM,CAAE8vF,IAAI,GAAQ9vF,KAAK03F,iB,qBAGlD,WACC,OCxBoCrtE,EDwBfrqB,KCxBsBkY,EDwBhB,CAAE43E,IAAI,GCxBmBtB,EDwBXxuF,KAAK03F,cCpB/Cx/E,EAAUA,GAAW,IAErBs2E,EAAW,IAAIc,EAASd,IAWfgC,oBAAoBnmE,EAAM6lE,QAAS7lE,EAAMuoE,oBAI9CpE,EAAS+C,gBACgD9yF,IAArD02F,GAAc9qE,EAAOnS,EAASs2E,EAASA,UAMxCwG,GADgB98E,EAAQ43E,GAAKzlE,EAAMgqE,eAAiBhqE,EAAM+qE,MAC1B5G,EAASyC,yBA5BlC,IAAuB5mE,EAAOnS,EAASs2E,I,6BD2BrD,WAEC,OADiB,IAAIc,EAAStvF,KAAK03F,eACnBC,2BAA2B33F,KAAK4yF,sB,qBAGjD,SAAQgF,GACP,OAAO53F,KAAK8wE,SAAW8mB,EAAY9mB,QAAU9wE,KAAK27C,MAAQi8C,EAAYj8C,M,qBAkBvE,WACC,OAAOw5C,GAAcn1F,KAAM,CAAE8vF,IAAI,GAAQ9vF,KAAK03F,iB,oBAG/C,SAAOrF,EAAQn6E,GACd,OAAOq+E,GACNv2F,KACAqyF,EACAn6E,EAAU,GAAH,MAAQA,GAAR,IAAiB43E,IAAI,IAAS,CAAEA,IAAI,GAC3C9vF,KAAK03F,iB,4BAIP,SAAex/E,GACd,OAAOlY,KAAKqyF,OAAO,WAAYn6E,K,iCAGhC,SAAoBA,GACnB,OAAOlY,KAAKqyF,OAAO,gBAAiBn6E,K,oBAGrC,SAAOA,GACN,OAAOlY,KAAKqyF,OAAO,UAAWn6E,Q,qFE5GhC,IAAM2/E,GAA0B,IAAItE,OAAO,KAAOzE,EAAe,MAElD,SAASgJ,GAAehnB,EAAQof,EAASE,EAAa5B,GACpE,GAAK0B,EAAL,CAIA,IAAM2G,EAAkB,IAAIvH,EAASd,GACrCqI,EAAgBrG,oBAAoBN,EAASE,GAC7C,IAAM2H,EAAmB,IAAIxE,OAAOsD,EAAgB9F,aACpD,GAAwC,IAApCjgB,EAAO1gE,OAAO2nF,GAAlB,CASA,IAAMC,GALNlnB,EAASA,EAAOrtE,MAAMqtE,EAAO1tD,MAAM20E,GAAkB,GAAGt6F,SAK3B2lB,MAAMy0E,IACnC,KAAIG,GAAqC,MAApBA,EAAc,IAAcA,EAAc,GAAGv6F,OAAS,GACjD,MAArBu6F,EAAc,IAInB,OAAOlnB,ICfO,SAASmnB,GAAkDnnB,EAAQ0d,GACjF,GAAI1d,GAAU0d,EAASkC,cAAcU,2BAA4B,CAIhE,IAAM8G,EAAgB,IAAI3E,OAAO,OAAS/E,EAASkC,cAAcU,2BAA6B,KACxF+G,EAAcD,EAAc/lE,KAAK2+C,GACvC,GAAIqnB,EAAa,CAChB,IAAI9D,EACA4B,EAuDAjE,EAtCEoG,EAAsBD,EAAY16F,OAAS,EAC3C46F,EAAoBD,EAAsB,GAAKD,EAAYC,GACjE,GAAI5J,EAAS6C,+BAAiCgH,EAC7ChE,EAAiBvjB,EAAOltE,QACvBs0F,EACA1J,EAAS6C,+BAIN+G,EAAsB,IACzBnC,EAAckC,EAAY,QASvB,CAMJ,IAAMG,EAA6BH,EAAY,GAC/C9D,EAAiBvjB,EAAOrtE,MAAM60F,EAA2B76F,QAGrD46F,IACHpC,EAAckC,EAAY,IAS5B,GAAIE,EAAmB,CACtB,IAAME,EAA0CznB,EAAOvsE,QAAQ4zF,EAAY,IAC5CrnB,EAAOrtE,MAAM,EAAG80F,KAOhB/J,EAASkC,cAAcsB,mBACrDA,EAAiBxD,EAASkC,cAAcsB,uBAGzCA,EAAiBmG,EAAY,GAE9B,MAAO,CACN9D,iBACArC,iBACAiE,gBAID,MAAO,CACN5B,eAAgBvjB,GCxFL,SAAS0nB,GAAsB1nB,EAAQ0d,GAUrD,MAGIyJ,GACHnnB,EACA0d,GAJAyH,EADD,EACCA,YACA5B,EAFD,EAECA,eAMD,GAAIA,IAAmBvjB,EAAQ,CAC9B,IAuCF,SAA2C2nB,EAAsBC,EAAqBlK,GAGrF,GAAIwG,GAAgByD,EAAsBjK,EAASyC,2BACjD+D,GAAgB0D,EAAqBlK,EAASyC,yBAC/C,OAAO,EAeR,OAAO,EA3DD0H,CAAkC7nB,EAAQujB,EAAgB7F,GAE9D,MAAO,CAAE6F,eAAgBvjB,GAI1B,GAAI0d,EAAS0C,oBAwDf,SAA4CmD,EAAgB7F,GAC3D,OAAQ4F,GAAkBC,EAAgB7F,IACzC,IAAK,YACL,IAAK,iBAIJ,OAAO,EACR,QACC,OAAO,GAxDFoK,CAAmCvE,EAAgB7F,GAEvD,MAAO,CAAE6F,eAAgBvjB,GAK5B,MAAO,CAAEujB,iBAAgB4B,eCvCX,SAAS4C,GACvB/nB,EACAof,EACAE,EACA5B,GAEA,IAAMoE,EAAqB1C,EAAUyC,EAAsBzC,EAAS1B,GAAY4B,EAChF,GAA2C,IAAvCtf,EAAOvsE,QAAQquF,GAA2B,EAC7CpE,EAAW,IAAIc,EAASd,IACfgC,oBAAoBN,EAASE,GACtC,IAAM0I,EAAwBhoB,EAAOrtE,MAAMmvF,EAAmBn1F,QAE7Cs7F,EACbP,GACHM,EACAtK,GAHA6F,eAMAA,EACGmE,GACH1nB,EACA0d,GAHA6F,eAaD,IAEGW,GAAgBX,EAAgB7F,EAASyC,0BAE1C+D,GAAgB+D,EAA+BvK,EAASyC,0BAGT,aAAhDmD,GAAkBC,EAAgB7F,GAElC,MAAO,CACNoE,qBACA9hB,OAAQgoB,GAIX,MAAO,CAAEhoB,UCtCK,SAASkoB,GACvBloB,EACAof,EACAE,EACA5B,GAEA,IAAK1d,EACJ,MAAO,GAGR,IAAImoB,EASJ,GAAkB,MAAdnoB,EAAO,GAAY,CAGtB,IAAMooB,EAAmBpB,GAAehnB,EAAQof,EAASE,EAAa5B,GAItE,IAAI0K,GAAoBA,IAAqBpoB,EAGtC,CAKN,GAAIof,GAAWE,EAAa,CAC3B,MAGIyI,GACH/nB,EACAof,EACAE,EACA5B,GANAoE,EADD,EACCA,mBACQuG,EAFT,EAECroB,OAOD,GAAI8hB,EACH,MAAO,CACNwG,yBAA0B,gCAC1BxG,qBACA9hB,OAAQqoB,GAIX,MAAO,CAGNroB,UA5BDmoB,GAAwB,EACxBnoB,EAAS,IAAMooB,EAiCjB,GAAkB,MAAdpoB,EAAO,GACV,MAAO,GAGR0d,EAAW,IAAIc,EAASd,GAYxB,IADA,IAAIjxF,EAAI,EACDA,EAAI,G1B5F2B,G0B4FKA,GAAKuzE,EAAOrzE,QAAQ,CAC9D,IAAMm1F,EAAqB9hB,EAAOrtE,MAAM,EAAGlG,GAC3C,GAAIixF,EAASoC,eAAegC,GAE3B,OADApE,EAASgC,oBAAoBoC,GACtB,CACNwG,yBAA0BH,EAAwB,uBAAyB,6BAC3ErG,qBACA9hB,OAAQA,EAAOrtE,MAAMlG,IAGvBA,IAGD,MAAO,G,00BC9GO,SAAS87F,GAA2BC,EAApC,GAIZ,IAHF9J,EAGE,EAHFA,UACAX,EAEE,EAFFA,eACAL,EACE,EADFA,SAGAA,EAAW,IAAIc,EAASd,GAIxB,IAFA,IAEA,EAFM+K,EAAoB,GAE1B,KAAsB/J,KAAtB,aAAiC,KAAtBU,EAAsB,QAShC,GARA1B,EAAS0B,QAAQA,GAQb1B,EAAS8C,iBACZ,GAAIgI,GACsD,IAAzDA,EAAoBlpF,OAAOo+E,EAAS8C,iBACpC,OAAOpB,OAKJ,GAAIiF,GAAc,CAAEC,MAAOkE,EAAqBpJ,gBAAWzxF,EAAW+vF,EAASA,UAAW,CAE9F,IAAIK,EAMH,OAAOqB,EALP,GAAIA,IAAYrB,EACf,OAAOqB,EAERqJ,EAAkBp8F,KAAK+yF,IAQ1B,GAAIqJ,EAAkB97F,OAAS,EAC9B,OAAO87F,EAAkB,GCzCZ,SAASC,GAAwBpJ,EAAjC,GAIZ,IAHckJ,EAGd,EAHFjF,eACAxF,EAEE,EAFFA,eACAL,EACE,EADFA,SAQA,IAAMgH,EAAoBhH,EAAS6B,8BAA8BD,GACjE,GAAKoF,EAKL,OAAiC,IAA7BA,EAAkB/3F,OACd+3F,EAAkB,GAEnB6D,GAA2BC,EAAqB,CACtD9J,UAAWgG,EACX3G,iBACAL,SAAUA,EAASA,WChBd,IAqBDiL,GAAwC,IAAIlG,OAdjD,kLAcuF,KAiBlFmG,GAA8B,IAAInG,OANZ,+KAMwC,KClCrD,SAASoG,GAAwDC,EAAjE,GAEZ,IAMEC,EAPJC,EACE,EADFA,4BAEMC,ED4CQ,SAA6BC,GAC3C,IAAMC,EAAsBD,EAAoBz1F,QAXX,mBAarC,GAAI01F,EAAsB,EACzB,OAAO,KAGR,IAAMC,EAAoBD,EAjBW,kBAiBkCx8F,OAEvE,GAAIy8F,GAAqBF,EAAoBv8F,OAC5C,MAAO,GAGR,IAAM08F,EAAkBH,EAAoBz1F,QAAQ,IAAK21F,GAEzD,OAAIC,GAAmB,EACfH,EAAoBv1F,UAAUy1F,EAAmBC,GAEjDH,EAAoBv1F,UAAUy1F,GC9DjBE,CAAoBR,GACzC,IDuEM,SAA6BG,GACnC,OAAqB,OAAjBA,GAIwB,IAAxBA,EAAat8F,SAKVg8F,GAAsCngC,KAAKygC,IACjDL,GAA4BpgC,KAAKygC,IClF7BM,CAAoBN,GACxB,MAAM,IAAI/K,EAAW,gBAKtB,GAAqB,OAAjB+K,EAGHF,EAAoBC,EAA4BF,IAAkB,OAC5D,CACNC,EAAoB,GDnBG,MCuBnBE,EAAax2F,OAAO,KACvBs2F,GAAqBE,GAQtB,IACIO,EADEC,EAAuBX,EAAcr1F,QDQd,QCF5B+1F,EADGC,GAAwB,EACHA,EDEI,OCFmC98F,OAEvC,EAEzB,IAAMw8F,EAAsBL,EAAcr1F,QDDN,mBCEpCs1F,GAAqBD,EAAcn1F,UAAU61F,EAAuBL,GAMrE,IAAMO,EAAcX,EAAkBt1F,QDPC,UCiBvC,GATIi2F,EAAc,IACjBX,EAAoBA,EAAkBp1F,UAAU,EAAG+1F,IAQ1B,KAAtBX,EACH,OAAOA,ECzCT,IAGMY,GAA6B,IAAIlH,OAAO,WAAmBzE,EAAe,KAK1E4L,GAAiC,IAAInH,OAAO,KAAOzE,EAAP,QA4BnC,SAASzzB,GAAMkzB,EAAMr2E,EAASs2E,GAQ5C,GALAt2E,EAAUA,GAAW,GAErBs2E,EAAW,IAAIc,EAASd,GAGpBt2E,EAAQ22E,iBAAmBL,EAASiC,WAAWv4E,EAAQ22E,gBAAiB,CAC3E,GAAI32E,EAAQ43E,GACX,MAAM,IAAId,EAAW,mBAEtB,MAAM,IAAIr8E,MAAJ,2BAA8BuF,EAAQ22E,iBAI7C,MAuJD,SAAoBN,EAAMuB,EAAI6K,GAM7B,IAAI7pB,EAAS6oB,GAAwDpL,EAAM,CAC1EuL,4BAA6B,SAACvL,GAAD,OAtC/B,SAAqCA,EAAMoM,EAASC,GACnD,IAAKrM,EACJ,OAED,GAAIA,EAAK9wF,OAhLsB,IAgLY,CAC1C,GAAIm9F,EACH,MAAM,IAAI5L,EAAW,YAEtB,OAED,IAAgB,IAAZ2L,EACH,OAAOpM,EAGR,IAAMsM,EAAWtM,EAAKn+E,OAAOqqF,IAC7B,GAAII,EAAW,EACd,OAED,OAAO,EAELp3F,MAAMo3F,GAENj3F,QAAQ82F,GAAgC,IAgBFZ,CAA4BvL,EAAMoM,EAAS7K,MAGnF,IAAKhf,EACJ,MAAO,GAER,IAAK4iB,EAAoB5iB,GACxB,O1B9IK,SAAkCA,GACxC,OAAOwiB,EAAiCh6B,KAAKwX,G0B6IxCgqB,CAAyBhqB,GACrB,CAAEr+D,MAAO,aAEV,GAIR,IAAMsoF,EzBrPQ,SAA0BjqB,GACxC,IAAM15B,EAAQ05B,EAAO1gE,OAAOujF,GAC5B,GAAIv8C,EAAQ,EACX,MAAO,GAOR,IAHA,IAAM4jD,EAAyBlqB,EAAOrtE,MAAM,EAAG2zC,GACzCqiB,EAAUqX,EAAO1tD,MAAMuwE,GACzBp2F,EAAI,EACDA,EAAIk8D,EAAQh8D,QAAQ,CAC1B,GAAIg8D,EAAQl8D,GACX,MAAO,CACNuzE,OAAQkqB,EACRr/C,IAAK8d,EAAQl8D,IAGfA,KyBoO6B09F,CAAiBnqB,GAC/C,GAAIiqB,EAAsBp/C,IACzB,OAAOo/C,EAER,MAAO,CAAEjqB,UAhL4CoqB,CAAW3M,EAAMr2E,EAAQ43E,GAAI53E,EAAQyiF,SAA1EQ,EAAhB,EAAQrqB,OAA8Bn1B,EAAtC,EAAsCA,IAAKlpC,EAA3C,EAA2CA,MAG3C,IAAK0oF,EAAsB,CAC1B,GAAIjjF,EAAQ43E,GAAI,CACf,GAAc,cAAVr9E,EACH,MAAM,IAAIu8E,EAAW,aAEtB,MAAM,IAAIA,EAAW,gBAEtB,MAAO,GAGR,MA4LD,SACCmM,EACAtM,EACAuM,EACA5M,GAGA,IAQI0B,EARJ,EAA+D8I,GAC9D/E,GAA2BkH,GAC3BtM,EACAuM,EACA5M,EAASA,UAJJ4K,EAAN,EAAMA,yBAA0BxG,EAAhC,EAAgCA,mBAAoB9hB,EAApD,EAAoDA,OASpD,GAAI8hB,EACHpE,EAASgC,oBAAoBoC,OAIzB,KAAI9hB,IAAW+d,IAAkBuM,EAcjC,MAAO,GAbX5M,EAASgC,oBAAoB3B,EAAgBuM,GACzCvM,IACHqB,EAAUrB,GASX+D,EAAqBwI,GAAsBzI,EAAsB9D,EAAgBL,EAASA,UAI3F,IAAK1d,EACJ,MAAO,CACNsoB,2BACAxG,sBAIF,MAGI4F,GACHvE,GAA2BnjB,GAC3B0d,GAJA6F,EADD,EACCA,eACA4B,EAFD,EAECA,YAgBKoF,EAAe7B,GAAwB5G,EAAoB,CAChEyB,iBACAxF,iBACAL,aAEG6M,IACHnL,EAAUmL,EAEW,QAAjBA,GAKH7M,EAAS0B,QAAQA,IAInB,MAAO,CACNA,UACA0C,qBACAwG,2BACA/E,iBACA4B,eA1QGqF,CACHH,EACAjjF,EAAQ22E,eACR32E,EAAQkjF,mBACR5M,GATA0B,EADD,EACCA,QACAmE,EAFD,EAECA,eACAzB,EAHD,EAGCA,mBACAwG,EAJD,EAICA,yBACAnD,EALD,EAKCA,YAQD,IAAKzH,EAAS+M,2BAA4B,CACzC,GAAIrjF,EAAQ43E,GACX,MAAM,IAAId,EAAW,mBAEtB,MAAO,GAIR,IAAKqF,GAAkBA,EAAe52F,O/BnHL,E+BmHkC,CAGlE,GAAIya,EAAQ43E,GACX,MAAM,IAAId,EAAW,aAGtB,MAAO,GAYR,GAAIqF,EAAe52F,O/BlIc,G+BkIe,CAC/C,GAAIya,EAAQ43E,GACX,MAAM,IAAId,EAAW,YAGtB,MAAO,GAGR,GAAI92E,EAAQ43E,GAAI,CACf,IAAM8H,EAAc,IAAIN,GACvB1E,EACAyB,EACA7F,EAASA,UAYV,OAVI0B,IACH0H,EAAY1H,QAAUA,GAEnB+F,IACH2B,EAAY3B,YAAcA,GAEvBt6C,IACHi8C,EAAYj8C,IAAMA,GAEnBi8C,EAAY4D,2BAA6BpC,EAClCxB,EAMR,IAAM6D,KAASvjF,EAAQ8lE,SAAWwQ,EAAS+M,2BAA6BrL,IACvE8E,GAAgBX,EAAgB7F,EAASyC,yBAG1C,OAAK/4E,EAAQ8lE,SAMN,CACNkS,UACA0C,qBACAqD,cACAwF,QACAC,WAAUD,MACY,IAArBvjF,EAAQ8lE,WACRwQ,EAAS0C,oBACT6D,GAAiBV,EAAgB7F,IAElC4G,MAAOf,EACP14C,OAhBO8/C,EA8FT,SAAgBvL,EAASmE,EAAgB14C,GACxC,IAAMp4B,EAAS,CACd2sE,UACAkF,MAAOf,GAEJ14C,IACHp4B,EAAOo4B,IAAMA,GAEd,OAAOp4B,EAtGSA,CAAO2sE,EAASmE,EAAgB14C,GAAO,G,03CCtKzC,SAAS2/C,GAAiB/M,EAAMr2E,EAASs2E,GAEnDt2E,GAAWA,EAAQ22E,iBAAmBgE,EAAmB36E,EAAQ22E,eAAgBL,KACpFt2E,EAAU,GAAH,MACHA,GADG,IAEN22E,oBAAgBpwF,KAIlB,IACC,OCZa,SAAmC8vF,EAAMr2E,EAASs2E,GAChE,OAAOnzB,GAAMkzB,EAAD,SAAYr2E,GAAZ,IAAqB43E,IAAI,IAAQtB,GDWrCmN,CAA0BpN,EAAMr2E,EAASs2E,GAC/C,MAAO/7E,GAER,KAAIA,aAAiBu8E,GAGpB,MAAMv8E,GEjBM,SAAS6oF,KACvB,MAAoChN,EAAmB9wF,WAA/C+wF,EAAR,EAAQA,KAAMr2E,EAAd,EAAcA,QAASs2E,EAAvB,EAAuBA,SACvB,OAAOoN,GAAkBrN,EAAMr2E,EAASs2E,G,6rBCF1B,SAASqN,KACvB,MAAkCvN,EAAmB9wF,WAA/C+wF,EAAN,EAAMA,KAAMr2E,EAAZ,EAAYA,QAASs2E,EAArB,EAAqBA,SAKfoJ,EAAc0D,GAAiB/M,EAJrCr2E,EAAU,GAAH,MACHA,GADG,IAENyiF,SAAS,IAE0CnM,GACpD,OAAOoJ,GAAeA,EAAYkE,eAAgB,ECRpC,SAASC,GAAavN,GACpC,OAAO,IAAIc,EAASd,GAAUuN,e,uBCHhB,IACb,IAAO,OACP,QAAW,uBACX,MAAS,QACT,GAAM,WACN,GAAM,mBACN,GAAM,UACN,GAAM,uBACN,GAAM,cACN,GAAM,sBACN,GAAM,WACN,GAAM,UACN,GAAM,UACN,GAAM,SACN,GAAM,aACN,GAAM,YACN,GAAM,iBACN,GAAM,UACN,GAAM,YACN,GAAM,QACN,GAAM,mBACN,GAAM,aACN,GAAM,yBACN,GAAM,WACN,GAAM,aACN,GAAM,UACN,GAAM,eACN,GAAM,WACN,GAAM,UACN,GAAM,UACN,GAAM,QACN,GAAM,sBACN,GAAM,UACN,GAAM,oBACN,GAAM,UACN,GAAM,mCACN,GAAM,SACN,GAAM,UACN,GAAM,SACN,GAAM,gBACN,GAAM,WACN,GAAM,UACN,GAAM,SACN,GAAM,SACN,GAAM,0BACN,GAAM,oCACN,GAAM,2BACN,GAAM,QACN,GAAM,cACN,GAAM,gBACN,GAAM,eACN,GAAM,QACN,GAAM,WACN,GAAM,QACN,GAAM,WACN,GAAM,aACN,GAAM,OACN,GAAM,aACN,GAAM,aACN,GAAM,mBACN,GAAM,SACN,GAAM,iBACN,GAAM,UACN,GAAM,WACN,GAAM,UACN,GAAM,WACN,GAAM,qBACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,QACN,GAAM,iBACN,GAAM,UACN,GAAM,QACN,GAAM,WACN,GAAM,UACN,GAAM,OACN,GAAM,mBACN,GAAM,iCACN,GAAM,gBACN,GAAM,SACN,GAAM,QACN,GAAM,iBACN,GAAM,UACN,GAAM,UACN,GAAM,gBACN,GAAM,WACN,GAAM,QACN,GAAM,YACN,GAAM,YACN,GAAM,SACN,GAAM,SACN,GAAM,aACN,GAAM,oBACN,GAAM,SACN,GAAM,+CACN,GAAM,YACN,GAAM,OACN,GAAM,gBACN,GAAM,SACN,GAAM,YACN,GAAM,oCACN,GAAM,WACN,GAAM,UACN,GAAM,QACN,GAAM,UACN,GAAM,YACN,GAAM,UACN,GAAM,SACN,GAAM,cACN,GAAM,QACN,GAAM,iCACN,GAAM,OACN,GAAM,OACN,GAAM,UACN,GAAM,QACN,GAAM,SACN,GAAM,UACN,GAAM,SACN,GAAM,QACN,GAAM,QACN,GAAM,aACN,GAAM,WACN,GAAM,WACN,GAAM,UACN,GAAM,wBACN,GAAM,cACN,GAAM,cACN,GAAM,SACN,GAAM,iBACN,GAAM,aACN,GAAM,OACN,GAAM,UACN,GAAM,cACN,GAAM,gBACN,GAAM,YACN,GAAM,UACN,GAAM,UACN,GAAM,YACN,GAAM,aACN,GAAM,SACN,GAAM,QACN,GAAM,UACN,GAAM,SACN,GAAM,UACN,GAAM,aACN,GAAM,6BACN,GAAM,aACN,GAAM,mBACN,GAAM,kBACN,GAAM,OACN,GAAM,UACN,GAAM,WACN,GAAM,QACN,GAAM,2BACN,GAAM,aACN,GAAM,aACN,GAAM,aACN,GAAM,QACN,GAAM,YACN,GAAM,WACN,GAAM,SACN,GAAM,SACN,GAAM,WACN,GAAM,aACN,GAAM,UACN,GAAM,gBACN,GAAM,QACN,GAAM,iBACN,GAAM,UACN,GAAM,YACN,GAAM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tBC,EACAnM,EACAn7G,qBAAkBu6G,IAEbgN,6BAAmBpM,UACfS,EAAiB,EAAGppG,OAAO2oG,QAK9BqM,EAAmB,kBAAaF,EAAqBnM,EAAKn7G,EAASk8G,oCAGzEsL,EAAiBC,WAAa,mBAC5BJ,EAAqBC,EAAsBnM,OAAUn7G,KAAYhR,KAGnEw4H,EAAiBnC,MAAQ,mBACvBgC,EAAqBC,EAAsBnM,OACtCn7G,GACHqlH,MAAOjqH,MAAMgN,UAAU2J,OAAO/R,EAAQqlH,MAAOA,GAAOxgI,OAAO8d,aAGxD6kH,EDzBOrM,CAAqCuM,GAAiBvM,IDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,WACA,SCnIU11H,SAAQ,YAClB2hI,GAAOO,GAAcP,GAAOO,OELTC,sBAOPpM,EAAgBmE,QACrBnE,MAAQA,OACRmE,YAAcA,OACdG,SAAWN,EAAchE,GAI9B+C,EAAWI,WAAW72H,KAAK63H,YAAc,uBAG3CkI,sBACE18F,EACA+0F,EACAC,EACA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oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN73F,IAAK,CACH2e,IAAK,EACLk5E,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA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","file":"static/js/4.de1bce13.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_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}","import React from 'react';\n\nexport interface IonLifeCycleContextInterface {\n  onIonViewWillEnter: (callback: () => void) => void;\n  ionViewWillEnter: () => void;\n  onIonViewDidEnter: (callback: () => void) => void;\n  ionViewDidEnter: () => void;\n  onIonViewWillLeave: (callback: () => void) => void;\n  ionViewWillLeave: () => void;\n  onIonViewDidLeave: (callback: () => void) => void;\n  ionViewDidLeave: () => void;\n}\n\nexport const IonLifeCycleContext = /*@__PURE__*/ React.createContext<IonLifeCycleContextInterface>({\n  onIonViewWillEnter: () => {\n    return;\n  },\n  ionViewWillEnter: () => {\n    return;\n  },\n  onIonViewDidEnter: () => {\n    return;\n  },\n  ionViewDidEnter: () => {\n    return;\n  },\n  onIonViewWillLeave: () => {\n    return;\n  },\n  ionViewWillLeave: () => {\n    return;\n  },\n  onIonViewDidLeave: () => {\n    return;\n  },\n  ionViewDidLeave: () => {\n    return;\n  },\n});\n\nexport interface LifeCycleCallback {\n  (): void;\n  id?: number;\n}\n\nexport const DefaultIonLifeCycleContext = class implements IonLifeCycleContextInterface {\n  ionViewWillEnterCallbacks: LifeCycleCallback[] = [];\n  ionViewDidEnterCallbacks: LifeCycleCallback[] = [];\n  ionViewWillLeaveCallbacks: LifeCycleCallback[] = [];\n  ionViewDidLeaveCallbacks: LifeCycleCallback[] = [];\n  componentCanBeDestroyedCallback?: () => void;\n\n  onIonViewWillEnter(callback: LifeCycleCallback) {\n    if (callback.id) {\n      const index = this.ionViewWillEnterCallbacks.findIndex((x) => x.id === callback.id);\n      if (index > -1) {\n        this.ionViewWillEnterCallbacks[index] = callback;\n      } else {\n        this.ionViewWillEnterCallbacks.push(callback);\n      }\n    } else {\n      this.ionViewWillEnterCallbacks.push(callback);\n    }\n  }\n\n  ionViewWillEnter() {\n    this.ionViewWillEnterCallbacks.forEach((cb) => cb());\n  }\n\n  onIonViewDidEnter(callback: LifeCycleCallback) {\n    if (callback.id) {\n      const index = this.ionViewDidEnterCallbacks.findIndex((x) => x.id === callback.id);\n      if (index > -1) {\n        this.ionViewDidEnterCallbacks[index] = callback;\n      } else {\n        this.ionViewDidEnterCallbacks.push(callback);\n      }\n    } else {\n      this.ionViewDidEnterCallbacks.push(callback);\n    }\n  }\n\n  ionViewDidEnter() {\n    this.ionViewDidEnterCallbacks.forEach((cb) => cb());\n  }\n\n  onIonViewWillLeave(callback: LifeCycleCallback) {\n    if (callback.id) {\n      const index = this.ionViewWillLeaveCallbacks.findIndex((x) => x.id === callback.id);\n      if (index > -1) {\n        this.ionViewWillLeaveCallbacks[index] = callback;\n      } else {\n        this.ionViewWillLeaveCallbacks.push(callback);\n      }\n    } else {\n      this.ionViewWillLeaveCallbacks.push(callback);\n    }\n  }\n\n  ionViewWillLeave() {\n    this.ionViewWillLeaveCallbacks.forEach((cb) => cb());\n  }\n\n  onIonViewDidLeave(callback: LifeCycleCallback) {\n    if (callback.id) {\n      const index = this.ionViewDidLeaveCallbacks.findIndex((x) => x.id === callback.id);\n      if (index > -1) {\n        this.ionViewDidLeaveCallbacks[index] = callback;\n      } else {\n        this.ionViewDidLeaveCallbacks.push(callback);\n      }\n    } else {\n      this.ionViewDidLeaveCallbacks.push(callback);\n    }\n  }\n\n  ionViewDidLeave() {\n    this.ionViewDidLeaveCallbacks.forEach((cb) => cb());\n    this.componentCanBeDestroyed();\n  }\n\n  onComponentCanBeDestroyed(callback: () => void) {\n    this.componentCanBeDestroyedCallback = callback;\n  }\n\n  componentCanBeDestroyed() {\n    if (this.componentCanBeDestroyedCallback) {\n      this.componentCanBeDestroyedCallback();\n    }\n  }\n};\n","import React from 'react';\n\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\nexport const withIonLifeCycle = (WrappedComponent: React.ComponentType<any>) => {\n  return class IonLifeCycle extends React.Component<any, any> {\n    context!: React.ContextType<typeof IonLifeCycleContext>;\n    componentRef = React.createRef<any>();\n\n    constructor(props: any) {\n      super(props);\n    }\n\n    componentDidMount() {\n      const element = this.componentRef.current;\n      this.context.onIonViewWillEnter(() => {\n        if (element && element.ionViewWillEnter) {\n          element.ionViewWillEnter();\n        }\n      });\n\n      this.context.onIonViewDidEnter(() => {\n        if (element && element.ionViewDidEnter) {\n          element.ionViewDidEnter();\n        }\n      });\n\n      this.context.onIonViewWillLeave(() => {\n        if (element && element.ionViewWillLeave) {\n          element.ionViewWillLeave();\n        }\n      });\n\n      this.context.onIonViewDidLeave(() => {\n        if (element && element.ionViewDidLeave) {\n          element.ionViewDidLeave();\n        }\n      });\n    }\n\n    render() {\n      return (\n        <IonLifeCycleContext.Consumer>\n          {(context) => {\n            this.context = context;\n            return <WrappedComponent ref={this.componentRef} {...this.props} />;\n          }}\n        </IonLifeCycleContext.Consumer>\n      );\n    }\n  };\n};\n","import { useContext, useEffect, useRef } from 'react';\n\nimport { IonLifeCycleContext, LifeCycleCallback } from '../contexts/IonLifeCycleContext';\n\nexport const useIonViewWillEnter = (callback: LifeCycleCallback, deps: any[] = []) => {\n  const context = useContext(IonLifeCycleContext);\n  const id = useRef<number | undefined>();\n  id.current = id.current || Math.floor(Math.random() * 1000000);\n  useEffect(() => {\n    callback.id = id.current!;\n    context.onIonViewWillEnter(callback);\n  }, deps);\n};\n\nexport const useIonViewDidEnter = (callback: LifeCycleCallback, deps: any[] = []) => {\n  const context = useContext(IonLifeCycleContext);\n  const id = useRef<number | undefined>();\n  id.current = id.current || Math.floor(Math.random() * 1000000);\n  useEffect(() => {\n    callback.id = id.current!;\n    context.onIonViewDidEnter(callback);\n  }, deps);\n};\n\nexport const useIonViewWillLeave = (callback: LifeCycleCallback, deps: any[] = []) => {\n  const context = useContext(IonLifeCycleContext);\n  const id = useRef<number | undefined>();\n  id.current = id.current || Math.floor(Math.random() * 1000000);\n  useEffect(() => {\n    callback.id = id.current!;\n    context.onIonViewWillLeave(callback);\n  }, deps);\n};\n\nexport const useIonViewDidLeave = (callback: LifeCycleCallback, deps: any[] = []) => {\n  const context = useContext(IonLifeCycleContext);\n  const id = useRef<number | undefined>();\n  id.current = id.current || Math.floor(Math.random() * 1000000);\n  useEffect(() => {\n    callback.id = id.current!;\n    context.onIonViewDidLeave(callback);\n  }, deps);\n};\n","import { AnimationBuilder, RouterDirection } from '@ionic/core';\nimport React from 'react';\n\nimport { RouteInfo } from '../models';\n\nexport interface NavContextState {\n  getIonRoute: () => any;\n  getIonRedirect: () => any;\n  getPageManager: () => any;\n  getStackManager: () => any;\n  goBack: (route?: string | RouteInfo, animationBuilder?: AnimationBuilder) => void;\n  navigate: (\n    path: string,\n    direction?: RouterDirection | 'none',\n    ionRouteAction?: 'push' | 'replace' | 'pop',\n    animationBuilder?: AnimationBuilder,\n    options?: any,\n    tab?: string\n  ) => void;\n  hasIonicRouter: () => boolean;\n  routeInfo?: RouteInfo;\n  setCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n  changeTab: (tab: string, path: string, routeOptions?: any) => void;\n  resetTab: (tab: string, originalHref: string, originalRouteOptions?: any) => void;\n}\n\nexport const NavContext = /*@__PURE__*/ React.createContext<NavContextState>({\n  getIonRedirect: () => undefined,\n  getIonRoute: () => undefined,\n  getPageManager: () => undefined,\n  getStackManager: () => undefined,\n  goBack: (route?: string | RouteInfo) => {\n    if (typeof window !== 'undefined') {\n      if (typeof route === 'string') {\n        window.location.pathname = route;\n      } else {\n        window.history.back();\n      }\n    }\n  },\n  navigate: (path: string) => {\n    if (typeof window !== 'undefined') {\n      window.location.pathname = path;\n    }\n  },\n  hasIonicRouter: () => false,\n  routeInfo: undefined,\n  setCurrentTab: () => undefined,\n  changeTab: (_tab: string, path: string) => {\n    if (typeof window !== 'undefined') {\n      window.location.pathname = path;\n    }\n  },\n  resetTab: (_tab: string, path: string) => {\n    if (typeof window !== 'undefined') {\n      window.location.pathname = path;\n    }\n  },\n});\n","export const dashToPascalCase = (str: string) =>\n  str\n    .toLowerCase()\n    .split('-')\n    .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))\n    .join('');\nexport const camelToDashCase = (str: string) =>\n  str.replace(/([A-Z])/g, (m: string) => `-${m[0].toLowerCase()}`);\n","import { camelToDashCase } from './case';\n\nexport const attachProps = (node: HTMLElement, newProps: any, oldProps: any = {}) => {\n  // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first\n  if (node instanceof Element) {\n    // add any classes in className to the class list\n    const className = getClassName(node.classList, newProps, oldProps);\n    if (className !== '') {\n      node.className = className;\n    }\n\n    Object.keys(newProps).forEach((name) => {\n      if (\n        name === 'children' ||\n        name === 'style' ||\n        name === 'ref' ||\n        name === 'class' ||\n        name === 'className' ||\n        name === 'forwardedRef'\n      ) {\n        return;\n      }\n      if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n        const eventName = name.substring(2);\n        const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n\n        if (!isCoveredByReact(eventNameLc)) {\n          syncEvent(node, eventNameLc, newProps[name]);\n        }\n      } else {\n        const propType = typeof newProps[name];\n        if (propType === 'string') {\n          node.setAttribute(camelToDashCase(name), newProps[name]);\n        } else {\n          (node as any)[name] = newProps[name];\n        }\n      }\n    });\n  }\n};\n\nexport const getClassName = (classList: DOMTokenList, newProps: any, oldProps: any) => {\n  const newClassProp: string = newProps.className || newProps.class;\n  const oldClassProp: string = oldProps.className || oldProps.class;\n  // map the classes to Maps for performance\n  const currentClasses = arrayToMap(classList);\n  const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []);\n  const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []);\n  const finalClassNames: string[] = [];\n  // loop through each of the current classes on the component\n  // to see if it should be a part of the classNames added\n  currentClasses.forEach((currentClass) => {\n    if (incomingPropClasses.has(currentClass)) {\n      // add it as its already included in classnames coming in from newProps\n      finalClassNames.push(currentClass);\n      incomingPropClasses.delete(currentClass);\n    } else if (!oldPropClasses.has(currentClass)) {\n      // add it as it has NOT been removed by user\n      finalClassNames.push(currentClass);\n    }\n  });\n  incomingPropClasses.forEach((s) => finalClassNames.push(s));\n  return finalClassNames.join(' ');\n};\n\n/**\n * Checks if an event is supported in the current execution environment.\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nexport const isCoveredByReact = (eventNameSuffix: string) => {\n  if (typeof document === 'undefined') {\n    return true;\n  } else {\n    const eventName = 'on' + eventNameSuffix;\n    let isSupported = eventName in document;\n\n    if (!isSupported) {\n      const element = document.createElement('div');\n      element.setAttribute(eventName, 'return;');\n      isSupported = typeof (element as any)[eventName] === 'function';\n    }\n\n    return isSupported;\n  }\n};\n\nexport const syncEvent = (\n  node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } },\n  eventName: string,\n  newEventHandler?: (e: Event) => any\n) => {\n  const eventStore = node.__events || (node.__events = {});\n  const oldEventHandler = eventStore[eventName];\n\n  // Remove old listener so they don't double up.\n  if (oldEventHandler) {\n    node.removeEventListener(eventName, oldEventHandler);\n  }\n\n  // Bind new listener.\n  node.addEventListener(\n    eventName,\n    (eventStore[eventName] = function handler(e: Event) {\n      if (newEventHandler) {\n        newEventHandler.call(this, e);\n      }\n    })\n  );\n};\n\nconst arrayToMap = (arr: string[] | DOMTokenList) => {\n  const map = new Map<string, string>();\n  (arr as string[]).forEach((s: string) => map.set(s, s));\n  return map;\n};\n","import {\n  Config as CoreConfig,\n  Platforms,\n  getPlatforms as getPlatformsCore,\n  isPlatform as isPlatformCore,\n} from '@ionic/core';\nimport React from 'react';\n\nimport { IonicReactProps } from '../IonicReactProps';\n\nexport type IonicReactExternalProps<PropType, ElementType> = PropType &\n  Omit<React.HTMLAttributes<ElementType>, 'style'> &\n  IonicReactProps;\n\nexport const createForwardRef = <PropType, ElementType>(\n  ReactComponent: any,\n  displayName: string\n) => {\n  const forwardRef = (\n    props: IonicReactExternalProps<PropType, ElementType>,\n    ref: React.ForwardedRef<ElementType>\n  ) => {\n    return <ReactComponent {...props} forwardedRef={ref} />;\n  };\n  forwardRef.displayName = displayName;\n\n  return React.forwardRef(forwardRef);\n};\n\nexport const setRef = (ref: React.ForwardedRef<any> | React.Ref<any> | undefined, value: any) => {\n  if (typeof ref === 'function') {\n    ref(value)\n  } else if (ref != null) {\n    // Cast as a MutableRef so we can assign current\n    (ref as React.MutableRefObject<any>).current = value\n  }\n};\n\nexport const mergeRefs = (\n  ...refs: (React.ForwardedRef<any> | React.Ref<any> | undefined)[]\n): React.RefCallback<any> => {\n  return (value: any) => {\n    refs.forEach(ref => {\n      setRef(ref, value)\n    })\n  }\n};\n\nexport * from './attachProps';\nexport * from './case';\n\nexport const isPlatform = (platform: Platforms) => {\n  return isPlatformCore(window, platform);\n};\n\nexport const getPlatforms = () => {\n  return getPlatformsCore(window);\n};\n\nexport const getConfig = (): CoreConfig | null => {\n  if (typeof (window as any) !== 'undefined') {\n    const Ionic = (window as any).Ionic;\n    if (Ionic && Ionic.config) {\n      return Ionic.config;\n    }\n  }\n  return null;\n};\n","import { AnimationBuilder } from '@ionic/core';\nimport React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport { RouterOptions } from '../models';\nimport { RouterDirection } from '../models/RouterDirection';\n\nimport {\n  attachProps,\n  camelToDashCase,\n  createForwardRef,\n  dashToPascalCase,\n  isCoveredByReact,\n  mergeRefs,\n} from './utils';\n\ninterface IonicReactInternalProps<ElementType> extends React.HTMLAttributes<ElementType> {\n  forwardedRef?: React.ForwardedRef<ElementType>;\n  href?: string;\n  routerLink?: string;\n  ref?: React.Ref<any>;\n  routerDirection?: RouterDirection;\n  routerOptions?: RouterOptions;\n  routerAnimation?: AnimationBuilder;\n}\n\nexport const createReactComponent = <PropType, ElementType>(\n  tagName: string,\n  routerLinkComponent = false\n) => {\n  const displayName = dashToPascalCase(tagName);\n  const ReactComponent = class extends React.Component<IonicReactInternalProps<PropType>> {\n    context!: React.ContextType<typeof NavContext>;\n    ref: React.RefObject<HTMLElement>;\n    stableMergedRefs: React.RefCallback<HTMLElement>\n\n    constructor(props: IonicReactInternalProps<PropType>) {\n      super(props);\n      // Create a local ref to to attach props to the wrapped element.\n      this.ref = React.createRef();\n      // React refs must be stable (not created inline).\n      this.stableMergedRefs = mergeRefs(this.ref, this.props.forwardedRef)\n    }\n\n    componentDidMount() {\n      this.componentDidUpdate(this.props);\n    }\n\n    componentDidUpdate(prevProps: IonicReactInternalProps<PropType>) {\n      const node = this.ref.current! as HTMLElement;\n      attachProps(node, this.props, prevProps);\n    }\n\n    private handleClick = (e: React.MouseEvent<PropType>) => {\n      const { routerLink, routerDirection, routerOptions, routerAnimation } = this.props;\n      if (routerLink !== undefined) {\n        e.preventDefault();\n        this.context.navigate(\n          routerLink,\n          routerDirection,\n          undefined,\n          routerAnimation,\n          routerOptions\n        );\n      }\n    };\n\n    render() {\n      const { children, forwardedRef, style, className, ref, ...cProps } = this.props;\n\n      const propsToPass = Object.keys(cProps).reduce((acc, name) => {\n        if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n          const eventName = name.substring(2).toLowerCase();\n          if (isCoveredByReact(eventName)) {\n            (acc as any)[name] = (cProps as any)[name];\n          }\n        } else if (['string', 'boolean', 'number'].includes(typeof (cProps as any)[name])) {\n          (acc as any)[camelToDashCase(name)] = (cProps as any)[name];\n        }\n        return acc;\n      }, {});\n\n      const newProps: IonicReactInternalProps<PropType> = {\n        ...propsToPass,\n        ref: this.stableMergedRefs,\n        style,\n      };\n\n      if (routerLinkComponent) {\n        if (this.props.routerLink && !this.props.href) {\n          newProps.href = this.props.routerLink;\n        }\n        if (newProps.onClick) {\n          const oldClick = newProps.onClick;\n          newProps.onClick = (e: React.MouseEvent<PropType>) => {\n            oldClick(e);\n            if (!e.defaultPrevented) {\n              this.handleClick(e);\n            }\n          };\n        } else {\n          newProps.onClick = this.handleClick;\n        }\n      }\n\n      return React.createElement(tagName, newProps, children);\n    }\n\n    static get displayName() {\n      return displayName;\n    }\n\n    static get contextType() {\n      return NavContext;\n    }\n  };\n  return createForwardRef<PropType, ElementType>(ReactComponent, displayName);\n};\n","import { JSX } from '@ionic/core';\n\nimport { createReactComponent } from './createComponent';\nimport { HrefProps } from './hrefprops';\n\n// ionic/core\nexport const IonApp = /*@__PURE__*/ createReactComponent<JSX.IonApp, HTMLIonAppElement>('ion-app');\nexport const IonTab = /*@__PURE__*/ createReactComponent<JSX.IonTab, HTMLIonTabElement>('ion-tab');\nexport const IonRouterLink = /*@__PURE__*/ createReactComponent<\n  HrefProps<JSX.IonRouterLink>,\n  HTMLIonRouterLinkElement\n>('ion-router-link', true);\nexport const IonAvatar = /*@__PURE__*/ createReactComponent<JSX.IonAvatar, HTMLIonAvatarElement>(\n  'ion-avatar'\n);\nexport const IonBackdrop = /*@__PURE__*/ createReactComponent<\n  JSX.IonBackdrop,\n  HTMLIonBackdropElement\n>('ion-backdrop');\nexport const IonBadge = /*@__PURE__*/ createReactComponent<JSX.IonBadge, HTMLIonBadgeElement>(\n  'ion-badge'\n);\nexport const IonButton = /*@__PURE__*/ createReactComponent<\n  HrefProps<JSX.IonButton>,\n  HTMLIonButtonElement\n>('ion-button', true);\nexport const IonButtons = /*@__PURE__*/ createReactComponent<JSX.IonButtons, HTMLIonButtonsElement>(\n  'ion-buttons'\n);\nexport const IonCard = /*@__PURE__*/ createReactComponent<\n  HrefProps<JSX.IonCard>,\n  HTMLIonCardElement\n>('ion-card', true);\nexport const IonCardContent = /*@__PURE__*/ createReactComponent<\n  JSX.IonCardContent,\n  HTMLIonCardContentElement\n>('ion-card-content');\nexport const IonCardHeader = /*@__PURE__*/ createReactComponent<\n  JSX.IonCardHeader,\n  HTMLIonCardHeaderElement\n>('ion-card-header');\nexport const IonCardSubtitle = /*@__PURE__*/ createReactComponent<\n  JSX.IonCardSubtitle,\n  HTMLIonCardSubtitleElement\n>('ion-card-subtitle');\nexport const IonCardTitle = /*@__PURE__*/ createReactComponent<\n  JSX.IonCardTitle,\n  HTMLIonCardTitleElement\n>('ion-card-title');\nexport const IonCheckbox = /*@__PURE__*/ createReactComponent<\n  JSX.IonCheckbox,\n  HTMLIonCheckboxElement\n>('ion-checkbox');\nexport const IonCol = /*@__PURE__*/ createReactComponent<JSX.IonCol, HTMLIonColElement>('ion-col');\nexport const IonContent = /*@__PURE__*/ createReactComponent<JSX.IonContent, HTMLIonContentElement>(\n  'ion-content'\n);\nexport const IonChip = /*@__PURE__*/ createReactComponent<JSX.IonChip, HTMLIonChipElement>(\n  'ion-chip'\n);\nexport const IonDatetime = /*@__PURE__*/ createReactComponent<\n  JSX.IonDatetime,\n  HTMLIonDatetimeElement\n>('ion-datetime');\nexport const IonFab = /*@__PURE__*/ createReactComponent<JSX.IonFab, HTMLIonFabElement>('ion-fab');\nexport const IonFabButton = /*@__PURE__*/ createReactComponent<\n  HrefProps<JSX.IonFabButton>,\n  HTMLIonFabButtonElement\n>('ion-fab-button', true);\nexport const IonFabList = /*@__PURE__*/ createReactComponent<JSX.IonFabList, HTMLIonFabListElement>(\n  'ion-fab-list'\n);\nexport const IonFooter = /*@__PURE__*/ createReactComponent<JSX.IonFooter, HTMLIonFooterElement>(\n  'ion-footer'\n);\nexport const IonGrid = /*@__PURE__*/ createReactComponent<JSX.IonGrid, HTMLIonGridElement>(\n  'ion-grid'\n);\nexport const IonHeader = /*@__PURE__*/ createReactComponent<JSX.IonHeader, HTMLIonHeaderElement>(\n  'ion-header'\n);\nexport const IonImg = /*@__PURE__*/ createReactComponent<JSX.IonImg, HTMLIonImgElement>('ion-img');\nexport const IonInfiniteScroll = /*@__PURE__*/ createReactComponent<\n  JSX.IonInfiniteScroll,\n  HTMLIonInfiniteScrollElement\n>('ion-infinite-scroll');\nexport const IonInfiniteScrollContent = /*@__PURE__*/ createReactComponent<\n  JSX.IonInfiniteScrollContent,\n  HTMLIonInfiniteScrollContentElement\n>('ion-infinite-scroll-content');\nexport const IonInput = /*@__PURE__*/ createReactComponent<JSX.IonInput, HTMLIonInputElement>(\n  'ion-input'\n);\nexport const IonItem = /*@__PURE__*/ createReactComponent<\n  HrefProps<JSX.IonItem>,\n  HTMLIonItemElement\n>('ion-item', true);\nexport const IonItemDivider = /*@__PURE__*/ createReactComponent<\n  JSX.IonItemDivider,\n  HTMLIonItemDividerElement\n>('ion-item-divider');\nexport const IonItemGroup = /*@__PURE__*/ createReactComponent<\n  JSX.IonItemGroup,\n  HTMLIonItemGroupElement\n>('ion-item-group');\nexport const IonItemOption = /*@__PURE__*/ createReactComponent<\n  HrefProps<JSX.IonItemOption>,\n  HTMLIonItemOptionElement\n>('ion-item-option', true);\nexport const IonItemOptions = /*@__PURE__*/ createReactComponent<\n  JSX.IonItemOptions,\n  HTMLIonItemOptionsElement\n>('ion-item-options');\nexport const IonItemSliding = /*@__PURE__*/ createReactComponent<\n  JSX.IonItemSliding,\n  HTMLIonItemSlidingElement\n>('ion-item-sliding');\nexport const IonLabel = /*@__PURE__*/ createReactComponent<JSX.IonLabel, HTMLIonLabelElement>(\n  'ion-label'\n);\nexport const IonList = /*@__PURE__*/ createReactComponent<JSX.IonList, HTMLIonListElement>(\n  'ion-list'\n);\nexport const IonListHeader = /*@__PURE__*/ createReactComponent<\n  JSX.IonListHeader,\n  HTMLIonListHeaderElement\n>('ion-list-header');\nexport const IonMenu = /*@__PURE__*/ createReactComponent<JSX.IonMenu, HTMLIonMenuElement>(\n  'ion-menu'\n);\nexport const IonMenuButton = /*@__PURE__*/ createReactComponent<\n  JSX.IonMenuButton,\n  HTMLIonMenuButtonElement\n>('ion-menu-button');\nexport const IonMenuToggle = /*@__PURE__*/ createReactComponent<\n  JSX.IonMenuToggle,\n  HTMLIonMenuToggleElement\n>('ion-menu-toggle');\nexport const IonNote = /*@__PURE__*/ createReactComponent<JSX.IonNote, HTMLIonNoteElement>(\n  'ion-note'\n);\nexport const IonPickerColumn = /*@__PURE__*/ createReactComponent<\n  JSX.IonPickerColumn,\n  HTMLIonPickerColumnElement\n>('ion-picker-column');\nexport const IonNav = /*@__PURE__*/ createReactComponent<JSX.IonNav, HTMLIonNavElement>('ion-nav');\nexport const IonProgressBar = /*@__PURE__*/ createReactComponent<\n  JSX.IonProgressBar,\n  HTMLIonProgressBarElement\n>('ion-progress-bar');\nexport const IonRadio = /*@__PURE__*/ createReactComponent<JSX.IonRadio, HTMLIonRadioElement>(\n  'ion-radio'\n);\nexport const IonRadioGroup = /*@__PURE__*/ createReactComponent<\n  JSX.IonRadioGroup,\n  HTMLIonRadioGroupElement\n>('ion-radio-group');\nexport const IonRange = /*@__PURE__*/ createReactComponent<JSX.IonRange, HTMLIonRangeElement>(\n  'ion-range'\n);\nexport const IonRefresher = /*@__PURE__*/ createReactComponent<\n  JSX.IonRefresher,\n  HTMLIonRefresherElement\n>('ion-refresher');\nexport const IonRefresherContent = /*@__PURE__*/ createReactComponent<\n  JSX.IonRefresherContent,\n  HTMLIonRefresherContentElement\n>('ion-refresher-content');\nexport const IonReorder = /*@__PURE__*/ createReactComponent<JSX.IonReorder, HTMLIonReorderElement>(\n  'ion-reorder'\n);\nexport const IonReorderGroup = /*@__PURE__*/ createReactComponent<\n  JSX.IonReorderGroup,\n  HTMLIonReorderGroupElement\n>('ion-reorder-group');\nexport const IonRippleEffect = /*@__PURE__*/ createReactComponent<\n  JSX.IonRippleEffect,\n  HTMLIonRippleEffectElement\n>('ion-ripple-effect');\nexport const IonRow = /*@__PURE__*/ createReactComponent<JSX.IonRow, HTMLIonRowElement>('ion-row');\nexport const IonSearchbar = /*@__PURE__*/ createReactComponent<\n  JSX.IonSearchbar,\n  HTMLIonSearchbarElement\n>('ion-searchbar');\nexport const IonSegment = /*@__PURE__*/ createReactComponent<JSX.IonSegment, HTMLIonSegmentElement>(\n  'ion-segment'\n);\nexport const IonSegmentButton = /*@__PURE__*/ createReactComponent<\n  JSX.IonSegmentButton,\n  HTMLIonSegmentButtonElement\n>('ion-segment-button');\nexport const IonSelect = /*@__PURE__*/ createReactComponent<JSX.IonSelect, HTMLIonSelectElement>(\n  'ion-select'\n);\nexport const IonSelectOption = /*@__PURE__*/ createReactComponent<\n  JSX.IonSelectOption,\n  HTMLIonSelectOptionElement\n>('ion-select-option');\nexport const IonSelectPopover = /*@__PURE__*/ createReactComponent<\n  JSX.IonSelectPopover,\n  HTMLIonSelectPopoverElement\n>('ion-select-popover');\nexport const IonSkeletonText = /*@__PURE__*/ createReactComponent<\n  JSX.IonSkeletonText,\n  HTMLIonSkeletonTextElement\n>('ion-skeleton-text');\nexport const IonSlide = /*@__PURE__*/ createReactComponent<JSX.IonSlide, HTMLIonSlideElement>(\n  'ion-slide'\n);\nexport const IonSlides = /*@__PURE__*/ createReactComponent<JSX.IonSlides, HTMLIonSlidesElement>(\n  'ion-slides'\n);\nexport const IonSpinner = /*@__PURE__*/ createReactComponent<JSX.IonSpinner, HTMLIonSpinnerElement>(\n  'ion-spinner'\n);\nexport const IonSplitPane = /*@__PURE__*/ createReactComponent<\n  JSX.IonSplitPane,\n  HTMLIonSplitPaneElement\n>('ion-split-pane');\nexport const IonText = /*@__PURE__*/ createReactComponent<JSX.IonText, HTMLIonTextElement>(\n  'ion-text'\n);\nexport const IonTextarea = /*@__PURE__*/ createReactComponent<\n  JSX.IonTextarea,\n  HTMLIonTextareaElement\n>('ion-textarea');\nexport const IonThumbnail = /*@__PURE__*/ createReactComponent<\n  JSX.IonThumbnail,\n  HTMLIonThumbnailElement\n>('ion-thumbnail');\nexport const IonTitle = /*@__PURE__*/ createReactComponent<JSX.IonTitle, HTMLIonTitleElement>(\n  'ion-title'\n);\nexport const IonToggle = /*@__PURE__*/ createReactComponent<JSX.IonToggle, HTMLIonToggleElement>(\n  'ion-toggle'\n);\nexport const IonToolbar = /*@__PURE__*/ createReactComponent<JSX.IonToolbar, HTMLIonToolbarElement>(\n  'ion-toolbar'\n);\nexport const IonVirtualScroll = /*@__PURE__*/ createReactComponent<\n  JSX.IonVirtualScroll,\n  HTMLIonVirtualScrollElement\n>('ion-virtual-scroll');\n","import { OverlayEventDetail } from '@ionic/core';\nimport React from 'react';\n\nimport { attachProps, setRef } from './utils';\n\ninterface OverlayBase extends HTMLElement {\n  present: () => Promise<void>;\n  dismiss: (data?: any, role?: string | undefined) => Promise<boolean>;\n}\n\nexport interface ReactControllerProps {\n  isOpen: boolean;\n  onDidDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n  onDidPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n  onWillDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n  onWillPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n}\n\nexport const createControllerComponent = <\n  OptionsType extends object,\n  OverlayType extends OverlayBase\n>(\n  displayName: string,\n  controller: { create: (options: OptionsType) => Promise<OverlayType> }\n) => {\n  const didDismissEventName = `on${displayName}DidDismiss`;\n  const didPresentEventName = `on${displayName}DidPresent`;\n  const willDismissEventName = `on${displayName}WillDismiss`;\n  const willPresentEventName = `on${displayName}WillPresent`;\n\n  type Props = OptionsType &\n    ReactControllerProps & {\n      forwardedRef?: React.ForwardedRef<OverlayType>;\n    };\n\n  class Overlay extends React.Component<Props> {\n    overlay?: OverlayType;\n    isUnmounted = false;\n\n    constructor(props: Props) {\n      super(props);\n      this.handleDismiss = this.handleDismiss.bind(this);\n    }\n\n    static get displayName() {\n      return displayName;\n    }\n\n    async componentDidMount() {\n      const { isOpen } = this.props;\n      if (isOpen as boolean) {\n        this.present();\n      }\n    }\n\n    componentWillUnmount() {\n      this.isUnmounted = true;\n      if (this.overlay) {\n        this.overlay.dismiss();\n      }\n    }\n\n    async componentDidUpdate(prevProps: Props) {\n      if (prevProps.isOpen !== this.props.isOpen && this.props.isOpen === true) {\n        this.present(prevProps);\n      }\n      if (this.overlay && prevProps.isOpen !== this.props.isOpen && this.props.isOpen === false) {\n        await this.overlay.dismiss();\n      }\n    }\n\n    handleDismiss(event: CustomEvent<OverlayEventDetail<any>>) {\n      if (this.props.onDidDismiss) {\n        this.props.onDidDismiss(event);\n      }\n      setRef(this.props.forwardedRef, null)\n    }\n\n    async present(prevProps?: Props) {\n      const {\n        isOpen,\n        onDidDismiss,\n        onDidPresent,\n        onWillDismiss,\n        onWillPresent,\n        ...cProps\n      } = this.props;\n      this.overlay = await controller.create({\n        ...(cProps as any),\n      });\n      attachProps(\n        this.overlay,\n        {\n          [didDismissEventName]: this.handleDismiss,\n          [didPresentEventName]: (e: CustomEvent) =>\n            this.props.onDidPresent && this.props.onDidPresent(e),\n          [willDismissEventName]: (e: CustomEvent) =>\n            this.props.onWillDismiss && this.props.onWillDismiss(e),\n          [willPresentEventName]: (e: CustomEvent) =>\n            this.props.onWillPresent && this.props.onWillPresent(e),\n        },\n        prevProps\n      );\n      // Check isOpen again since the value could have changed during the async call to controller.create\n      // It's also possible for the component to have become unmounted.\n      if (this.props.isOpen === true && this.isUnmounted === false) {\n        setRef(this.props.forwardedRef, this.overlay)\n        await this.overlay.present();\n      }\n    }\n\n    render(): null {\n      return null;\n    }\n  }\n\n  return React.forwardRef<OverlayType, Props>((props, ref) => {\n    return <Overlay {...props} forwardedRef={ref} />;\n  });\n};\n","import { OverlayEventDetail } from '@ionic/core';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { attachProps, setRef } from './utils';\n\ninterface OverlayElement extends HTMLElement {\n  present: () => Promise<void>;\n  dismiss: (data?: any, role?: string | undefined) => Promise<boolean>;\n}\n\nexport interface ReactOverlayProps {\n  children?: React.ReactNode;\n  isOpen: boolean;\n  onDidDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n  onDidPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n  onWillDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n  onWillPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n}\n\nexport const createOverlayComponent = <\n  OverlayComponent extends object,\n  OverlayType extends OverlayElement\n>(\n  displayName: string,\n  controller: { create: (options: any) => Promise<OverlayType> }\n) => {\n  const didDismissEventName = `on${displayName}DidDismiss`;\n  const didPresentEventName = `on${displayName}DidPresent`;\n  const willDismissEventName = `on${displayName}WillDismiss`;\n  const willPresentEventName = `on${displayName}WillPresent`;\n\n  type Props = OverlayComponent &\n    ReactOverlayProps & {\n      forwardedRef?: React.ForwardedRef<OverlayType>;\n    };\n\n  class Overlay extends React.Component<Props> {\n    overlay?: OverlayType;\n    el!: HTMLDivElement;\n    isDismissing = false;\n    constructor(props: Props) {\n      super(props);\n      if (typeof document !== 'undefined') {\n        this.el = document.createElement('div');\n      }\n      this.handleDismiss = this.handleDismiss.bind(this);\n    }\n\n    static get displayName() {\n      return displayName;\n    }\n\n    componentDidMount() {\n      if (this.props.isOpen) {\n        this.present();\n      }\n    }\n\n    componentWillUnmount() {\n      if (this.overlay) {\n        this.overlay.dismiss();\n      }\n    }\n\n    handleDismiss(event: CustomEvent<OverlayEventDetail<any>>) {\n      if (this.props.onDidDismiss) {\n        this.props.onDidDismiss(event);\n      }\n      setRef(this.props.forwardedRef, null)\n    }\n\n    shouldComponentUpdate(nextProps: Props) {\n      // Check if the overlay component is about to dismiss\n      if (this.overlay && nextProps.isOpen !== this.props.isOpen && nextProps.isOpen === false) {\n        this.isDismissing = true;\n      }\n\n      return true;\n    }\n\n    async componentDidUpdate(prevProps: Props) {\n      if (this.overlay) {\n        attachProps(this.overlay, this.props, prevProps);\n      }\n\n      if (prevProps.isOpen !== this.props.isOpen && this.props.isOpen === true) {\n        this.present(prevProps);\n      }\n      if (this.overlay && prevProps.isOpen !== this.props.isOpen && this.props.isOpen === false) {\n        await this.overlay.dismiss();\n        this.isDismissing = false;\n\n        /**\n         * Now that the overlay is dismissed\n         * we need to render again so that any\n         * inner components will be unmounted\n         */\n        this.forceUpdate();\n      }\n    }\n\n    async present(prevProps?: Props) {\n      const {\n        children,\n        isOpen,\n        onDidDismiss,\n        onDidPresent,\n        onWillDismiss,\n        onWillPresent,\n        ...cProps\n      } = this.props;\n      const elementProps = {\n        ...cProps,\n        ref: this.props.forwardedRef,\n        [didDismissEventName]: this.handleDismiss,\n        [didPresentEventName]: (e: CustomEvent) =>\n          this.props.onDidPresent && this.props.onDidPresent(e),\n        [willDismissEventName]: (e: CustomEvent) =>\n          this.props.onWillDismiss && this.props.onWillDismiss(e),\n        [willPresentEventName]: (e: CustomEvent) =>\n          this.props.onWillPresent && this.props.onWillPresent(e),\n      };\n\n      this.overlay = await controller.create({\n        ...elementProps,\n        component: this.el,\n        componentProps: {},\n      });\n\n      setRef(this.props.forwardedRef, this.overlay);\n      attachProps(this.overlay, elementProps, prevProps);\n\n      await this.overlay.present();\n    }\n\n    render() {\n      /**\n       * Continue to render the component even when\n       * overlay is dismissing otherwise component\n       * will be hidden before animation is done.\n       */\n      return ReactDOM.createPortal(this.props.isOpen || this.isDismissing ? this.props.children : null, this.el);\n    }\n  }\n\n  return React.forwardRef<OverlayType, Props>((props, ref) => {\n    return <Overlay {...props} forwardedRef={ref} />;\n  });\n};\n","import { AlertOptions, alertController } from '@ionic/core';\n\nimport { createControllerComponent } from './createControllerComponent';\n\nexport const IonAlert = /*@__PURE__*/ createControllerComponent<AlertOptions, HTMLIonAlertElement>(\n  'IonAlert',\n  alertController\n);\n","import { LoadingOptions, loadingController } from '@ionic/core';\n\nimport { createControllerComponent } from './createControllerComponent';\n\nexport const IonLoading = /*@__PURE__*/ createControllerComponent<\n  LoadingOptions,\n  HTMLIonLoadingElement\n>('IonLoading', loadingController);\n","import { PickerOptions, pickerController } from '@ionic/core';\n\nimport { createControllerComponent } from './createControllerComponent';\n\nexport const IonPicker = /*@__PURE__*/ createControllerComponent<\n  PickerOptions,\n  HTMLIonPickerElement\n>('IonPicker', pickerController);\n","import { PopoverOptions, popoverController } from '@ionic/core';\n\nimport { createOverlayComponent } from './createOverlayComponent';\n\nexport type ReactPopoverOptions = Omit<PopoverOptions, 'component' | 'componentProps'> & {\n  children: React.ReactNode;\n};\n\nexport const IonPopover = /*@__PURE__*/ createOverlayComponent<\n  ReactPopoverOptions,\n  HTMLIonPopoverElement\n>('IonPopover', popoverController);\n","import { ModalOptions, modalController } from '@ionic/core';\n\nimport { createOverlayComponent } from './createOverlayComponent';\n\nexport type ReactModalOptions = Omit<ModalOptions, 'component' | 'componentProps'> & {\n  children: React.ReactNode;\n};\n\nexport const IonModal = /*@__PURE__*/ createOverlayComponent<\n  ReactModalOptions,\n  HTMLIonModalElement\n>('IonModal', modalController);\n","import React from 'react';\n\nimport { RouteInfo } from '../models/RouteInfo';\n\nexport interface StackContextState {\n  registerIonPage: (page: HTMLElement, routeInfo: RouteInfo) => void;\n  isInOutlet: () => boolean;\n}\n\nexport const StackContext = React.createContext<StackContextState>({\n  registerIonPage: () => undefined,\n  isInOutlet: () => false,\n});\n","import React from 'react';\n\nimport { mergeRefs } from '../components/utils';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\nimport { RouteInfo } from '../models';\n\nimport { StackContext } from './StackContext';\n\ninterface PageManagerProps {\n  className?: string;\n  forwardedRef?: React.ForwardedRef<HTMLDivElement>;\n  routeInfo?: RouteInfo;\n}\n\nexport class PageManager extends React.PureComponent<PageManagerProps> {\n  ionLifeCycleContext!: React.ContextType<typeof IonLifeCycleContext>;\n  context!: React.ContextType<typeof StackContext>;\n  ionPageElementRef: React.RefObject<HTMLDivElement>;\n  stableMergedRefs: React.RefCallback<HTMLDivElement>\n\n  constructor(props: PageManagerProps) {\n    super(props);\n    this.ionPageElementRef = React.createRef();\n    // React refs must be stable (not created inline).\n    this.stableMergedRefs = mergeRefs(this.ionPageElementRef, this.props.forwardedRef)\n  }\n\n  componentDidMount() {\n    if (this.ionPageElementRef.current) {\n      if (this.context.isInOutlet()) {\n        this.ionPageElementRef.current.classList.add('ion-page-invisible');\n      }\n      this.context.registerIonPage(this.ionPageElementRef.current, this.props.routeInfo!);\n      this.ionPageElementRef.current.addEventListener(\n        'ionViewWillEnter',\n        this.ionViewWillEnterHandler.bind(this)\n      );\n      this.ionPageElementRef.current.addEventListener(\n        'ionViewDidEnter',\n        this.ionViewDidEnterHandler.bind(this)\n      );\n      this.ionPageElementRef.current.addEventListener(\n        'ionViewWillLeave',\n        this.ionViewWillLeaveHandler.bind(this)\n      );\n      this.ionPageElementRef.current.addEventListener(\n        'ionViewDidLeave',\n        this.ionViewDidLeaveHandler.bind(this)\n      );\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.ionPageElementRef.current) {\n      this.ionPageElementRef.current.removeEventListener(\n        'ionViewWillEnter',\n        this.ionViewWillEnterHandler.bind(this)\n      );\n      this.ionPageElementRef.current.removeEventListener(\n        'ionViewDidEnter',\n        this.ionViewDidEnterHandler.bind(this)\n      );\n      this.ionPageElementRef.current.removeEventListener(\n        'ionViewWillLeave',\n        this.ionViewWillLeaveHandler.bind(this)\n      );\n      this.ionPageElementRef.current.removeEventListener(\n        'ionViewDidLeave',\n        this.ionViewDidLeaveHandler.bind(this)\n      );\n    }\n  }\n\n  ionViewWillEnterHandler() {\n    this.ionLifeCycleContext.ionViewWillEnter();\n  }\n\n  ionViewDidEnterHandler() {\n    this.ionLifeCycleContext.ionViewDidEnter();\n  }\n\n  ionViewWillLeaveHandler() {\n    this.ionLifeCycleContext.ionViewWillLeave();\n  }\n\n  ionViewDidLeaveHandler() {\n    this.ionLifeCycleContext.ionViewDidLeave();\n  }\n\n  render() {\n    const { className, children, routeInfo, forwardedRef, ...props } = this.props;\n\n    return (\n      <IonLifeCycleContext.Consumer>\n        {(context) => {\n          this.ionLifeCycleContext = context;\n          return (\n            <div\n              className={\n                className ? `${className} ion-page` : `ion-page`\n              }\n              ref={this.stableMergedRefs}\n              {...props}\n            >\n              {children}\n            </div>\n          );\n        }}\n      </IonLifeCycleContext.Consumer>\n    );\n  }\n\n  static get contextType() {\n    return StackContext;\n  }\n}\nexport default PageManager;\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport PageManager from '../routing/PageManager';\n\nimport { IonicReactProps } from './IonicReactProps';\nimport { createForwardRef } from './utils';\n\ninterface IonPageProps extends IonicReactProps {}\n\ninterface IonPageInternalProps extends IonPageProps {\n  forwardedRef?: React.ForwardedRef<HTMLDivElement>;\n}\n\nclass IonPageInternal extends React.Component<IonPageInternalProps> {\n  context!: React.ContextType<typeof NavContext>;\n\n  constructor(props: IonPageInternalProps) {\n    super(props);\n  }\n\n  render() {\n    const { className, children, forwardedRef, ...props } = this.props;\n\n    return this.context.hasIonicRouter() ? (\n      <PageManager\n        className={className ? `${className}` : ''}\n        routeInfo={this.context.routeInfo}\n        forwardedRef={forwardedRef}\n        {...props}\n      >\n        {children}\n      </PageManager>\n    ) : (\n      <div\n        className={className ? `ion-page ${className}` : 'ion-page'}\n        ref={forwardedRef}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n\n  static get displayName() {\n    return 'IonPage';\n  }\n\n  static get contextType() {\n    return NavContext;\n  }\n}\n\nexport const IonPage = createForwardRef(IonPageInternal, 'IonPage');\n","import React from 'react';\n\nexport interface IonTabsContextState {\n  activeTab: string | undefined;\n  selectTab: (tab: string) => boolean;\n}\n\nexport const IonTabsContext = React.createContext<IonTabsContextState>({\n  activeTab: undefined,\n  selectTab: () => false,\n});\n","export const HTMLElementSSR = (\n  typeof HTMLElement !== 'undefined'\n  ? HTMLElement\n  : class {}) as typeof HTMLElement;\n","import { JSX } from '@ionic/core';\nimport { JSX as IoniconsJSX } from 'ionicons';\n\nimport { /*@__PURE__*/ createReactComponent } from './createComponent';\n\nexport const IonTabButtonInner = /*@__PURE__*/ createReactComponent<\n  JSX.IonTabButton & { onIonTabButtonClick?: (e: CustomEvent) => void },\n  HTMLIonTabButtonElement\n>('ion-tab-button');\nexport const IonTabBarInner = /*@__PURE__*/ createReactComponent<\n  JSX.IonTabBar,\n  HTMLIonTabBarElement\n>('ion-tab-bar');\nexport const IonBackButtonInner = /*@__PURE__*/ createReactComponent<\n  Omit<JSX.IonBackButton, 'icon'>,\n  HTMLIonBackButtonElement\n>('ion-back-button');\nexport const IonRouterOutletInner = /*@__PURE__*/ createReactComponent<\n  JSX.IonRouterOutlet & {\n    setRef?: (val: HTMLIonRouterOutletElement) => void;\n    forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n  },\n  HTMLIonRouterOutletElement\n>('ion-router-outlet');\n\n// ionicons\nexport const IonIconInner = /*@__PURE__*/ createReactComponent<\n  IoniconsJSX.IonIcon,\n  HTMLIonIconElement\n>('ion-icon');\n","import React from 'react';\n\nimport { IonRouterOutletInner } from '../components/inner-proxies';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\nimport { RouteInfo } from '../models';\n\nimport { StackContext } from './StackContext';\n\ninterface OutletPageManagerProps {\n  className?: string;\n  forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n  routeInfo?: RouteInfo;\n  StackManager: any;\n}\n\nexport class OutletPageManager extends React.Component<OutletPageManagerProps> {\n  ionLifeCycleContext!: React.ContextType<typeof IonLifeCycleContext>;\n  context!: React.ContextType<typeof StackContext>;\n  ionRouterOutlet: HTMLIonRouterOutletElement | undefined;\n\n  constructor(props: OutletPageManagerProps) {\n    super(props);\n  }\n\n  componentDidMount() {\n    if (this.ionRouterOutlet) {\n      setTimeout(() => {\n        this.context.registerIonPage(this.ionRouterOutlet!, this.props.routeInfo!);\n      }, 25);\n\n      this.ionRouterOutlet.addEventListener(\n        'ionViewWillEnter',\n        this.ionViewWillEnterHandler.bind(this)\n      );\n      this.ionRouterOutlet.addEventListener(\n        'ionViewDidEnter',\n        this.ionViewDidEnterHandler.bind(this)\n      );\n      this.ionRouterOutlet.addEventListener(\n        'ionViewWillLeave',\n        this.ionViewWillLeaveHandler.bind(this)\n      );\n      this.ionRouterOutlet.addEventListener(\n        'ionViewDidLeave',\n        this.ionViewDidLeaveHandler.bind(this)\n      );\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.ionRouterOutlet) {\n      this.ionRouterOutlet.removeEventListener(\n        'ionViewWillEnter',\n        this.ionViewWillEnterHandler.bind(this)\n      );\n      this.ionRouterOutlet.removeEventListener(\n        'ionViewDidEnter',\n        this.ionViewDidEnterHandler.bind(this)\n      );\n      this.ionRouterOutlet.removeEventListener(\n        'ionViewWillLeave',\n        this.ionViewWillLeaveHandler.bind(this)\n      );\n      this.ionRouterOutlet.removeEventListener(\n        'ionViewDidLeave',\n        this.ionViewDidLeaveHandler.bind(this)\n      );\n    }\n  }\n\n  ionViewWillEnterHandler() {\n    this.ionLifeCycleContext.ionViewWillEnter();\n  }\n\n  ionViewDidEnterHandler() {\n    this.ionLifeCycleContext.ionViewDidEnter();\n  }\n\n  ionViewWillLeaveHandler() {\n    this.ionLifeCycleContext.ionViewWillLeave();\n  }\n\n  ionViewDidLeaveHandler() {\n    this.ionLifeCycleContext.ionViewDidLeave();\n  }\n\n  render() {\n    const { StackManager, children, routeInfo, ...props } = this.props;\n    return (\n      <IonLifeCycleContext.Consumer>\n        {(context) => {\n          this.ionLifeCycleContext = context;\n          return (\n            <StackManager routeInfo={routeInfo}>\n              <IonRouterOutletInner\n                setRef={(val: HTMLIonRouterOutletElement) => (this.ionRouterOutlet = val)}\n                {...props}\n              >\n                {children}\n              </IonRouterOutletInner>\n            </StackManager>\n          );\n        }}\n      </IonLifeCycleContext.Consumer>\n    );\n  }\n\n  static get contextType() {\n    return StackContext;\n  }\n}\nexport default OutletPageManager;\n","import { JSX as LocalJSX } from '@ionic/core';\nimport React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport OutletPageManager from '../routing/OutletPageManager';\n\nimport { IonicReactProps } from './IonicReactProps';\nimport { IonRouterOutletInner } from './inner-proxies';\nimport { createForwardRef } from './utils';\n\ntype Props = LocalJSX.IonRouterOutlet & {\n  basePath?: string;\n  ref?: React.Ref<any>;\n  ionPage?: boolean;\n};\n\ninterface InternalProps extends Props {\n  forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n}\n\ninterface InternalState {}\n\nclass IonRouterOutletContainer extends React.Component<InternalProps, InternalState> {\n  context!: React.ContextType<typeof NavContext>;\n\n  constructor(props: InternalProps) {\n    super(props);\n  }\n\n  render() {\n    const StackManager = this.context.getStackManager();\n    const { children, forwardedRef, ...props } = this.props;\n\n    return this.context.hasIonicRouter() ? (\n      props.ionPage ? (\n        <OutletPageManager\n          StackManager={StackManager}\n          routeInfo={this.context.routeInfo}\n          {...props}\n        >\n          {children}\n        </OutletPageManager>\n      ) : (\n        <StackManager routeInfo={this.context.routeInfo}>\n          <IonRouterOutletInner {...props} forwardedRef={forwardedRef}>\n            {children}\n          </IonRouterOutletInner>\n        </StackManager>\n      )\n    ) : (\n      <IonRouterOutletInner ref={forwardedRef} {...this.props}>\n        {this.props.children}\n      </IonRouterOutletInner>\n    );\n  }\n\n  static get contextType() {\n    return NavContext;\n  }\n}\n\nexport const IonRouterOutlet = createForwardRef<\n  Props & IonicReactProps,\n  HTMLIonRouterOutletElement\n>(IonRouterOutletContainer, 'IonRouterOutlet');\n","import { JSX as LocalJSX } from '@ionic/core';\nimport React from 'react';\n\nimport { RouterOptions } from '../../models';\nimport { IonicReactProps } from '../IonicReactProps';\nimport { IonTabButtonInner } from '../inner-proxies';\n\ntype Props = LocalJSX.IonTabButton &\n  IonicReactProps & {\n    routerOptions?: RouterOptions;\n    ref?: React.Ref<HTMLIonTabButtonElement>;\n    onClick?: (e: any) => void;\n  };\n\nexport class IonTabButton extends React.Component<Props> {\n  constructor(props: Props) {\n    super(props);\n    this.handleIonTabButtonClick = this.handleIonTabButtonClick.bind(this);\n  }\n\n  handleIonTabButtonClick() {\n    if (this.props.onClick) {\n      this.props.onClick(\n        new CustomEvent('ionTabButtonClick', {\n          detail: {\n            tab: this.props.tab,\n            href: this.props.href,\n            routeOptions: this.props.routerOptions,\n          },\n        })\n      );\n    }\n  }\n\n  render() {\n    const { onClick, ...rest } = this.props;\n    return (\n      <IonTabButtonInner\n        onIonTabButtonClick={this.handleIonTabButtonClick}\n        {...rest}\n      ></IonTabButtonInner>\n    );\n  }\n\n  static get displayName() {\n    return 'IonTabButton';\n  }\n}\n","import { JSX as LocalJSX } from '@ionic/core';\nimport React, { useContext } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport { RouteInfo } from '../../models';\nimport { IonicReactProps } from '../IonicReactProps';\nimport { IonTabBarInner } from '../inner-proxies';\nimport { createForwardRef } from '../utils';\n\nimport { IonTabButton } from './IonTabButton';\n\ntype IonTabBarProps = LocalJSX.IonTabBar &\n  IonicReactProps & {\n    onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n    onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n    slot?: 'bottom' | 'top';\n    style?: { [key: string]: string };\n  };\n\ninterface InternalProps extends IonTabBarProps {\n  forwardedRef?: React.ForwardedRef<HTMLIonIconElement>;\n  onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n  routeInfo: RouteInfo;\n}\n\ninterface TabUrls {\n  originalHref: string;\n  currentHref: string;\n  originalRouteOptions?: unknown;\n  currentRouteOptions?: unknown;\n}\n\ninterface IonTabBarState {\n  activeTab?: string;\n  tabs: { [key: string]: TabUrls };\n}\n\nclass IonTabBarUnwrapped extends React.PureComponent<InternalProps, IonTabBarState> {\n  context!: React.ContextType<typeof NavContext>;\n\n  constructor(props: InternalProps) {\n    super(props);\n    const tabs: { [key: string]: TabUrls } = {};\n    React.Children.forEach((props as any).children, (child: any) => {\n      if (\n        child != null &&\n        typeof child === 'object' &&\n        child.props &&\n        (child.type === IonTabButton || child.type.isTabButton)\n      ) {\n        tabs[child.props.tab] = {\n          originalHref: child.props.href,\n          currentHref: child.props.href,\n          originalRouteOptions:\n            child.props.href === props.routeInfo?.pathname\n              ? props.routeInfo?.routeOptions\n              : undefined,\n          currentRouteOptions:\n            child.props.href === props.routeInfo?.pathname\n              ? props.routeInfo?.routeOptions\n              : undefined,\n        };\n      }\n    });\n\n    this.state = {\n      tabs,\n    };\n\n    this.onTabButtonClick = this.onTabButtonClick.bind(this);\n    this.renderTabButton = this.renderTabButton.bind(this);\n    this.setActiveTabOnContext = this.setActiveTabOnContext.bind(this);\n    this.selectTab = this.selectTab.bind(this);\n  }\n\n  componentDidMount() {\n    const tabs = this.state.tabs;\n    const tabKeys = Object.keys(tabs);\n    const activeTab = tabKeys.find((key) => {\n      const href = tabs[key].originalHref;\n      return this.props.routeInfo!.pathname.startsWith(href);\n    });\n\n    if (activeTab) {\n      this.setState({\n        activeTab,\n      });\n    }\n  }\n\n  componentDidUpdate() {\n    if (this.state.activeTab) {\n      this.setActiveTabOnContext(this.state.activeTab);\n    }\n  }\n\n  setActiveTabOnContext = (_tab: string) => {};\n\n  selectTab(tab: string) {\n    const tabUrl = this.state.tabs[tab];\n    if (tabUrl) {\n      this.onTabButtonClick(\n        new CustomEvent('ionTabButtonClick', {\n          detail: {\n            href: tabUrl.currentHref,\n            tab,\n            selected: tab === this.state.activeTab,\n            routeOptions: undefined,\n          },\n        })\n      );\n      return true;\n    }\n    return false;\n  }\n\n  static getDerivedStateFromProps(props: InternalProps, state: IonTabBarState) {\n    const tabs = { ...state.tabs };\n    const tabKeys = Object.keys(state.tabs);\n    const activeTab = tabKeys.find((key) => {\n      const href = state.tabs[key].originalHref;\n      return props.routeInfo!.pathname.startsWith(href);\n    });\n\n    // Check to see if the tab button href has changed, and if so, update it in the tabs state\n    React.Children.forEach((props as any).children, (child: any) => {\n      if (\n        child != null &&\n        typeof child === 'object' &&\n        child.props &&\n        (child.type === IonTabButton || child.type.isTabButton)\n      ) {\n        const tab = tabs[child.props.tab];\n        if (!tab || tab.originalHref !== child.props.href) {\n          tabs[child.props.tab] = {\n            originalHref: child.props.href,\n            currentHref: child.props.href,\n            originalRouteOptions: child.props.routeOptions,\n            currentRouteOptions: child.props.routeOptions,\n          };\n        }\n      }\n    });\n\n    const { activeTab: prevActiveTab } = state;\n    if (activeTab && prevActiveTab) {\n      const prevHref = state.tabs[prevActiveTab].currentHref;\n      const prevRouteOptions = state.tabs[prevActiveTab].currentRouteOptions;\n      if (\n        activeTab !== prevActiveTab ||\n        prevHref !== props.routeInfo?.pathname ||\n        prevRouteOptions !== props.routeInfo?.routeOptions\n      ) {\n        tabs[activeTab] = {\n          originalHref: tabs[activeTab].originalHref,\n          currentHref: props.routeInfo!.pathname + (props.routeInfo!.search || ''),\n          originalRouteOptions: tabs[activeTab].originalRouteOptions,\n          currentRouteOptions: props.routeInfo?.routeOptions,\n        };\n        if (props.routeInfo.routeAction === 'pop' && activeTab !== prevActiveTab) {\n          // If navigating back and the tabs change, set the prev tab back to its original href\n          tabs[prevActiveTab] = {\n            originalHref: tabs[prevActiveTab].originalHref,\n            currentHref: tabs[prevActiveTab].originalHref,\n            originalRouteOptions: tabs[prevActiveTab].originalRouteOptions,\n            currentRouteOptions: tabs[prevActiveTab].currentRouteOptions,\n          };\n        }\n      }\n    }\n\n    activeTab && props.onSetCurrentTab(activeTab, props.routeInfo);\n\n    return {\n      activeTab,\n      tabs,\n    };\n  }\n\n  private onTabButtonClick(\n    e: CustomEvent<{ href: string; selected: boolean; tab: string; routeOptions: unknown }>\n  ) {\n    const tappedTab = this.state.tabs[e.detail.tab];\n    const originalHref = tappedTab.originalHref;\n    const currentHref = e.detail.href;\n    const { activeTab: prevActiveTab } = this.state;\n    // this.props.onSetCurrentTab(e.detail.tab, this.props.routeInfo);\n    // Clicking the current tab will bring you back to the original href\n    if (prevActiveTab === e.detail.tab) {\n      if (originalHref !== currentHref) {\n        this.context.resetTab(e.detail.tab, originalHref, tappedTab.originalRouteOptions);\n      }\n    } else {\n      if (this.props.onIonTabsWillChange) {\n        this.props.onIonTabsWillChange(\n          new CustomEvent('ionTabWillChange', { detail: { tab: e.detail.tab } })\n        );\n      }\n      if (this.props.onIonTabsDidChange) {\n        this.props.onIonTabsDidChange(\n          new CustomEvent('ionTabDidChange', { detail: { tab: e.detail.tab } })\n        );\n      }\n      this.setActiveTabOnContext(e.detail.tab);\n      this.context.changeTab(e.detail.tab, currentHref, e.detail.routeOptions);\n    }\n  }\n\n  private renderTabButton(activeTab: string | null | undefined) {\n    return (\n      child:\n        | React.ReactElement<\n            LocalJSX.IonTabButton & { onClick: (e: any) => void; routeOptions?: unknown }\n          >\n        | null\n        | undefined\n    ) => {\n      if (\n        child != null &&\n        child.props &&\n        (child.type === IonTabButton || (child as any).type.isTabButton)\n      ) {\n        const href =\n          child.props.tab === activeTab\n            ? this.props.routeInfo?.pathname\n            : this.state.tabs[child.props.tab!].currentHref;\n        const routeOptions =\n          child.props.tab === activeTab\n            ? this.props.routeInfo?.routeOptions\n            : this.state.tabs[child.props.tab!].currentRouteOptions;\n\n        return React.cloneElement(child, {\n          href,\n          routeOptions,\n          onClick: this.onTabButtonClick,\n        });\n      }\n      return null;\n    };\n  }\n\n  render() {\n    const { activeTab } = this.state;\n    return (\n      <IonTabBarInner {...this.props} selectedTab={activeTab}>\n        {React.Children.map(this.props.children as any, this.renderTabButton(activeTab))}\n      </IonTabBarInner>\n    );\n  }\n\n  static get contextType() {\n    return NavContext;\n  }\n}\n\nconst IonTabBarContainer: React.FC<InternalProps> = React.memo<InternalProps>(\n  ({ forwardedRef, ...props }) => {\n    const context = useContext(NavContext);\n    return (\n      <IonTabBarUnwrapped\n        ref={forwardedRef}\n        {...(props as any)}\n        routeInfo={props.routeInfo || context.routeInfo || { pathname: window.location.pathname }}\n        onSetCurrentTab={context.setCurrentTab}\n      >\n        {props.children}\n      </IonTabBarUnwrapped>\n    );\n  }\n);\n\nexport const IonTabBar = createForwardRef<IonTabBarProps, HTMLIonTabBarElement>(\n  IonTabBarContainer,\n  'IonTabBar'\n);\n","import { JSX as LocalJSX } from '@ionic/core';\nimport React, { Fragment } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport PageManager from '../../routing/PageManager';\nimport { HTMLElementSSR } from '../../utils/HTMLElementSSR';\nimport { IonRouterOutlet } from '../IonRouterOutlet';\n\nimport { IonTabBar } from './IonTabBar';\nimport { IonTabsContext, IonTabsContextState } from './IonTabsContext';\n\nclass IonTabsElement extends HTMLElementSSR {\n  constructor() {\n    super();\n  }\n}\n\nif (typeof (window as any) !== 'undefined' && window.customElements) {\n  const element = window.customElements.get('ion-tabs');\n  if (!element) {\n    window.customElements.define('ion-tabs', IonTabsElement);\n  }\n}\n\ndeclare global {\n  namespace JSX {\n    interface IntrinsicElements {\n      'ion-tabs': any;\n    }\n  }\n}\n\ntype ChildFunction = (ionTabContext: IonTabsContextState) => React.ReactNode;\n\ninterface Props extends LocalJSX.IonTabs {\n  className?: string;\n  children: ChildFunction | React.ReactNode;\n}\n\nconst hostStyles: React.CSSProperties = {\n  display: 'flex',\n  position: 'absolute',\n  top: '0',\n  left: '0',\n  right: '0',\n  bottom: '0',\n  flexDirection: 'column',\n  width: '100%',\n  height: '100%',\n  contain: 'layout size style',\n};\n\nconst tabsInner: React.CSSProperties = {\n  position: 'relative',\n  flex: 1,\n  contain: 'layout size style',\n};\n\nexport class IonTabs extends React.Component<Props> {\n  context!: React.ContextType<typeof NavContext>;\n  routerOutletRef: React.Ref<HTMLIonRouterOutletElement> = React.createRef();\n  selectTabHandler?: (tag: string) => boolean;\n  tabBarRef = React.createRef<any>();\n\n  ionTabContextState: IonTabsContextState = {\n    activeTab: undefined,\n    selectTab: () => false,\n  };\n\n  constructor(props: Props) {\n    super(props);\n  }\n\n  componentDidMount() {\n    if (this.tabBarRef.current) {\n      // Grab initial value\n      this.ionTabContextState.activeTab = this.tabBarRef.current.state.activeTab;\n      // Override method\n      this.tabBarRef.current.setActiveTabOnContext = (tab: string) => {\n        this.ionTabContextState.activeTab = tab;\n      };\n      this.ionTabContextState.selectTab = this.tabBarRef.current.selectTab;\n    }\n  }\n\n  render() {\n    let outlet: React.ReactElement<{}> | undefined;\n    let tabBar: React.ReactElement | undefined;\n    const { className, onIonTabsDidChange, onIonTabsWillChange, ...props } = this.props;\n\n    const children =\n      typeof this.props.children === 'function'\n        ? (this.props.children as ChildFunction)(this.ionTabContextState)\n        : this.props.children;\n\n    React.Children.forEach(children, (child: any) => {\n      if (child == null || typeof child !== 'object' || !child.hasOwnProperty('type')) {\n        return;\n      }\n      if (child.type === IonRouterOutlet || child.type.isRouterOutlet) {\n        outlet = React.cloneElement(child, { tabs: true });\n      } else if (child.type === Fragment && child.props.children[0].type === IonRouterOutlet) {\n        outlet = child.props.children[0];\n      }\n\n      let childProps: any = {\n        ref: this.tabBarRef\n      }\n\n      /**\n       * Only pass these props\n       * down from IonTabs to IonTabBar\n       * if they are defined, otherwise\n       * if you have a handler set on\n       * IonTabBar it will be overridden.\n       */\n      if (onIonTabsDidChange !== undefined) {\n        childProps = {\n          ...childProps,\n          onIonTabsDidChange\n        }\n      }\n\n      if (onIonTabsWillChange !== undefined) {\n        childProps = {\n          ...childProps,\n          onIonTabsWillChange\n        }\n      }\n\n      if (child.type === IonTabBar || child.type.isTabBar) {\n        tabBar = React.cloneElement(child, childProps);\n      } else if (\n        child.type === Fragment &&\n        (child.props.children[1].type === IonTabBar || child.props.children[1].type.isTabBar)\n      ) {\n        tabBar = React.cloneElement(child.props.children[1], childProps);\n      }\n    });\n\n    if (!outlet) {\n      throw new Error('IonTabs must contain an IonRouterOutlet');\n    }\n    if (!tabBar) {\n      throw new Error('IonTabs needs a IonTabBar');\n    }\n\n    return (\n      <IonTabsContext.Provider value={this.ionTabContextState}>\n        {this.context.hasIonicRouter() ? (\n          <PageManager\n            className={className ? `${className}` : ''}\n            routeInfo={this.context.routeInfo}\n            {...props}\n          >\n            <ion-tabs className=\"ion-tabs\" style={hostStyles}>\n              {tabBar.props.slot === 'top' ? tabBar : null}\n              <div style={tabsInner} className=\"tabs-inner\">\n                {outlet}\n              </div>\n              {tabBar.props.slot === 'bottom' ? tabBar : null}\n            </ion-tabs>\n          </PageManager>\n        ) : (\n          <div className={className ? `${className}` : 'ion-tabs'} {...props} style={hostStyles}>\n            {tabBar.props.slot === 'top' ? tabBar : null}\n            <div style={tabsInner} className=\"tabs-inner\">\n              {outlet}\n            </div>\n            {tabBar.props.slot === 'bottom' ? tabBar : null}\n          </div>\n        )}\n      </IonTabsContext.Provider>\n    );\n  }\n\n  static get contextType() {\n    return NavContext;\n  }\n}\n","export const isDevMode = () => {\n  return process && process.env && process.env.NODE_ENV === 'development';\n};\n\nconst warnings: { [key: string]: boolean } = {};\n\nexport const deprecationWarning = (key: string, message: string) => {\n  if (isDevMode()) {\n    if (!warnings[key]) {\n      console.warn(message);\n      warnings[key] = true;\n    }\n  }\n};\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nimport { IonicReactProps } from './IonicReactProps';\nimport { IonIconInner } from './inner-proxies';\nimport { createForwardRef, isPlatform } from './utils';\nimport { deprecationWarning } from './utils/dev';\n\ninterface IonIconProps {\n  ariaLabel?: string;\n  color?: string;\n  flipRtl?: boolean;\n  icon?: string;\n  ios?: string;\n  lazy?: boolean;\n  md?: string;\n  mode?: 'ios' | 'md';\n  name?: string;\n  size?: string;\n  src?: string;\n}\n\ntype InternalProps = IonIconProps & {\n  forwardedRef?: React.ForwardedRef<HTMLIonIconElement>;\n};\n\nclass IonIconContainer extends React.PureComponent<InternalProps> {\n  constructor(props: InternalProps) {\n    super(props);\n    if (this.props.name) {\n      deprecationWarning(\n        'icon-name',\n        'In Ionic React, you import icons from \"ionicons/icons\" and set the icon you imported to the \"icon\" property. Setting the \"name\" property has no effect.'\n      );\n    }\n  }\n\n  render() {\n    const { icon, ios, md, ...rest } = this.props;\n\n    let iconToUse: typeof icon;\n\n    if (ios || md) {\n      if (isPlatform('ios')) {\n        iconToUse = ios ?? md ?? icon;\n      } else {\n        iconToUse = md ?? ios ?? icon;\n      }\n    } else {\n      iconToUse = icon;\n    }\n\n    return (\n      <IonIconInner ref={this.props.forwardedRef} icon={iconToUse} {...rest}>\n        {this.props.children}\n      </IonIconInner>\n    );\n  }\n\n  static get contextType() {\n    return NavContext;\n  }\n}\n\nexport const IonIcon = createForwardRef<IonIconProps & IonicReactProps, HTMLIonIconElement>(\n  IonIconContainer,\n  'IonIcon'\n);\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nexport interface IonRouteProps {\n  path?: string;\n  exact?: boolean;\n  show?: boolean;\n  render: (props?: any) => JSX.Element;\n  disableIonPageManagement?: boolean;\n}\n\ninterface IonRouteState {}\n\nexport class IonRoute extends React.PureComponent<IonRouteProps, IonRouteState> {\n  context!: React.ContextType<typeof NavContext>;\n\n  render() {\n    const IonRouteInner = this.context.getIonRoute();\n\n    if (!this.context.hasIonicRouter() || !IonRoute) {\n      console.error(\n        'You either do not have an Ionic Router package, or your router does not support using <IonRoute>'\n      );\n      return null;\n    }\n\n    return <IonRouteInner {...this.props} />;\n  }\n\n  static get contextType() {\n    return NavContext;\n  }\n}\n","import { AnimationBuilder } from '@ionic/core';\nimport React, { useContext } from 'react';\n\nimport { RouteAction, RouterDirection, RouterOptions } from '../models';\nimport { RouteInfo } from '../models/RouteInfo';\n\nexport interface IonRouterContextState {\n  routeInfo: RouteInfo;\n  push: (\n    pathname: string,\n    routerDirection?: RouterDirection,\n    routeAction?: RouteAction,\n    routerOptions?: RouterOptions,\n    animationBuilder?: AnimationBuilder\n  ) => void;\n  back: (animationBuilder?: AnimationBuilder) => void;\n  canGoBack: () => boolean;\n  nativeBack: () => void;\n}\n\nexport const IonRouterContext = React.createContext<IonRouterContextState>({\n  routeInfo: undefined as any,\n  push: () => {\n    throw new Error('An Ionic Router is required for IonRouterContext');\n  },\n  back: () => {\n    throw new Error('An Ionic Router is required for IonRouterContext');\n  },\n  canGoBack: () => {\n    throw new Error('An Ionic Router is required for IonRouterContext');\n  },\n  nativeBack: () => {\n    throw new Error('An Ionic Router is required for IonRouterContext');\n  },\n});\n\n/**\n * A hook for more direct control over routing in an Ionic React applicaiton. Allows you to pass additional meta-data to the router before the call to the native router.\n */\nexport function useIonRouter(): UseIonRouterResult {\n  const context = useContext(IonRouterContext);\n  return {\n    back: context.back,\n    push: context.push,\n    goBack: context.back,\n    canGoBack: context.canGoBack,\n    routeInfo: context.routeInfo,\n  };\n}\n\nexport type UseIonRouterResult = {\n  /**\n   * @deprecated - Use goBack instead\n   * @param animationBuilder - Optional - A custom transition animation to use\n   */\n  back(animationBuilder?: AnimationBuilder): void;\n  /**\n   * Navigates to a new pathname\n   * @param pathname - The path to navigate to\n   * @param routerDirection - Optional - The RouterDirection to use for transition purposes, defaults to 'forward'\n   * @param routeAction - Optional - The RouteAction to use for history purposes, defaults to 'push'\n   * @param routerOptions - Optional - Any additional parameters to pass to the router\n   * @param animationBuilder - Optional - A custom transition animation to use\n   */\n  push(\n    pathname: string,\n    routerDirection?: RouterDirection,\n    routeAction?: RouteAction,\n    routerOptions?: RouterOptions,\n    animationBuilder?: AnimationBuilder\n  ): void;\n  /**\n   * Navigates backwards in history, using the IonRouter to determine history\n   * @param animationBuilder - Optional - A custom transition animation to use\n   */\n  goBack(animationBuilder?: AnimationBuilder): void;\n  /**\n   * Determines if there are any additional routes in the the Router's history. However, routing is not prevented if the browser's history has more entries. Returns true if more entries exist, false if not.\n   */\n  canGoBack(): boolean;\n  routeInfo: RouteInfo;\n};\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nexport interface IonRedirectProps {\n  path?: string;\n  exact?: boolean;\n  to: string;\n  routerOptions?: unknown;\n}\n\ninterface IonRedirectState {}\n\nexport class IonRedirect extends React.PureComponent<IonRedirectProps, IonRedirectState> {\n  context!: React.ContextType<typeof NavContext>;\n\n  render() {\n    const IonRedirectInner = this.context.getIonRedirect();\n\n    if (!this.context.hasIonicRouter() || !IonRedirect) {\n      console.error(\n        'You either do not have an Ionic Router package, or your router does not support using <IonRedirect>'\n      );\n      return null;\n    }\n\n    return <IonRedirectInner {...this.props} />;\n  }\n\n  static get contextType() {\n    return NavContext;\n  }\n}\n","import {\n  Animation,\n  AnimationCallbackOptions,\n  AnimationDirection,\n  AnimationFill,\n  AnimationKeyFrames,\n  AnimationLifecycle,\n  createAnimation,\n} from '@ionic/core';\nimport React from 'react';\n\ninterface PartialPropertyValue {\n  property: string;\n  value: any;\n}\ninterface PropertyValue {\n  property: string;\n  fromValue: any;\n  toValue: any;\n}\n\nexport interface CreateAnimationProps {\n  delay?: number;\n  direction?: AnimationDirection;\n  duration?: number;\n  easing?: string;\n  fill?: AnimationFill;\n  iterations?: number;\n  id?: string;\n\n  afterAddRead?: () => void;\n  afterAddWrite?: () => void;\n  afterClearStyles?: string[];\n  afterStyles?: { [property: string]: any };\n  afterAddClass?: string | string[];\n  afterRemoveClass?: string | string[];\n\n  beforeAddRead?: () => void;\n  beforeAddWrite?: () => void;\n  beforeClearStyles?: string[];\n  beforeStyles?: { [property: string]: any };\n  beforeAddClass?: string | string[];\n  beforeRemoveClass?: string | string[];\n\n  onFinish?: { callback: AnimationLifecycle; opts?: AnimationCallbackOptions };\n\n  keyframes?: AnimationKeyFrames;\n  from?: PartialPropertyValue[] | PartialPropertyValue;\n  to?: PartialPropertyValue[] | PartialPropertyValue;\n  fromTo?: PropertyValue[] | PropertyValue;\n\n  play?: boolean;\n  pause?: boolean;\n  stop?: boolean;\n  destroy?: boolean;\n\n  progressStart?: { forceLinearEasing: boolean; step?: number };\n  progressStep?: { step: number };\n  progressEnd?: { playTo: 0 | 1 | undefined; step: number; dur?: number };\n}\n\nexport class CreateAnimation extends React.PureComponent<CreateAnimationProps> {\n  nodes: Map<number, HTMLElement> = new Map();\n  animation: Animation;\n\n  constructor(props: any) {\n    super(props);\n\n    this.animation = createAnimation(props.id);\n  }\n\n  setupAnimation(props: any) {\n    const animation = this.animation;\n\n    if (this.nodes.size > 0) {\n      animation.addElement(Array.from(this.nodes.values()));\n    }\n\n    checkConfig(animation, props);\n    checkPlayback(animation, props);\n  }\n\n  componentDidMount() {\n    const props = this.props;\n    this.setupAnimation(props);\n  }\n\n  componentDidUpdate(prevProps: any) {\n    const animation = this.animation;\n\n    const props = this.props;\n\n    checkConfig(animation, props, prevProps);\n    checkProgress(animation, props, prevProps);\n    checkPlayback(animation, props, prevProps);\n  }\n\n  render() {\n    const { children } = this.props;\n    return (\n      <>\n        {React.Children.map(children, (child, id) =>\n          React.cloneElement(child as any, { ref: (el: any) => this.nodes.set(id, el) })\n        )}\n      </>\n    );\n  }\n}\n\nconst checkConfig = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n  const reservedProps = [\n    'children',\n    'progressStart',\n    'progressStep',\n    'progressEnd',\n    'pause',\n    'stop',\n    'destroy',\n    'play',\n    'from',\n    'to',\n    'fromTo',\n    'onFinish',\n  ];\n  for (const key in currentProps) {\n    if (\n      currentProps.hasOwnProperty(key) &&\n      !reservedProps.includes(key) &&\n      currentProps[key] !== prevProps[key]\n    ) {\n      (animation as any)[key]((currentProps as any)[key]);\n    }\n  }\n\n  const fromValues = currentProps.from;\n  if (fromValues && fromValues !== prevProps.from) {\n    const values = Array.isArray(fromValues) ? fromValues : [fromValues];\n    values.forEach((val) => animation.from(val.property, val.value));\n  }\n\n  const toValues = currentProps.to;\n  if (toValues && toValues !== prevProps.to) {\n    const values = Array.isArray(toValues) ? toValues : [toValues];\n    values.forEach((val) => animation.to(val.property, val.value));\n  }\n\n  const fromToValues = currentProps.fromTo;\n  if (fromToValues && fromToValues !== prevProps.fromTo) {\n    const values = Array.isArray(fromToValues) ? fromToValues : [fromToValues];\n    values.forEach((val) => animation.fromTo(val.property, val.fromValue, val.toValue));\n  }\n\n  const onFinishValues = currentProps.onFinish;\n  if (onFinishValues && onFinishValues !== prevProps.onFinish) {\n    const values = Array.isArray(onFinishValues) ? onFinishValues : [onFinishValues];\n    values.forEach((val) => animation.onFinish(val.callback, val.opts));\n  }\n};\n\nconst checkProgress = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n  const { progressStart, progressStep, progressEnd } = currentProps;\n\n  if (\n    progressStart &&\n    (prevProps.progressStart?.forceLinearEasing !== progressStart?.forceLinearEasing ||\n      prevProps.progressStart?.step !== progressStart?.step)\n  ) {\n    animation.progressStart(progressStart.forceLinearEasing, progressStart.step);\n  }\n\n  if (progressStep && prevProps.progressStep?.step !== progressStep?.step) {\n    animation.progressStep(progressStep.step);\n  }\n\n  if (\n    progressEnd &&\n    (prevProps.progressEnd?.playTo !== progressEnd?.playTo ||\n      prevProps.progressEnd?.step !== progressEnd?.step ||\n      prevProps?.dur !== progressEnd?.dur)\n  ) {\n    animation.progressEnd(progressEnd.playTo, progressEnd.step, progressEnd.dur);\n  }\n};\n\nconst checkPlayback = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n  if (!prevProps.play && currentProps.play) {\n    animation.play();\n  }\n\n  if (!prevProps.pause && currentProps.pause) {\n    animation.pause();\n  }\n\n  if (!prevProps.stop && currentProps.stop) {\n    animation.stop();\n  }\n\n  if (!prevProps.destroy && currentProps.destroy) {\n    animation.destroy();\n  }\n};\n","import { defineCustomElements } from '@ionic/core/loader';\nimport { addIcons } from 'ionicons';\nimport {\n  arrowBackSharp,\n  caretBackSharp,\n  chevronBack,\n  chevronForward,\n  close,\n  closeCircle,\n  closeSharp,\n  menuOutline,\n  menuSharp,\n  reorderThreeOutline,\n  reorderTwoSharp,\n  searchOutline,\n  searchSharp,\n} from 'ionicons/icons';\nexport {\n  Animation,\n  AnimationBuilder,\n  AnimationCallbackOptions,\n  AnimationDirection,\n  AnimationFill,\n  AnimationKeyFrames,\n  AnimationLifecycle,\n  createAnimation,\n  createGesture,\n  Gesture,\n  GestureConfig,\n  GestureDetail,\n  iosTransitionAnimation,\n  IonicSafeString,\n  mdTransitionAnimation,\n  NavComponentWithProps,\n  setupConfig,\n  IonicSwiper,\n  IonicSlides,\n\n  SpinnerTypes,\n\n  ActionSheetOptions,\n  ActionSheetButton,\n\n  AlertOptions,\n  AlertInput,\n  AlertTextareaAttributes,\n  AlertInputAttributes,\n  AlertButton,\n\n  LoadingOptions,\n\n  ModalOptions,\n\n  PickerOptions,\n  PickerButton,\n  PickerColumn,\n  PickerColumnOption,\n\n  PopoverOptions,\n\n  ToastOptions,\n  ToastButton\n\n} from '@ionic/core';\nexport * from './proxies';\n\n// createControllerComponent\nexport { IonAlert } from './IonAlert';\nexport { IonLoading } from './IonLoading';\nexport * from './IonToast';\nexport { IonPicker } from './IonPicker';\n\n// createOverlayComponent\nexport * from './IonActionSheet';\nexport { IonModal } from './IonModal';\nexport { IonPopover } from './IonPopover';\n\n// Custom Components\nexport { IonPage } from './IonPage';\nexport { IonTabsContext, IonTabsContextState } from './navigation/IonTabsContext';\nexport { IonTabs } from './navigation/IonTabs';\nexport { IonTabBar } from './navigation/IonTabBar';\nexport { IonTabButton } from './navigation/IonTabButton';\nexport { IonBackButton } from './navigation/IonBackButton';\nexport { IonRouterOutlet } from './IonRouterOutlet';\nexport { IonIcon } from './IonIcon';\nexport * from './IonRoute';\nexport * from './IonRedirect';\nexport * from './IonRouterContext';\n\n// Utils\nexport { isPlatform, getPlatforms, getConfig } from './utils';\nexport * from './hrefprops';\n\n// Ionic Animations\nexport { CreateAnimation } from './CreateAnimation';\n\n// Hooks\nexport { useIonActionSheet, UseIonActionSheetResult } from '../hooks/useIonActionSheet';\nexport { useIonAlert, UseIonAlertResult } from '../hooks/useIonAlert';\nexport { useIonToast, UseIonToastResult } from '../hooks/useIonToast';\nexport { useIonModal, UseIonModalResult } from '../hooks/useIonModal';\nexport { useIonPopover, UseIonPopoverResult } from '../hooks/useIonPopover';\nexport { useIonPicker, UseIonPickerResult } from '../hooks/useIonPicker';\nexport { useIonLoading, UseIonLoadingResult } from '../hooks/useIonLoading';\n\n// Icons that are used by internal components\naddIcons({\n  'arrow-back-sharp': arrowBackSharp,\n  'caret-back-sharp': caretBackSharp,\n  'chevron-back': chevronBack,\n  'chevron-forward': chevronForward,\n  close,\n  'close-circle': closeCircle,\n  'close-sharp': closeSharp,\n  'menu-outline': menuOutline,\n  'menu-sharp': menuSharp,\n  'reorder-two-sharp': reorderTwoSharp,\n  'reorder-three-outline': reorderThreeOutline,\n  'search-outline': searchOutline,\n  'search-sharp': searchSharp,\n});\n\n// TODO: defineCustomElements() is asyncronous\n// We need to use the promise\nif (typeof window !== 'undefined') {\n  defineCustomElements(window);\n}\n","import React from 'react';\n\nimport { RouteInfo } from '../models/RouteInfo';\n\nimport { ViewItem } from './ViewItem';\n\nexport interface RouteManagerContextState {\n  addViewItem: (viewItem: ViewItem) => void;\n  canGoBack: () => boolean;\n  clearOutlet: (outletId: string) => void;\n  createViewItem: (\n    outletId: string,\n    reactElement: React.ReactElement,\n    routeInfo: RouteInfo,\n    page?: HTMLElement\n  ) => ViewItem;\n  findViewItemByPathname(pathname: string, outletId?: string): ViewItem | undefined;\n  findLeavingViewItemByRouteInfo: (routeInfo: RouteInfo, outletId?: string) => ViewItem | undefined;\n  findViewItemByRouteInfo: (routeInfo: RouteInfo, outletId?: string) => ViewItem | undefined;\n  getChildrenToRender: (\n    outletId: string,\n    ionRouterOutlet: React.ReactElement,\n    routeInfo: RouteInfo,\n    reRender: () => void\n  ) => React.ReactNode[];\n  goBack: () => void;\n  unMountViewItem: (viewItem: ViewItem) => void;\n}\n\nexport const RouteManagerContext = /*@__PURE__*/ React.createContext<RouteManagerContextState>({\n  addViewItem: () => undefined,\n  canGoBack: () => undefined as any,\n  clearOutlet: () => undefined,\n  createViewItem: () => undefined as any,\n  findViewItemByPathname: () => undefined,\n  findLeavingViewItemByRouteInfo: () => undefined,\n  findViewItemByRouteInfo: () => undefined,\n  getChildrenToRender: () => undefined as any,\n  goBack: () => undefined,\n  unMountViewItem: () => undefined,\n});\n","import React from 'react';\n\nimport { DefaultIonLifeCycleContext, IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\ninterface ViewTransitionManagerProps {\n  removeView: () => void;\n  mount: boolean;\n}\n\ninterface ViewTransitionManagerState {\n  show: boolean;\n}\n\nexport class ViewLifeCycleManager extends React.Component<\n  ViewTransitionManagerProps,\n  ViewTransitionManagerState\n> {\n  ionLifeCycleContext = new DefaultIonLifeCycleContext();\n  private _isMounted = false;\n\n  constructor(props: ViewTransitionManagerProps) {\n    super(props);\n\n    this.ionLifeCycleContext.onComponentCanBeDestroyed(() => {\n      if (!this.props.mount) {\n        if (this._isMounted) {\n          this.setState(\n            {\n              show: false,\n            },\n            () => this.props.removeView()\n          );\n        }\n      }\n    });\n\n    this.state = {\n      show: true,\n    };\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n  }\n\n  componentWillUnmount() {\n    this._isMounted = false;\n  }\n\n  render() {\n    const { show } = this.state;\n    return (\n      <IonLifeCycleContext.Provider value={this.ionLifeCycleContext}>\n        {show && this.props.children}\n      </IonLifeCycleContext.Provider>\n    );\n  }\n}\n","import { RouteInfo } from '../models/RouteInfo';\n\n// const RESTRICT_SIZE = 100;\n\nexport class LocationHistory {\n  private locationHistory: RouteInfo[] = [];\n  private tabHistory: {\n    [key: string]: RouteInfo[];\n  } = {};\n\n  add(routeInfo: RouteInfo) {\n    if (routeInfo.routeAction === 'push' || routeInfo.routeAction == null) {\n      this._add(routeInfo);\n    } else if (routeInfo.routeAction === 'pop') {\n      this._pop(routeInfo);\n    } else if (routeInfo.routeAction === 'replace') {\n      this._replace(routeInfo);\n    }\n\n    if (routeInfo.routeDirection === 'root') {\n      this._clear();\n      this._add(routeInfo);\n    }\n  }\n\n  clearTabStack(tab: string) {\n    const routeInfos = this._getRouteInfosByKey(tab);\n    if (routeInfos) {\n      routeInfos.forEach((ri) => {\n        this.locationHistory = this.locationHistory.filter((x) => x.id !== ri.id);\n      });\n      this.tabHistory[tab] = [];\n    }\n  }\n\n  update(routeInfo: RouteInfo) {\n    const locationIndex = this.locationHistory.findIndex((x) => x.id === routeInfo.id);\n    if (locationIndex > -1) {\n      this.locationHistory.splice(locationIndex, 1, routeInfo);\n    }\n    const tabArray = this.tabHistory[routeInfo.tab || ''];\n    if (tabArray) {\n      const tabIndex = tabArray.findIndex((x) => x.id === routeInfo.id);\n      if (tabIndex > -1) {\n        tabArray.splice(tabIndex, 1, routeInfo);\n      } else {\n        tabArray.push(routeInfo);\n      }\n    } else if (routeInfo.tab) {\n      this.tabHistory[routeInfo.tab] = [routeInfo];\n    }\n  }\n\n  private _add(routeInfo: RouteInfo) {\n    const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n    if (routeInfos) {\n      // If the latest routeInfo is the same (going back and forth between tabs), replace it\n      if (this._areRoutesEqual(routeInfos[routeInfos.length - 1], routeInfo)) {\n        routeInfos.pop();\n      }\n      routeInfos.push(routeInfo);\n    }\n    this.locationHistory.push(routeInfo);\n  }\n\n  private _areRoutesEqual(route1?: RouteInfo, route2?: RouteInfo) {\n    if(!route1 || !route2) {\n      return false;\n    }\n    return route1.pathname === route2.pathname && route1.search === route2.search;\n  }\n\n  private _pop(routeInfo: RouteInfo) {\n    const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n\n    if (routeInfos) {\n      // Pop the previous route\n      routeInfos.pop();\n      // Replace the current route with an updated version\n      routeInfos.pop();\n      routeInfos.push(routeInfo);\n    }\n\n    // Pop the previous route\n    this.locationHistory.pop();\n    // Replace the current route with an updated version\n    this.locationHistory.pop();\n    this.locationHistory.push(routeInfo);\n  }\n\n  private _replace(routeInfo: RouteInfo) {\n    const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n    routeInfos && routeInfos.pop();\n    this.locationHistory.pop();\n    this._add(routeInfo);\n  }\n\n  private _clear() {\n    const keys = Object.keys(this.tabHistory);\n    keys.forEach((k) => (this.tabHistory[k] = []));\n    this.locationHistory = [];\n  }\n\n  private _getRouteInfosByKey(key?: string) {\n    let routeInfos: RouteInfo[] | undefined;\n    if (key) {\n      routeInfos = this.tabHistory[key];\n      if (!routeInfos) {\n        routeInfos = this.tabHistory[key] = [];\n      }\n    }\n    return routeInfos;\n  }\n\n  getFirstRouteInfoForTab(tab: string) {\n    const routeInfos = this._getRouteInfosByKey(tab);\n    if (routeInfos) {\n      return routeInfos[0];\n    }\n    return undefined;\n  }\n\n  getCurrentRouteInfoForTab(tab?: string) {\n    const routeInfos = this._getRouteInfosByKey(tab);\n    if (routeInfos) {\n      return routeInfos[routeInfos.length - 1];\n    }\n    return undefined;\n  }\n\n  findLastLocation(routeInfo: RouteInfo) {\n    const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n    if (routeInfos) {\n      for (let i = routeInfos.length - 2; i >= 0; i--) {\n        const ri = routeInfos[i];\n        if (ri) {\n          if (ri.pathname === routeInfo.pushedByRoute) {\n            return ri;\n          }\n        }\n      }\n    }\n    for (let i = this.locationHistory.length - 2; i >= 0; i--) {\n      const ri = this.locationHistory[i];\n      if (ri) {\n        if (ri.pathname === routeInfo.pushedByRoute) {\n          return ri;\n        }\n      }\n    }\n    return undefined;\n  }\n\n  previous() {\n    return (\n      this.locationHistory[this.locationHistory.length - 2] ||\n      this.locationHistory[this.locationHistory.length - 1]\n    );\n  }\n\n  current() {\n    return this.locationHistory[this.locationHistory.length - 1];\n  }\n\n  canGoBack() {\n    return this.locationHistory.length > 1;\n  }\n}\n","import { AnimationBuilder } from '@ionic/core';\nimport React from 'react';\n\nimport { IonRouterContext, IonRouterContextState } from '../components/IonRouterContext';\nimport { NavContext, NavContextState } from '../contexts/NavContext';\nimport { RouteAction } from '../models/RouteAction';\nimport { RouteInfo } from '../models/RouteInfo';\nimport { RouterDirection } from '../models/RouterDirection';\nimport { RouterOptions } from '../models/RouterOptions';\n\nimport { LocationHistory } from './LocationHistory';\nimport PageManager from './PageManager';\n\ninterface NavManagerProps {\n  routeInfo: RouteInfo;\n  onNativeBack: () => void;\n  onNavigateBack: (route?: string | RouteInfo, animationBuilder?: AnimationBuilder) => void;\n  onNavigate: (\n    path: string,\n    action: RouteAction,\n    direction?: RouterDirection,\n    animationBuilder?: AnimationBuilder,\n    options?: any,\n    tab?: string\n  ) => void;\n  onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n  onChangeTab: (tab: string, path: string, routeOptions?: any) => void;\n  onResetTab: (tab: string, path: string, routeOptions?: any) => void;\n  ionRedirect: any;\n  ionRoute: any;\n  stackManager: any;\n  locationHistory: LocationHistory;\n}\n\nexport class NavManager extends React.PureComponent<NavManagerProps, NavContextState> {\n  _isMounted = false;\n\n  ionRouterContextValue: IonRouterContextState = {\n    push: (\n      pathname: string,\n      routerDirection?: RouterDirection,\n      routeAction?: RouteAction,\n      routerOptions?: RouterOptions,\n      animationBuilder?: AnimationBuilder\n    ) => {\n      this.navigate(pathname, routerDirection, routeAction, animationBuilder, routerOptions);\n    },\n    back: (animationBuilder?: AnimationBuilder) => {\n      this.goBack(undefined, animationBuilder);\n    },\n    canGoBack: () => this.props.locationHistory.canGoBack(),\n    nativeBack: () => this.props.onNativeBack(),\n    routeInfo: this.props.routeInfo,\n  };\n\n  constructor(props: NavManagerProps) {\n    super(props);\n    this.state = {\n      goBack: this.goBack.bind(this),\n      hasIonicRouter: () => true,\n      navigate: this.navigate.bind(this),\n      getIonRedirect: this.getIonRedirect.bind(this),\n      getIonRoute: this.getIonRoute.bind(this),\n      getStackManager: this.getStackManager.bind(this),\n      getPageManager: this.getPageManager.bind(this),\n      routeInfo: this.props.routeInfo,\n      setCurrentTab: this.props.onSetCurrentTab,\n      changeTab: this.props.onChangeTab,\n      resetTab: this.props.onResetTab,\n    };\n\n    if (typeof document !== 'undefined') {\n      this.handleHardwareBackButton = this.handleHardwareBackButton.bind(this);\n      document.addEventListener('ionBackButton', this.handleHardwareBackButton);\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n  }\n\n  componentWillUnmount() {\n    if (typeof document !== 'undefined') {\n      document.removeEventListener('ionBackButton', this.handleHardwareBackButton);\n      this._isMounted = false;\n    }\n  }\n\n  handleHardwareBackButton(e: any) {\n    e.detail.register(0, (processNextHandler: () => void) => {\n      if (this._isMounted) {\n        this.nativeGoBack();\n        processNextHandler();\n      }\n    });\n  }\n\n  goBack(route?: string | RouteInfo, animationBuilder?: AnimationBuilder) {\n    this.props.onNavigateBack(route, animationBuilder);\n  }\n\n  nativeGoBack() {\n    this.props.onNativeBack();\n  }\n\n  navigate(\n    path: string,\n    direction: RouterDirection = 'forward',\n    action: RouteAction = 'push',\n    animationBuilder?: AnimationBuilder,\n    options?: any,\n    tab?: string\n  ) {\n    this.props.onNavigate(path, action, direction, animationBuilder, options, tab);\n  }\n\n  getPageManager() {\n    return PageManager;\n  }\n\n  getIonRedirect() {\n    return this.props.ionRedirect;\n  }\n\n  getIonRoute() {\n    return this.props.ionRoute;\n  }\n\n  getStackManager() {\n    return this.props.stackManager;\n  }\n\n  render() {\n    return (\n      <NavContext.Provider value={{ ...this.state, routeInfo: this.props.routeInfo }}>\n        <IonRouterContext.Provider\n          value={{ ...this.ionRouterContextValue, routeInfo: this.props.routeInfo }}\n        >\n          {this.props.children}\n        </IonRouterContext.Provider>\n      </NavContext.Provider>\n    );\n  }\n}\n","import { RouteInfo } from '../models/RouteInfo';\n\nimport { ViewItem } from './ViewItem';\n\nexport abstract class ViewStacks {\n  private viewStacks: { [key: string]: ViewItem[] } = {};\n\n  constructor() {\n    this.add = this.add.bind(this);\n    this.clear = this.clear.bind(this);\n    this.getViewItemsForOutlet = this.getViewItemsForOutlet.bind(this);\n    this.remove = this.remove.bind(this);\n  }\n\n  add(viewItem: ViewItem) {\n    const { outletId } = viewItem;\n    if (!this.viewStacks[outletId]) {\n      this.viewStacks[outletId] = [viewItem];\n    } else {\n      this.viewStacks[outletId].push(viewItem);\n    }\n  }\n\n  clear(outletId: string) {\n    // Give some time for the leaving views to transition before removing\n    setTimeout(() => {\n      // console.log('Removing viewstack for outletID ' + outletId);\n      delete this.viewStacks[outletId];\n    }, 500);\n  }\n\n  getViewItemsForOutlet(outletId: string) {\n    return this.viewStacks[outletId] || [];\n  }\n\n  remove(viewItem: ViewItem) {\n    const { outletId } = viewItem;\n    const viewStack = this.viewStacks[outletId];\n    if (viewStack) {\n      const viewItemToRemove = viewStack.find((x) => x.id === viewItem.id);\n      if (viewItemToRemove) {\n        viewItemToRemove.mount = false;\n        this.viewStacks[outletId] = viewStack.filter((x) => x.id !== viewItemToRemove.id);\n      }\n    }\n  }\n\n  protected getStackIds() {\n    return Object.keys(this.viewStacks);\n  }\n\n  protected getAllViewItems() {\n    const keys = this.getStackIds();\n    const viewItems: ViewItem[] = [];\n    keys.forEach((k) => {\n      viewItems.push(...this.viewStacks[k]);\n    });\n    return viewItems;\n  }\n\n  abstract createViewItem(\n    outletId: string,\n    reactElement: React.ReactElement,\n    routeInfo: RouteInfo,\n    page?: HTMLElement\n  ): ViewItem;\n  abstract findViewItemByPathname(pathname: string, outletId?: string): ViewItem | undefined;\n  abstract findViewItemByRouteInfo(routeInfo: RouteInfo, outletId?: string): ViewItem | undefined;\n  abstract findLeavingViewItemByRouteInfo(\n    routeInfo: RouteInfo,\n    outletId?: string\n  ): ViewItem | undefined;\n  abstract getChildrenToRender(\n    outletId: string,\n    ionRouterOutlet: React.ReactElement,\n    routeInfo: RouteInfo,\n    reRender: () => void,\n    setInTransition: () => void\n  ): React.ReactNode[];\n}\n","const ids: { [key: string]: number } = { main: 0 };\n\nexport const generateId = (type = 'main') => {\n  const id = (ids[type] ?? 0) + 1;\n  ids[type] = id;\n  return id.toString();\n};\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar nullListeners = {\n  notify: function notify() {},\n  get: function get() {\n    return [];\n  }\n};\nexport function createSubscription(store, parentSub) {\n  var unsubscribe;\n  var listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  var subscription = {\n    addNestedSub: addNestedSub,\n    notifyNestedSubs: notifyNestedSubs,\n    handleChangeWrapper: handleChangeWrapper,\n    isSubscribed: isSubscribed,\n    trySubscribe: trySubscribe,\n    tryUnsubscribe: tryUnsubscribe,\n    getListeners: function getListeners() {\n      return listeners;\n    }\n  };\n  return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = createSubscription(store);\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n    _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return createSubscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n        if (newStoreState === latestStoreState.current) {\n          return;\n        }\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","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\nexport default function _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 * Copyright (c) 2013-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\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/*! *****************************************************************************\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 function __createBinding(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, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = 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","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\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  return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n  typeof globalThis !== \"undefined\" // 'global proper'\n    ? // eslint-disable-next-line no-undef\n      globalThis\n    : typeof window !== \"undefined\"\n    ? window // Browser\n    : typeof global !== \"undefined\"\n    ? global // node.js\n    : {};\n\nfunction getUniqueId() {\n  let key = \"__global_unique_id__\";\n  return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // eslint-disable-next-line no-self-compare\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  let handlers = [];\n  return {\n    on(handler) {\n      handlers.push(handler);\n    },\n\n    off(handler) {\n      handlers = handlers.filter(h => h !== handler);\n    },\n\n    get() {\n      return value;\n    },\n\n    set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(handler => handler(value, changedBits));\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n  const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n  class Provider extends React.Component {\n    emitter = createEventEmitter(this.props.value);\n\n    static childContextTypes = {\n      [contextProp]: PropTypes.object.isRequired\n    };\n\n    getChildContext() {\n      return {\n        [contextProp]: this.emitter\n      };\n    }\n\n    componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        let oldValue = this.props.value;\n        let newValue = nextProps.value;\n        let changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits =\n            typeof calculateChangedBits === \"function\"\n              ? calculateChangedBits(oldValue, newValue)\n              : MAX_SIGNED_31_BIT_INT;\n          if (process.env.NODE_ENV !== \"production\") {\n            warning(\n              (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n              \"calculateChangedBits: Expected the return value to be a \" +\n                \"31-bit integer. Instead received: \" +\n                changedBits\n            );\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    }\n\n    render() {\n      return this.props.children;\n    }\n  }\n\n  class Consumer extends React.Component {\n    static contextTypes = {\n      [contextProp]: PropTypes.object\n    };\n\n    observedBits;\n\n    state = {\n      value: this.getValue()\n    };\n\n    componentWillReceiveProps(nextProps) {\n      let { observedBits } = nextProps;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      let { observedBits } = this.props;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    }\n\n    getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    }\n\n    onUpdate = (newValue, changedBits) => {\n      const observedBits = this.observedBits | 0;\n      if ((observedBits & changedBits) !== 0) {\n        this.setState({ value: this.getValue() });\n      }\n    };\n\n    render() {\n      return onlyChild(this.props.children)(this.state.value);\n    }\n  }\n\n  return {\n    Provider,\n    Consumer\n  };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n  const context = createContext();\n  context.displayName = name;\n\n  return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n  static computeRootMatch(pathname) {\n    return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      location: props.history.location\n    };\n\n    // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n    this._isMounted = false;\n    this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      this.unlisten = props.history.listen(location => {\n        this._pendingLocation = location;\n      });\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n\n    if (this.unlisten) {\n      // Any pre-mount location changes have been captured at\n      // this point, so unregister the listener.\n      this.unlisten();\n    }\n    if (!this.props.staticContext) {\n      this.unlisten = this.props.history.listen(location => {\n        if (this._isMounted) {\n          this.setState({ location });\n        }\n      });\n    }\n    if (this._pendingLocation) {\n      this.setState({ location: this._pendingLocation });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.unlisten) {\n      this.unlisten();\n      this._isMounted = false;\n      this._pendingLocation = null;\n    }\n  }\n\n  render() {\n    return (\n      <RouterContext.Provider\n        value={{\n          history: this.props.history,\n          location: this.state.location,\n          match: Router.computeRootMatch(this.state.location.pathname),\n          staticContext: this.props.staticContext\n        }}\n      >\n        <HistoryContext.Provider\n          children={this.props.children || null}\n          value={this.props.history}\n        />\n      </RouterContext.Provider>\n    );\n  }\n}\n\nif (__DEV__) {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      prevProps.history === this.props.history,\n      \"You cannot change <Router history>\"\n    );\n  };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n    );\n  };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n  componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  }\n\n  componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n  if (cache[path]) return cache[path];\n\n  const generator = pathToRegexp.compile(path);\n\n  if (cacheCount < cacheLimit) {\n    cache[path] = generator;\n    cacheCount++;\n  }\n\n  return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n  return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n  return (\n    <RouterContext.Consumer>\n      {context => {\n        invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n        const { history, staticContext } = context;\n\n        const method = push ? history.push : history.replace;\n        const location = createLocation(\n          computedMatch\n            ? typeof to === \"string\"\n              ? generatePath(to, computedMatch.params)\n              : {\n                  ...to,\n                  pathname: generatePath(to.pathname, computedMatch.params)\n                }\n            : to\n        );\n\n        // When rendering in a static context,\n        // set the new location immediately.\n        if (staticContext) {\n          method(location);\n          return null;\n        }\n\n        return (\n          <Lifecycle\n            onMount={() => {\n              method(location);\n            }}\n            onUpdate={(self, prevProps) => {\n              const prevLocation = createLocation(prevProps.to);\n              if (\n                !locationsAreEqual(prevLocation, {\n                  ...location,\n                  key: prevLocation.key\n                })\n              ) {\n                method(location);\n              }\n            }}\n            to={to}\n          />\n        );\n      }}\n    </RouterContext.Consumer>\n  );\n}\n\nif (__DEV__) {\n  Redirect.propTypes = {\n    push: PropTypes.bool,\n    from: PropTypes.string,\n    to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n  };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n  const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n  const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n  if (pathCache[path]) return pathCache[path];\n\n  const keys = [];\n  const regexp = pathToRegexp(path, keys, options);\n  const result = { regexp, keys };\n\n  if (cacheCount < cacheLimit) {\n    pathCache[path] = result;\n    cacheCount++;\n  }\n\n  return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = { path: options };\n  }\n\n  const { path, exact = false, strict = false, sensitive = false } = options;\n\n  const paths = [].concat(path);\n\n  return paths.reduce((matched, path) => {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    const { regexp, keys } = compilePath(path, {\n      end: exact,\n      strict,\n      sensitive\n    });\n    const match = regexp.exec(pathname);\n\n    if (!match) return null;\n\n    const [url, ...values] = match;\n    const isExact = pathname === url;\n\n    if (exact && !isExact) return null;\n\n    return {\n      path, // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n      isExact, // whether or not we matched exactly\n      params: keys.reduce((memo, key, index) => {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  const value = children(props);\n\n  warning(\n    value !== undefined,\n    \"You returned `undefined` from the `children` function of \" +\n      `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n      \"should have returned a React element or `null`\"\n  );\n\n  return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Route> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n          const match = this.props.computedMatch\n            ? this.props.computedMatch // <Switch> already computed the match for us\n            : this.props.path\n            ? matchPath(location.pathname, this.props)\n            : context.match;\n\n          const props = { ...context, location, match };\n\n          let { children, component, render } = this.props;\n\n          // Preact uses an empty array as children by\n          // default, so use null if that's the case.\n          if (Array.isArray(children) && isEmptyChildren(children)) {\n            children = null;\n          }\n\n          return (\n            <RouterContext.Provider value={props}>\n              {props.match\n                ? children\n                  ? typeof children === \"function\"\n                    ? __DEV__\n                      ? evalChildrenDev(children, props, this.props.path)\n                      : children(props)\n                    : children\n                  : component\n                  ? React.createElement(component, props)\n                  : render\n                  ? render(props)\n                  : null\n                : typeof children === \"function\"\n                ? __DEV__\n                  ? evalChildrenDev(children, props, this.props.path)\n                  : children(props)\n                : null}\n            </RouterContext.Provider>\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: (props, propName) => {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\n          `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n        );\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(PropTypes.string)\n    ]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function() {\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.component\n      ),\n      \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n    );\n\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.render\n      ),\n      \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n    );\n\n    warning(\n      !(this.props.component && this.props.render),\n      \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n    );\n  };\n\n  Route.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n\n  return {\n    ...location,\n    pathname: addLeadingSlash(basename) + location.pathname\n  };\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n\n  const base = addLeadingSlash(basename);\n\n  if (location.pathname.indexOf(base) !== 0) return location;\n\n  return {\n    ...location,\n    pathname: location.pathname.substr(base.length)\n  };\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return () => {\n    invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n  };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n  navigateTo(location, action) {\n    const { basename = \"\", context = {} } = this.props;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  }\n\n  handlePush = location => this.navigateTo(location, \"PUSH\");\n  handleReplace = location => this.navigateTo(location, \"REPLACE\");\n  handleListen = () => noop;\n  handleBlock = () => noop;\n\n  render() {\n    const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n    const history = {\n      createHref: path => addLeadingSlash(basename + createURL(path)),\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n\n    return <Router {...rest} history={history} staticContext={context} />;\n  }\n}\n\nif (__DEV__) {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n    );\n  };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n\n          let element, match;\n\n          // We use React.Children.forEach instead of React.Children.toArray().find()\n          // here because toArray adds keys to all child elements and we do not want\n          // to trigger an unmount/remount for two <Route>s that render the same\n          // component at different URLs.\n          React.Children.forEach(this.props.children, child => {\n            if (match == null && React.isValidElement(child)) {\n              element = child;\n\n              const path = child.props.path || child.props.from;\n\n              match = path\n                ? matchPath(location.pathname, { ...child.props, path })\n                : context.match;\n            }\n          });\n\n          return match\n            ? React.cloneElement(element, { location, computedMatch: match })\n            : null;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n  const displayName = `withRouter(${Component.displayName || Component.name})`;\n  const C = props => {\n    const { wrappedComponentRef, ...remainingProps } = props;\n\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(\n            context,\n            `You should not use <${displayName} /> outside a <Router>`\n          );\n          return (\n            <Component\n              {...remainingProps}\n              {...context}\n              ref={wrappedComponentRef}\n            />\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  };\n\n  C.displayName = displayName;\n  C.WrappedComponent = Component;\n\n  if (__DEV__) {\n    C.propTypes = {\n      wrappedComponentRef: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.func,\n        PropTypes.object\n      ])\n    };\n  }\n\n  return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useHistory()\"\n    );\n  }\n\n  return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useLocation()\"\n    );\n  }\n\n  return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useParams()\"\n    );\n  }\n\n  const match = useContext(RouterContext).match;\n  return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useRouteMatch()\"\n    );\n  }\n\n  const location = useLocation();\n  const match = useContext(RouterContext).match;\n  return path ? matchPath(location.pathname, path) : match;\n}\n","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n  /**\r\n   * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n   * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n   */\r\n  name?: string\r\n  /**\r\n   * action creators functions to be available in the Dispatcher.\r\n   */\r\n  actionCreators?: ActionCreator<any>[] | { [key: string]: ActionCreator<any> }\r\n  /**\r\n   * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n   * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n   * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n   *\r\n   * @default 500 ms.\r\n   */\r\n  latency?: number\r\n  /**\r\n   * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n   *\r\n   * @default 50\r\n   */\r\n  maxAge?: number\r\n  /**\r\n   * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n   * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n   * functions.\r\n   */\r\n  serialize?:\r\n    | boolean\r\n    | {\r\n        /**\r\n         * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n         * - `false` - will handle also circular references.\r\n         * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n         * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n         *   For each of them you can indicate if to include (by setting as `true`).\r\n         *   For `function` key you can also specify a custom function which handles serialization.\r\n         *   See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n         */\r\n        options?:\r\n          | undefined\r\n          | boolean\r\n          | {\r\n              date?: true\r\n              regex?: true\r\n              undefined?: true\r\n              error?: true\r\n              symbol?: true\r\n              map?: true\r\n              set?: true\r\n              function?: true | ((fn: (...args: any[]) => any) => string)\r\n            }\r\n        /**\r\n         * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n         * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n         * key. So you can deserialize it back while importing or persisting data.\r\n         * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n         */\r\n        replacer?: (key: string, value: unknown) => any\r\n        /**\r\n         * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n         * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n         * as an example on how to serialize special data types and get them back.\r\n         */\r\n        reviver?: (key: string, value: unknown) => any\r\n        /**\r\n         * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n         * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n         * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n         */\r\n        immutable?: any\r\n        /**\r\n         * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n         */\r\n        refs?: any\r\n      }\r\n  /**\r\n   * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n   */\r\n  actionSanitizer?: <A extends Action>(action: A, id: number) => A\r\n  /**\r\n   * function which takes `state` object and index as arguments, and should return `state` object back.\r\n   */\r\n  stateSanitizer?: <S>(state: S, index: number) => S\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n   * @deprecated Use actionsDenylist instead.\r\n   */\r\n  actionsBlacklist?: string | string[]\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n   * @deprecated Use actionsAllowlist instead.\r\n   */\r\n  actionsWhitelist?: string | string[]\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n   */\r\n  actionsDenylist?: string | string[]\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n   */\r\n  actionsAllowlist?: string | string[]\r\n  /**\r\n   * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n   * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n   */\r\n  predicate?: <S, A extends Action>(state: S, action: A) => boolean\r\n  /**\r\n   * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n   * Available only for Redux enhancer, for others use `autoPause`.\r\n   *\r\n   * @default true\r\n   */\r\n  shouldRecordChanges?: boolean\r\n  /**\r\n   * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n   * If not specified, will commit when paused. Available only for Redux enhancer.\r\n   *\r\n   * @default \"@@PAUSED\"\"\r\n   */\r\n  pauseActionType?: string\r\n  /**\r\n   * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n   * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n   *\r\n   * @default false\r\n   */\r\n  autoPause?: boolean\r\n  /**\r\n   * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n   * Available only for Redux enhancer.\r\n   *\r\n   * @default false\r\n   */\r\n  shouldStartLocked?: boolean\r\n  /**\r\n   * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n   *\r\n   * @default true\r\n   */\r\n  shouldHotReload?: boolean\r\n  /**\r\n   * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n   *\r\n   * @default false\r\n   */\r\n  shouldCatchErrors?: boolean\r\n  /**\r\n   * If you want to restrict the extension, specify the features you allow.\r\n   * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n   * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n   * Otherwise, you'll get/set the data right from the monitor part.\r\n   */\r\n  features?: {\r\n    /**\r\n     * start/pause recording of dispatched actions\r\n     */\r\n    pause?: boolean\r\n    /**\r\n     * lock/unlock dispatching actions and side effects\r\n     */\r\n    lock?: boolean\r\n    /**\r\n     * persist states on page reloading\r\n     */\r\n    persist?: boolean\r\n    /**\r\n     * export history of actions in a file\r\n     */\r\n    export?: boolean | 'custom'\r\n    /**\r\n     * import history of actions from a file\r\n     */\r\n    import?: boolean | 'custom'\r\n    /**\r\n     * jump back and forth (time travelling)\r\n     */\r\n    jump?: boolean\r\n    /**\r\n     * skip (cancel) actions\r\n     */\r\n    skip?: boolean\r\n    /**\r\n     * drag and drop actions in the history list\r\n     */\r\n    reorder?: boolean\r\n    /**\r\n     * dispatch custom actions or action creators\r\n     */\r\n    dispatch?: boolean\r\n    /**\r\n     * generate tests for the selected actions\r\n     */\r\n    test?: boolean\r\n  }\r\n  /**\r\n   * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n   * Defaults to false.\r\n   */\r\n  trace?: boolean | (<A extends Action>(action: A) => string)\r\n  /**\r\n   * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n   */\r\n  traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n  (options: DevToolsEnhancerOptions): Compose\r\n  <StoreExt>(...funcs: StoreEnhancer<StoreExt>[]): StoreEnhancer<StoreExt>\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n  typeof window !== 'undefined' &&\r\n  (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n    ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n    : function () {\r\n        if (arguments.length === 0) return undefined\r\n        if (typeof arguments[0] === 'object') return compose\r\n        return compose.apply(null, arguments as any as Function[])\r\n      }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n  (options: DevToolsEnhancerOptions): StoreEnhancer<any>\r\n} =\r\n  typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n    ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n    : function () {\r\n        return function (noop) {\r\n          return noop\r\n        }\r\n      }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n  if (typeof value !== 'object' || value === null) return false\r\n\r\n  let proto = Object.getPrototypeOf(value)\r\n  if (proto === null) return true\r\n\r\n  let baseProto = proto\r\n  while (Object.getPrototypeOf(baseProto) !== null) {\r\n    baseProto = Object.getPrototypeOf(baseProto)\r\n  }\r\n\r\n  return proto === baseProto\r\n}\r\n","import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware, StoreEnhancer } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n  let elapsed = 0\r\n  return {\r\n    measureTime<T>(fn: () => T): T {\r\n      const started = Date.now()\r\n      try {\r\n        return fn()\r\n      } finally {\r\n        const finished = Date.now()\r\n        elapsed += finished - started\r\n      }\r\n    },\r\n    warnIfExceeded() {\r\n      if (elapsed > maxDelay) {\r\n        console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n      }\r\n    },\r\n  }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n  return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n  Middlewares extends Middleware<any, any>[]\r\n> extends Array<Middlewares[number]> {\r\n  constructor(...items: Middlewares)\r\n  constructor(...args: any[]) {\r\n    super(...args)\r\n    Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n  }\r\n\r\n  static get [Symbol.species]() {\r\n    return MiddlewareArray as any\r\n  }\r\n\r\n  concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n  concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    ...items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n  concat(...arr: any[]) {\r\n    return super.concat.apply(this, arr)\r\n  }\r\n\r\n  prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n  prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    ...items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n  prepend(...arr: any[]) {\r\n    if (arr.length === 1 && Array.isArray(arr[0])) {\r\n      return new MiddlewareArray(...arr[0].concat(this))\r\n    }\r\n    return new MiddlewareArray(...arr.concat(this))\r\n  }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class EnhancerArray<\r\n  Enhancers extends StoreEnhancer<any, any>[]\r\n> extends Array<Enhancers[number]> {\r\n  constructor(...items: Enhancers)\r\n  constructor(...args: any[]) {\r\n    super(...args)\r\n    Object.setPrototypeOf(this, EnhancerArray.prototype)\r\n  }\r\n\r\n  static get [Symbol.species]() {\r\n    return EnhancerArray as any\r\n  }\r\n\r\n  concat<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n    items: AdditionalEnhancers\r\n  ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n\r\n  concat<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n    ...items: AdditionalEnhancers\r\n  ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n  concat(...arr: any[]) {\r\n    return super.concat.apply(this, arr)\r\n  }\r\n\r\n  prepend<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n    items: AdditionalEnhancers\r\n  ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n  prepend<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n    ...items: AdditionalEnhancers\r\n  ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n  prepend(...arr: any[]) {\r\n    if (arr.length === 1 && Array.isArray(arr[0])) {\r\n      return new EnhancerArray(...arr[0].concat(this))\r\n    }\r\n    return new EnhancerArray(...arr.concat(this))\r\n  }\r\n}\r\n\r\nexport function freezeDraftable<T>(val: T) {\r\n  return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n  return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions<E = any> {\r\n  extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n  thunk?: boolean | ThunkOptions\r\n  immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n  serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n  S,\r\n  O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n  thunk: false\r\n}\r\n  ? never\r\n  : O extends { thunk: { extraArgument: infer E } }\r\n  ? ThunkMiddleware<S, AnyAction, E>\r\n  : ThunkMiddleware<S, AnyAction>\r\n\r\nexport type CurriedGetDefaultMiddleware<S = any> = <\r\n  O extends Partial<GetDefaultMiddlewareOptions> = {\r\n    thunk: true\r\n    immutableCheck: true\r\n    serializableCheck: true\r\n  }\r\n>(\r\n  options?: O\r\n) => MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n  S = any\r\n>(): CurriedGetDefaultMiddleware<S> {\r\n  return function curriedGetDefaultMiddleware(options) {\r\n    return getDefaultMiddleware(options)\r\n  }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n  S = any,\r\n  O extends Partial<GetDefaultMiddlewareOptions> = {\r\n    thunk: true\r\n    immutableCheck: true\r\n    serializableCheck: true\r\n  }\r\n>(\r\n  options: O = {} as O\r\n): MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>> {\r\n  const {\r\n    thunk = true,\r\n    immutableCheck = true,\r\n    serializableCheck = true,\r\n  } = options\r\n\r\n  let middlewareArray = new MiddlewareArray<Middleware[]>()\r\n\r\n  if (thunk) {\r\n    if (isBoolean(thunk)) {\r\n      middlewareArray.push(thunkMiddleware)\r\n    } else {\r\n      middlewareArray.push(\r\n        thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n      )\r\n    }\r\n  }\r\n\r\n  if (process.env.NODE_ENV !== 'production') {\r\n    if (immutableCheck) {\r\n      /* PROD_START_REMOVE_UMD */\r\n      let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n      if (!isBoolean(immutableCheck)) {\r\n        immutableOptions = immutableCheck\r\n      }\r\n\r\n      middlewareArray.unshift(\r\n        createImmutableStateInvariantMiddleware(immutableOptions)\r\n      )\r\n      /* PROD_STOP_REMOVE_UMD */\r\n    }\r\n\r\n    if (serializableCheck) {\r\n      let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n      if (!isBoolean(serializableCheck)) {\r\n        serializableOptions = serializableCheck\r\n      }\r\n\r\n      middlewareArray.push(\r\n        createSerializableStateInvariantMiddleware(serializableOptions)\r\n      )\r\n    }\r\n  }\r\n\r\n  return middlewareArray as any\r\n}\r\n","import type {\r\n  Reducer,\r\n  ReducersMapObject,\r\n  Middleware,\r\n  Action,\r\n  AnyAction,\r\n  StoreEnhancer,\r\n  Store,\r\n  Dispatch,\r\n  PreloadedState,\r\n  CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n  ThunkMiddlewareFor,\r\n  CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n  NoInfer,\r\n  ExtractDispatchExtensions,\r\n  ExtractStoreExtensions,\r\n  ExtractStateExtensions,\r\n} from './tsHelpers'\r\nimport { EnhancerArray } from './utils'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback<E extends Enhancers = Enhancers> = (\r\n  defaultEnhancers: EnhancerArray<[StoreEnhancer<{}, {}>]>\r\n) => E\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = Middlewares<S>,\r\n  E extends Enhancers = Enhancers\r\n> {\r\n  /**\r\n   * A single reducer function that will be used as the root reducer, or an\r\n   * object of slice reducers that will be passed to `combineReducers()`.\r\n   */\r\n  reducer: Reducer<S, A> | ReducersMapObject<S, A>\r\n\r\n  /**\r\n   * An array of Redux middleware to install. If not supplied, defaults to\r\n   * the set of middleware returned by `getDefaultMiddleware()`.\r\n   *\r\n   * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n   * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n   */\r\n  middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware<S>) => M) | M\r\n\r\n  /**\r\n   * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n   *\r\n   * Additional configuration can be done by passing Redux DevTools options\r\n   */\r\n  devTools?: boolean | DevToolsOptions\r\n\r\n  /**\r\n   * The initial state, same as Redux's createStore.\r\n   * You may optionally specify it to hydrate the state\r\n   * from the server in universal apps, or to restore a previously serialized\r\n   * user session. If you use `combineReducers()` to produce the root reducer\r\n   * function (either directly or indirectly by passing an object as `reducer`),\r\n   * this must be an object with the same shape as the reducer map keys.\r\n   */\r\n  /*\r\n  Not 100% correct but the best approximation we can get:\r\n  - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n  - if it is not, there could be two cases:\r\n    - `ReducersMapObject<S, A>` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState<S>` is correct\r\n    - `Reducer<S, A>` is being passed in. In this case, actually `CombinedState<S>` is wrong and `S` would be correct.\r\n    As we cannot distinguish between those two cases without adding another generic parameter,\r\n    we just make the pragmatic assumption that the latter almost never happens.\r\n  */\r\n  preloadedState?: PreloadedState<CombinedState<NoInfer<S>>>\r\n\r\n  /**\r\n   * The store enhancers to apply. See Redux's `createStore()`.\r\n   * All enhancers will be included before the DevTools Extension enhancer.\r\n   * If you need to customize the order of enhancers, supply a callback\r\n   * function that will receive the original array (ie, `[applyMiddleware]`),\r\n   * and should return a new array (such as `[applyMiddleware, offline]`).\r\n   * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n   */\r\n  enhancers?: E | ConfigureEnhancersCallback<E>\r\n}\r\n\r\ntype Middlewares<S> = ReadonlyArray<Middleware<{}, S>>\r\n\r\ntype Enhancers = ReadonlyArray<StoreEnhancer>\r\n\r\nexport interface ToolkitStore<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = Middlewares<S>\r\n> extends Store<S, A> {\r\n  /**\r\n   * The `dispatch` method of your store, enhanced by all its middlewares.\r\n   *\r\n   * @inheritdoc\r\n   */\r\n  dispatch: ExtractDispatchExtensions<M> & Dispatch<A>\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = Middlewares<S>,\r\n  E extends Enhancers = Enhancers\r\n> = ToolkitStore<S & ExtractStateExtensions<E>, A, M> &\r\n  ExtractStoreExtensions<E>\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = [ThunkMiddlewareFor<S>],\r\n  E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions<S, A, M, E>): EnhancedStore<S, A, M, E> {\r\n  const curriedGetDefaultMiddleware = curryGetDefaultMiddleware<S>()\r\n\r\n  const {\r\n    reducer = undefined,\r\n    middleware = curriedGetDefaultMiddleware(),\r\n    devTools = true,\r\n    preloadedState = undefined,\r\n    enhancers = undefined,\r\n  } = options || {}\r\n\r\n  let rootReducer: Reducer<S, A>\r\n\r\n  if (typeof reducer === 'function') {\r\n    rootReducer = reducer\r\n  } else if (isPlainObject(reducer)) {\r\n    rootReducer = combineReducers(reducer) as unknown as Reducer<S, A>\r\n  } else {\r\n    throw new Error(\r\n      '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n    )\r\n  }\r\n\r\n  let finalMiddleware = middleware\r\n  if (typeof finalMiddleware === 'function') {\r\n    finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n    if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n      throw new Error(\r\n        'when using a middleware builder function, an array of middleware must be returned'\r\n      )\r\n    }\r\n  }\r\n  if (\r\n    !IS_PRODUCTION &&\r\n    finalMiddleware.some((item: any) => typeof item !== 'function')\r\n  ) {\r\n    throw new Error(\r\n      'each middleware provided to configureStore must be a function'\r\n    )\r\n  }\r\n\r\n  const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n  let finalCompose = compose\r\n\r\n  if (devTools) {\r\n    finalCompose = composeWithDevTools({\r\n      // Enable capture of stack traces for dispatched Redux actions\r\n      trace: !IS_PRODUCTION,\r\n      ...(typeof devTools === 'object' && devTools),\r\n    })\r\n  }\r\n\r\n  const defaultEnhancers = new EnhancerArray(middlewareEnhancer)\r\n  let storeEnhancers: Enhancers = defaultEnhancers\r\n\r\n  if (Array.isArray(enhancers)) {\r\n    storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n  } else if (typeof enhancers === 'function') {\r\n    storeEnhancers = enhancers(defaultEnhancers)\r\n  }\r\n\r\n  const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer<any>\r\n\r\n  return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n  IsUnknownOrNonInferrable,\r\n  IfMaybeUndefined,\r\n  IfVoid,\r\n  IsAny,\r\n} from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n  P = void,\r\n  T extends string = string,\r\n  M = never,\r\n  E = never\r\n> = {\r\n  payload: P\r\n  type: T\r\n} & ([M] extends [never]\r\n  ? {}\r\n  : {\r\n      meta: M\r\n    }) &\r\n  ([E] extends [never]\r\n    ? {}\r\n    : {\r\n        error: E\r\n      })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction<P> =\r\n  | ((...args: any[]) => { payload: P })\r\n  | ((...args: any[]) => { payload: P; meta: any })\r\n  | ((...args: any[]) => { payload: P; error: any })\r\n  | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n  PA extends PrepareAction<any> | void,\r\n  T extends string = string\r\n> = PA extends PrepareAction<infer P>\r\n  ? ActionCreatorWithPreparedPayload<\r\n      Parameters<PA>,\r\n      P,\r\n      T,\r\n      ReturnType<PA> extends {\r\n        error: infer E\r\n      }\r\n        ? E\r\n        : never,\r\n      ReturnType<PA> extends {\r\n        meta: infer M\r\n      }\r\n        ? M\r\n        : never\r\n    >\r\n  : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator<P, T extends string, M = never, E = never> {\r\n  type: T\r\n  match: (action: Action<unknown>) => action is PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n  Args extends unknown[],\r\n  P,\r\n  T extends string = string,\r\n  E = never,\r\n  M = never\r\n> extends BaseActionCreator<P, T, M, E> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with `Args` will return\r\n   * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n   * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n   */\r\n  (...args: Args): PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload<P, T extends string = string>\r\n  extends BaseActionCreator<P, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with an argument will\r\n   * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n   * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n   */\r\n  (payload?: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload<T extends string = string>\r\n  extends BaseActionCreator<undefined, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} will\r\n   * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n   */\r\n  (noArgument: void): PayloadAction<undefined, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload<P, T extends string = string>\r\n  extends BaseActionCreator<P, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with an argument will\r\n   * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n   */\r\n  (payload: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n  T extends string = string\r\n> extends BaseActionCreator<unknown, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with an argument will\r\n   * return a {@link PayloadAction} of type `T` with a payload\r\n   * of exactly the type of the argument.\r\n   */\r\n  <PT extends unknown>(payload: PT): PayloadAction<PT, T>\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n  P = void,\r\n  T extends string = string,\r\n  PA extends PrepareAction<P> | void = void\r\n> = IfPrepareActionMethodProvided<\r\n  PA,\r\n  _ActionCreatorWithPreparedPayload<PA, T>,\r\n  // else\r\n  IsAny<\r\n    P,\r\n    ActionCreatorWithPayload<any, T>,\r\n    IsUnknownOrNonInferrable<\r\n      P,\r\n      ActionCreatorWithNonInferrablePayload<T>,\r\n      // else\r\n      IfVoid<\r\n        P,\r\n        ActionCreatorWithoutPayload<T>,\r\n        // else\r\n        IfMaybeUndefined<\r\n          P,\r\n          ActionCreatorWithOptionalPayload<P, T>,\r\n          // else\r\n          ActionCreatorWithPayload<P, T>\r\n        >\r\n      >\r\n    >\r\n  >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<P = void, T extends string = string>(\r\n  type: T\r\n): PayloadActionCreator<P, T>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n  PA extends PrepareAction<any>,\r\n  T extends string = string\r\n>(\r\n  type: T,\r\n  prepareAction: PA\r\n): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n  function actionCreator(...args: any[]) {\r\n    if (prepareAction) {\r\n      let prepared = prepareAction(...args)\r\n      if (!prepared) {\r\n        throw new Error('prepareAction did not return an object')\r\n      }\r\n\r\n      return {\r\n        type,\r\n        payload: prepared.payload,\r\n        ...('meta' in prepared && { meta: prepared.meta }),\r\n        ...('error' in prepared && { error: prepared.error }),\r\n      }\r\n    }\r\n    return { type, payload: args[0] }\r\n  }\r\n\r\n  actionCreator.toString = () => `${type}`\r\n\r\n  actionCreator.type = type\r\n\r\n  actionCreator.match = (action: Action<unknown>): action is PayloadAction =>\r\n    action.type === type\r\n\r\n  return actionCreator\r\n}\r\n\r\n/**\r\n * Returns true if value is a plain object with a `type` property.\r\n */\r\nexport function isAction(action: unknown): action is Action<unknown> {\r\n  return isPlainObject(action) && 'type' in action\r\n}\r\n\r\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\r\nexport function isFSA(action: unknown): action is {\r\n  type: string\r\n  payload?: unknown\r\n  error?: unknown\r\n  meta?: unknown\r\n} {\r\n  return (\r\n    isAction(action) &&\r\n    typeof action.type === 'string' &&\r\n    Object.keys(action).every(isValidKey)\r\n  )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n  return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType<T extends string>(\r\n  actionCreator: PayloadActionCreator<any, T>\r\n): T {\r\n  return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n  PA extends PrepareAction<any> | void,\r\n  True,\r\n  False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n  CaseReducer,\r\n  CaseReducers,\r\n  ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator<Type extends string> {\r\n  (...args: any[]): Action<Type>\r\n  type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder<State> {\r\n  /**\r\n   * Adds a case reducer to handle a single exact action type.\r\n   * @remarks\r\n   * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n   * @param reducer - The actual case reducer function.\r\n   */\r\n  addCase<ActionCreator extends TypedActionCreator<string>>(\r\n    actionCreator: ActionCreator,\r\n    reducer: CaseReducer<State, ReturnType<ActionCreator>>\r\n  ): ActionReducerMapBuilder<State>\r\n  /**\r\n   * Adds a case reducer to handle a single exact action type.\r\n   * @remarks\r\n   * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n   * @param reducer - The actual case reducer function.\r\n   */\r\n  addCase<Type extends string, A extends Action<Type>>(\r\n    type: Type,\r\n    reducer: CaseReducer<State, A>\r\n  ): ActionReducerMapBuilder<State>\r\n\r\n  /**\r\n   * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n   * @remarks\r\n   * If multiple matcher reducers match, all of them will be executed in the order\r\n   * they were defined in - even if a case reducer already matched.\r\n   * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n   * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates)\r\n   *   function\r\n   * @param reducer - The actual case reducer function.\r\n   *\r\n   * @example\r\n```ts\r\nimport {\r\n  createAction,\r\n  createReducer,\r\n  AsyncThunk,\r\n  AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk<unknown, unknown, any>;\r\n\r\ntype PendingAction = ReturnType<GenericAsyncThunk[\"pending\"]>;\r\ntype RejectedAction = ReturnType<GenericAsyncThunk[\"rejected\"]>;\r\ntype FulfilledAction = ReturnType<GenericAsyncThunk[\"fulfilled\"]>;\r\n\r\nconst initialState: Record<string, string> = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n  return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n  builder\r\n    .addCase(resetAction, () => initialState)\r\n    // matcher can be defined outside as a type predicate function\r\n    .addMatcher(isPendingAction, (state, action) => {\r\n      state[action.meta.requestId] = \"pending\";\r\n    })\r\n    .addMatcher(\r\n      // matcher can be defined inline as a type predicate function\r\n      (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n      (state, action) => {\r\n        state[action.meta.requestId] = \"rejected\";\r\n      }\r\n    )\r\n    // matcher can just return boolean and the matcher can receive a generic argument\r\n    .addMatcher<FulfilledAction>(\r\n      (action) => action.type.endsWith(\"/fulfilled\"),\r\n      (state, action) => {\r\n        state[action.meta.requestId] = \"fulfilled\";\r\n      }\r\n    );\r\n});\r\n```\r\n   */\r\n  addMatcher<A>(\r\n    matcher: TypeGuard<A> | ((action: any) => boolean),\r\n    reducer: CaseReducer<State, A extends AnyAction ? A : A & AnyAction>\r\n  ): Omit<ActionReducerMapBuilder<State>, 'addCase'>\r\n\r\n  /**\r\n   * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n   * reducer was executed for this action.\r\n   * @param reducer - The fallback \"default case\" reducer function.\r\n   *\r\n   * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n  builder\r\n    // .addCase(...)\r\n    // .addMatcher(...)\r\n    .addDefaultCase((state, action) => {\r\n      state.otherActions++\r\n    })\r\n})\r\n```\r\n   */\r\n  addDefaultCase(reducer: CaseReducer<State, AnyAction>): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback<S>(\r\n  builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): [\r\n  CaseReducers<S, any>,\r\n  ActionMatcherDescriptionCollection<S>,\r\n  CaseReducer<S, AnyAction> | undefined\r\n] {\r\n  const actionsMap: CaseReducers<S, any> = {}\r\n  const actionMatchers: ActionMatcherDescriptionCollection<S> = []\r\n  let defaultCaseReducer: CaseReducer<S, AnyAction> | undefined\r\n  const builder = {\r\n    addCase(\r\n      typeOrActionCreator: string | TypedActionCreator<any>,\r\n      reducer: CaseReducer<S>\r\n    ) {\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        /*\r\n         to keep the definition by the user in line with actual behavior, \r\n         we enforce `addCase` to always be called before calling `addMatcher`\r\n         as matching cases take precedence over matchers\r\n         */\r\n        if (actionMatchers.length > 0) {\r\n          throw new Error(\r\n            '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n          )\r\n        }\r\n        if (defaultCaseReducer) {\r\n          throw new Error(\r\n            '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n          )\r\n        }\r\n      }\r\n      const type =\r\n        typeof typeOrActionCreator === 'string'\r\n          ? typeOrActionCreator\r\n          : typeOrActionCreator.type\r\n      if (type in actionsMap) {\r\n        throw new Error(\r\n          'addCase cannot be called with two reducers for the same action type'\r\n        )\r\n      }\r\n      actionsMap[type] = reducer\r\n      return builder\r\n    },\r\n    addMatcher<A>(\r\n      matcher: TypeGuard<A>,\r\n      reducer: CaseReducer<S, A extends AnyAction ? A : A & AnyAction>\r\n    ) {\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        if (defaultCaseReducer) {\r\n          throw new Error(\r\n            '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n          )\r\n        }\r\n      }\r\n      actionMatchers.push({ matcher, reducer })\r\n      return builder\r\n    },\r\n    addDefaultCase(reducer: CaseReducer<S, AnyAction>) {\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        if (defaultCaseReducer) {\r\n          throw new Error('`builder.addDefaultCase` can only be called once')\r\n        }\r\n      }\r\n      defaultCaseReducer = reducer\r\n      return builder\r\n    },\r\n  }\r\n  builderCallback(builder)\r\n  return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n  ActionCreatorWithoutPayload,\r\n  PayloadAction,\r\n  PayloadActionCreator,\r\n  PrepareAction,\r\n  _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n  CaseReducer,\r\n  CaseReducers,\r\n  ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator<P> = PayloadActionCreator<P>\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n  State = any,\r\n  CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n  Name extends string = string\r\n> {\r\n  /**\r\n   * The slice name.\r\n   */\r\n  name: Name\r\n\r\n  /**\r\n   * The slice's reducer.\r\n   */\r\n  reducer: Reducer<State>\r\n\r\n  /**\r\n   * Action creators for the types of actions that are handled by the slice\r\n   * reducer.\r\n   */\r\n  actions: CaseReducerActions<CaseReducers, Name>\r\n\r\n  /**\r\n   * The individual case reducer functions that were passed in the `reducers` parameter.\r\n   * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n   */\r\n  caseReducers: SliceDefinedCaseReducers<CaseReducers>\r\n\r\n  /**\r\n   * Provides access to the initial state value given to the slice.\r\n   * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n   */\r\n  getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n  State = any,\r\n  CR extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n  Name extends string = string\r\n> {\r\n  /**\r\n   * The slice's name. Used to namespace the generated action types.\r\n   */\r\n  name: Name\r\n\r\n  /**\r\n   * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n   */\r\n  initialState: State | (() => State)\r\n\r\n  /**\r\n   * A mapping from action types to action-type-specific *case reducer*\r\n   * functions. For every action type, a matching action creator will be\r\n   * generated using `createAction()`.\r\n   */\r\n  reducers: ValidateSliceCaseReducers<State, CR>\r\n\r\n  /**\r\n   * A callback that receives a *builder* object to define\r\n   * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n   * \r\n   * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n   * functions. These reducers should have existing action types used\r\n   * as the keys, and action creators will _not_ be generated.\r\n   * \r\n   * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction<number>('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n  error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n  return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n  name: 'counter',\r\n  initialState: 0,\r\n  reducers: {},\r\n  extraReducers: builder => {\r\n    builder\r\n      .addCase(incrementBy, (state, action) => {\r\n        // action is inferred correctly here if using TS\r\n      })\r\n      // You can chain calls, or have separate `builder.addCase()` lines each time\r\n      .addCase(decrement, (state, action) => {})\r\n      // You can match a range of action types\r\n      .addMatcher(\r\n        isRejectedAction,\r\n        // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n        (state, action) => {}\r\n      )\r\n      // and provide a default case if no other handlers matched\r\n      .addDefaultCase((state, action) => {})\r\n    }\r\n})\r\n```\r\n   */\r\n  extraReducers?:\r\n    | CaseReducers<NoInfer<State>, any>\r\n    | ((builder: ActionReducerMapBuilder<NoInfer<State>>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare<State, Action extends PayloadAction> = {\r\n  reducer: CaseReducer<State, Action>\r\n  prepare: PrepareAction<Action['payload']>\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers<State> = {\r\n  [K: string]:\r\n    | CaseReducer<State, PayloadAction<any>>\r\n    | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>\r\n}\r\n\r\ntype SliceActionType<\r\n  SliceName extends string,\r\n  ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n  CaseReducers extends SliceCaseReducers<any>,\r\n  SliceName extends string\r\n> = {\r\n  [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n    ? ActionCreatorForCaseReducerWithPrepare<\r\n        CaseReducers[Type],\r\n        SliceActionType<SliceName, Type>\r\n      >\r\n    : ActionCreatorForCaseReducer<\r\n        CaseReducers[Type],\r\n        SliceActionType<SliceName, Type>\r\n      >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n  CR extends { prepare: any },\r\n  Type extends string\r\n> = _ActionCreatorWithPreparedPayload<CR['prepare'], Type>\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer<CR, Type extends string> = CR extends (\r\n  state: any,\r\n  action: infer Action\r\n) => any\r\n  ? Action extends { payload: infer P }\r\n    ? PayloadActionCreator<P, Type>\r\n    : ActionCreatorWithoutPayload<Type>\r\n  : ActionCreatorWithoutPayload<Type>\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers<CaseReducers extends SliceCaseReducers<any>> = {\r\n  [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n    reducer: infer Reducer\r\n  }\r\n    ? Reducer\r\n    : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n  S,\r\n  ACR extends SliceCaseReducers<S>\r\n> = ACR &\r\n  {\r\n    [T in keyof ACR]: ACR[T] extends {\r\n      reducer(s: S, action?: infer A): any\r\n    }\r\n      ? {\r\n          prepare(...a: never[]): Omit<A, 'type'>\r\n        }\r\n      : {}\r\n  }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n  return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n  State,\r\n  CaseReducers extends SliceCaseReducers<State>,\r\n  Name extends string = string\r\n>(\r\n  options: CreateSliceOptions<State, CaseReducers, Name>\r\n): Slice<State, CaseReducers, Name> {\r\n  const { name } = options\r\n  if (!name) {\r\n    throw new Error('`name` is a required option for createSlice')\r\n  }\r\n\r\n  if (\r\n    typeof process !== 'undefined' &&\r\n    process.env.NODE_ENV === 'development'\r\n  ) {\r\n    if (options.initialState === undefined) {\r\n      console.error(\r\n        'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n      )\r\n    }\r\n  }\r\n\r\n  const initialState =\r\n    typeof options.initialState == 'function'\r\n      ? options.initialState\r\n      : freezeDraftable(options.initialState)\r\n\r\n  const reducers = options.reducers || {}\r\n\r\n  const reducerNames = Object.keys(reducers)\r\n\r\n  const sliceCaseReducersByName: Record<string, CaseReducer> = {}\r\n  const sliceCaseReducersByType: Record<string, CaseReducer> = {}\r\n  const actionCreators: Record<string, Function> = {}\r\n\r\n  reducerNames.forEach((reducerName) => {\r\n    const maybeReducerWithPrepare = reducers[reducerName]\r\n    const type = getType(name, reducerName)\r\n\r\n    let caseReducer: CaseReducer<State, any>\r\n    let prepareCallback: PrepareAction<any> | undefined\r\n\r\n    if ('reducer' in maybeReducerWithPrepare) {\r\n      caseReducer = maybeReducerWithPrepare.reducer\r\n      prepareCallback = maybeReducerWithPrepare.prepare\r\n    } else {\r\n      caseReducer = maybeReducerWithPrepare\r\n    }\r\n\r\n    sliceCaseReducersByName[reducerName] = caseReducer\r\n    sliceCaseReducersByType[type] = caseReducer\r\n    actionCreators[reducerName] = prepareCallback\r\n      ? createAction(type, prepareCallback)\r\n      : createAction(type)\r\n  })\r\n\r\n  function buildReducer() {\r\n    if (process.env.NODE_ENV !== 'production') {\r\n      if (typeof options.extraReducers === 'object') {\r\n        if (!hasWarnedAboutObjectNotation) {\r\n          hasWarnedAboutObjectNotation = true\r\n          console.warn(\r\n            \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n          )\r\n        }\r\n      }\r\n    }\r\n    const [\r\n      extraReducers = {},\r\n      actionMatchers = [],\r\n      defaultCaseReducer = undefined,\r\n    ] =\r\n      typeof options.extraReducers === 'function'\r\n        ? executeReducerBuilderCallback(options.extraReducers)\r\n        : [options.extraReducers]\r\n\r\n    const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n    return createReducer(initialState, (builder) => {\r\n      for (let key in finalCaseReducers) {\r\n        builder.addCase(key, finalCaseReducers[key] as CaseReducer<any>)\r\n      }\r\n      for (let m of actionMatchers) {\r\n        builder.addMatcher(m.matcher, m.reducer)\r\n      }\r\n      if (defaultCaseReducer) {\r\n        builder.addDefaultCase(defaultCaseReducer)\r\n      }\r\n    })\r\n  }\r\n\r\n  let _reducer: ReducerWithInitialState<State>\r\n\r\n  return {\r\n    name,\r\n    reducer(state, action) {\r\n      if (!_reducer) _reducer = buildReducer()\r\n\r\n      return _reducer(state, action)\r\n    },\r\n    actions: actionCreators as any,\r\n    caseReducers: sliceCaseReducersByName as any,\r\n    getInitialState() {\r\n      if (!_reducer) _reducer = buildReducer()\r\n\r\n      return _reducer.getInitialState()\r\n    },\r\n  }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n *             inference purposes and should not have any further value.\r\n *             It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions<T extends keyof any = string> = Record<T, Action>\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher<A extends AnyAction> {\r\n  (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription<S, A extends AnyAction> = {\r\n  matcher: ActionMatcher<A>\r\n  reducer: CaseReducer<S, NoInfer<A>>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection<S> = ReadonlyArray<\r\n  ActionMatcherDescription<S, any>\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection<S> = Array<\r\n  ActionMatcherDescription<S, any>\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer<S = any, A extends Action = AnyAction> = (\r\n  state: Draft<S>,\r\n  action: A\r\n) => NoInfer<S> | void | Draft<NoInfer<S>>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n *             for internal inference purposes and using it manually\r\n *             would lead to type erasure.\r\n *             It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers<S, AS extends Actions> = {\r\n  [T in keyof AS]: AS[T] extends Action ? CaseReducer<S, AS[T]> : void\r\n}\r\n\r\nexport type NotFunction<T> = T extends Function ? never : T\r\n\r\nfunction isStateFunction<S>(x: unknown): x is () => S {\r\n  return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState<S extends NotFunction<any>> = Reducer<S> & {\r\n  getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n *   case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n  createAction,\r\n  createReducer,\r\n  AnyAction,\r\n  PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction<number>(\"increment\");\r\nconst decrement = createAction<number>(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n  action: AnyAction\r\n): action is PayloadAction<number> {\r\n  return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n  {\r\n    counter: 0,\r\n    sumOfNumberPayloads: 0,\r\n    unhandledActions: 0,\r\n  },\r\n  (builder) => {\r\n    builder\r\n      .addCase(increment, (state, action) => {\r\n        // action is inferred correctly here\r\n        state.counter += action.payload;\r\n      })\r\n      // You can chain calls, or have separate `builder.addCase()` lines each time\r\n      .addCase(decrement, (state, action) => {\r\n        state.counter -= action.payload;\r\n      })\r\n      // You can apply a \"matcher function\" to incoming actions\r\n      .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n      // and provide a default case if no other handlers matched\r\n      .addDefaultCase((state, action) => {});\r\n  }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer<S extends NotFunction<any>>(\r\n  initialState: S | (() => S),\r\n  builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): ReducerWithInitialState<S>\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n *   All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n *   reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n  increment: (state, action) => state + action.payload,\r\n  decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n  increment: (state, action) => state + action.payload,\r\n  decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n  [increment]: (state, action) => state + action.payload,\r\n  [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n  S extends NotFunction<any>,\r\n  CR extends CaseReducers<S, any> = CaseReducers<S, any>\r\n>(\r\n  initialState: S | (() => S),\r\n  actionsMap: CR,\r\n  actionMatchers?: ActionMatcherDescriptionCollection<S>,\r\n  defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S>\r\n\r\nexport function createReducer<S extends NotFunction<any>>(\r\n  initialState: S | (() => S),\r\n  mapOrBuilderCallback:\r\n    | CaseReducers<S, any>\r\n    | ((builder: ActionReducerMapBuilder<S>) => void),\r\n  actionMatchers: ReadonlyActionMatcherDescriptionCollection<S> = [],\r\n  defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S> {\r\n  if (process.env.NODE_ENV !== 'production') {\r\n    if (typeof mapOrBuilderCallback === 'object') {\r\n      if (!hasWarnedAboutObjectNotation) {\r\n        hasWarnedAboutObjectNotation = true\r\n        console.warn(\r\n          \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n        )\r\n      }\r\n    }\r\n  }\r\n\r\n  let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n    typeof mapOrBuilderCallback === 'function'\r\n      ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n      : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n  // Ensure the initial state gets frozen either way (if draftable)\r\n  let getInitialState: () => S\r\n  if (isStateFunction(initialState)) {\r\n    getInitialState = () => freezeDraftable(initialState())\r\n  } else {\r\n    const frozenInitialState = freezeDraftable(initialState)\r\n    getInitialState = () => frozenInitialState\r\n  }\r\n\r\n  function reducer(state = getInitialState(), action: any): S {\r\n    let caseReducers = [\r\n      actionsMap[action.type],\r\n      ...finalActionMatchers\r\n        .filter(({ matcher }) => matcher(action))\r\n        .map(({ reducer }) => reducer),\r\n    ]\r\n    if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n      caseReducers = [finalDefaultCaseReducer]\r\n    }\r\n\r\n    return caseReducers.reduce((previousState, caseReducer): S => {\r\n      if (caseReducer) {\r\n        if (isDraft(previousState)) {\r\n          // If it's already a draft, we must already be inside a `createNextState` call,\r\n          // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n          // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n          const draft = previousState as Draft<S> // We can assume this is already a draft\r\n          const result = caseReducer(draft, action)\r\n\r\n          if (result === undefined) {\r\n            return previousState\r\n          }\r\n\r\n          return result as S\r\n        } else if (!isDraftable(previousState)) {\r\n          // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n          // return the caseReducer func and not wrap it with produce.\r\n          const result = caseReducer(previousState as any, action)\r\n\r\n          if (result === undefined) {\r\n            if (previousState === null) {\r\n              return previousState\r\n            }\r\n            throw Error(\r\n              'A case reducer on a non-draftable value must not return undefined'\r\n            )\r\n          }\r\n\r\n          return result as S\r\n        } else {\r\n          // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\r\n          // than an Immutable<S>, and TypeScript cannot find out how to reconcile\r\n          // these two types.\r\n          return createNextState(previousState, (draft: Draft<S>) => {\r\n            return caseReducer(draft, action)\r\n          })\r\n        }\r\n      }\r\n\r\n      return previousState\r\n    }, state)\r\n  }\r\n\r\n  reducer.getInitialState = getInitialState\r\n\r\n  return reducer as ReducerWithInitialState<S>\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n  'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n  let id = ''\r\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n  let i = size\r\n  while (i--) {\r\n    // `| 0` is more compact and faster than `Math.floor()`.\r\n    id += urlAlphabet[(Math.random() * 64) | 0]\r\n  }\r\n  return id\r\n}\r\n","import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n  PayloadAction,\r\n  ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload<any, unknown>\r\n\r\nexport type BaseThunkAPI<\r\n  S,\r\n  E,\r\n  D extends Dispatch = Dispatch,\r\n  RejectedValue = undefined,\r\n  RejectedMeta = unknown,\r\n  FulfilledMeta = unknown\r\n> = {\r\n  dispatch: D\r\n  getState: () => S\r\n  extra: E\r\n  requestId: string\r\n  signal: AbortSignal\r\n  abort: (reason?: string) => void\r\n  rejectWithValue: IsUnknown<\r\n    RejectedMeta,\r\n    (value: RejectedValue) => RejectWithValue<RejectedValue, RejectedMeta>,\r\n    (\r\n      value: RejectedValue,\r\n      meta: RejectedMeta\r\n    ) => RejectWithValue<RejectedValue, RejectedMeta>\r\n  >\r\n  fulfillWithValue: IsUnknown<\r\n    FulfilledMeta,\r\n    <FulfilledValue>(value: FulfilledValue) => FulfilledValue,\r\n    <FulfilledValue>(\r\n      value: FulfilledValue,\r\n      meta: FulfilledMeta\r\n    ) => FulfillWithMeta<FulfilledValue, FulfilledMeta>\r\n  >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n  name?: string\r\n  message?: string\r\n  stack?: string\r\n  code?: string\r\n}\r\n\r\nconst commonProperties: Array<keyof SerializedError> = [\r\n  'name',\r\n  'message',\r\n  'stack',\r\n  'code',\r\n]\r\n\r\nclass RejectWithValue<Payload, RejectedMeta> {\r\n  /*\r\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n  does not exist at runtime\r\n  */\r\n  private readonly _type!: 'RejectWithValue'\r\n  constructor(\r\n    public readonly payload: Payload,\r\n    public readonly meta: RejectedMeta\r\n  ) {}\r\n}\r\n\r\nclass FulfillWithMeta<Payload, FulfilledMeta> {\r\n  /*\r\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n  does not exist at runtime\r\n  */\r\n  private readonly _type!: 'FulfillWithMeta'\r\n  constructor(\r\n    public readonly payload: Payload,\r\n    public readonly meta: FulfilledMeta\r\n  ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n  if (typeof value === 'object' && value !== null) {\r\n    const simpleError: SerializedError = {}\r\n    for (const property of commonProperties) {\r\n      if (typeof value[property] === 'string') {\r\n        simpleError[property] = value[property]\r\n      }\r\n    }\r\n\r\n    return simpleError\r\n  }\r\n\r\n  return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n  state?: unknown\r\n  dispatch?: Dispatch\r\n  extra?: unknown\r\n  rejectValue?: unknown\r\n  serializedErrorType?: unknown\r\n  pendingMeta?: unknown\r\n  fulfilledMeta?: unknown\r\n  rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState<ThunkApiConfig> = ThunkApiConfig extends {\r\n  state: infer State\r\n}\r\n  ? State\r\n  : unknown\r\ntype GetExtra<ThunkApiConfig> = ThunkApiConfig extends { extra: infer Extra }\r\n  ? Extra\r\n  : unknown\r\ntype GetDispatch<ThunkApiConfig> = ThunkApiConfig extends {\r\n  dispatch: infer Dispatch\r\n}\r\n  ? FallbackIfUnknown<\r\n      Dispatch,\r\n      ThunkDispatch<\r\n        GetState<ThunkApiConfig>,\r\n        GetExtra<ThunkApiConfig>,\r\n        AnyAction\r\n      >\r\n    >\r\n  : ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, AnyAction>\r\n\r\ntype GetThunkAPI<ThunkApiConfig> = BaseThunkAPI<\r\n  GetState<ThunkApiConfig>,\r\n  GetExtra<ThunkApiConfig>,\r\n  GetDispatch<ThunkApiConfig>,\r\n  GetRejectValue<ThunkApiConfig>,\r\n  GetRejectedMeta<ThunkApiConfig>,\r\n  GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\ntype GetRejectValue<ThunkApiConfig> = ThunkApiConfig extends {\r\n  rejectValue: infer RejectValue\r\n}\r\n  ? RejectValue\r\n  : unknown\r\n\r\ntype GetPendingMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n  pendingMeta: infer PendingMeta\r\n}\r\n  ? PendingMeta\r\n  : unknown\r\n\r\ntype GetFulfilledMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n  fulfilledMeta: infer FulfilledMeta\r\n}\r\n  ? FulfilledMeta\r\n  : unknown\r\n\r\ntype GetRejectedMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n  rejectedMeta: infer RejectedMeta\r\n}\r\n  ? RejectedMeta\r\n  : unknown\r\n\r\ntype GetSerializedErrorType<ThunkApiConfig> = ThunkApiConfig extends {\r\n  serializedErrorType: infer GetSerializedErrorType\r\n}\r\n  ? GetSerializedErrorType\r\n  : SerializedError\r\n\r\ntype MaybePromise<T> = T | Promise<T> | (T extends any ? Promise<T> : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n  Returned,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n  | IsUnknown<\r\n      GetFulfilledMeta<ThunkApiConfig>,\r\n      Returned,\r\n      FulfillWithMeta<Returned, GetFulfilledMeta<ThunkApiConfig>>\r\n    >\r\n  | RejectWithValue<\r\n      GetRejectValue<ThunkApiConfig>,\r\n      GetRejectedMeta<ThunkApiConfig>\r\n    >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n  Returned,\r\n  ThunkArg = void,\r\n  ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n  arg: ThunkArg,\r\n  thunkAPI: GetThunkAPI<ThunkApiConfig>\r\n) => AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig>\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n  dispatch: GetDispatch<ThunkApiConfig>,\r\n  getState: () => GetState<ThunkApiConfig>,\r\n  extra: GetExtra<ThunkApiConfig>\r\n) => Promise<\r\n  | ReturnType<AsyncThunkFulfilledActionCreator<Returned, ThunkArg>>\r\n  | ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>>\r\n> & {\r\n  abort: (reason?: string) => void\r\n  requestId: string\r\n  arg: ThunkArg\r\n  unwrap: () => Promise<Returned>\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n  ThunkArg,\r\n  // any handling\r\n  (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n  // unknown handling\r\n  unknown extends ThunkArg\r\n    ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument not specified or specified as void or undefined\r\n    : [ThunkArg] extends [void] | [undefined]\r\n    ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains void\r\n    : [void] extends [ThunkArg] // make optional\r\n    ? (arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains undefined\r\n    : [undefined] extends [ThunkArg]\r\n    ? WithStrictNullChecks<\r\n        // with strict nullChecks: make optional\r\n        (\r\n          arg?: ThunkArg\r\n        ) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n        // without strict null checks this will match everything, so don't make it optional\r\n        (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n      > // default case: normal argument\r\n    : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n  ThunkArg = void,\r\n  ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n  /**\r\n   * A method to control whether the asyncThunk should be executed. Has access to the\r\n   * `arg`, `api.getState()` and `api.extra` arguments.\r\n   *\r\n   * @returns `false` if it should be skipped\r\n   */\r\n  condition?(\r\n    arg: ThunkArg,\r\n    api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n  ): MaybePromise<boolean | undefined>\r\n  /**\r\n   * If `condition` returns `false`, the asyncThunk will be skipped.\r\n   * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n   * will be dispatched or not.\r\n   *\r\n   * @default `false`\r\n   */\r\n  dispatchConditionRejection?: boolean\r\n\r\n  serializeError?: (x: unknown) => GetSerializedErrorType<ThunkApiConfig>\r\n\r\n  /**\r\n   * A function to use when generating the `requestId` for the request sequence.\r\n   *\r\n   * @default `nanoid`\r\n   */\r\n  idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n  GetPendingMeta<ThunkApiConfig>,\r\n  {\r\n    /**\r\n     * A method to generate additional properties to be added to `meta` of the pending action.\r\n     *\r\n     * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n     * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n     */\r\n    getPendingMeta?(\r\n      base: {\r\n        arg: ThunkArg\r\n        requestId: string\r\n      },\r\n      api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n    ): GetPendingMeta<ThunkApiConfig>\r\n  },\r\n  {\r\n    /**\r\n     * A method to generate additional properties to be added to `meta` of the pending action.\r\n     */\r\n    getPendingMeta(\r\n      base: {\r\n        arg: ThunkArg\r\n        requestId: string\r\n      },\r\n      api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n    ): GetPendingMeta<ThunkApiConfig>\r\n  }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n  ThunkArg,\r\n  ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n  [string, ThunkArg, GetPendingMeta<ThunkApiConfig>?],\r\n  undefined,\r\n  string,\r\n  never,\r\n  {\r\n    arg: ThunkArg\r\n    requestId: string\r\n    requestStatus: 'pending'\r\n  } & GetPendingMeta<ThunkApiConfig>\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n  ThunkArg,\r\n  ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n  [\r\n    Error | null,\r\n    string,\r\n    ThunkArg,\r\n    GetRejectValue<ThunkApiConfig>?,\r\n    GetRejectedMeta<ThunkApiConfig>?\r\n  ],\r\n  GetRejectValue<ThunkApiConfig> | undefined,\r\n  string,\r\n  GetSerializedErrorType<ThunkApiConfig>,\r\n  {\r\n    arg: ThunkArg\r\n    requestId: string\r\n    requestStatus: 'rejected'\r\n    aborted: boolean\r\n    condition: boolean\r\n  } & (\r\n    | ({ rejectedWithValue: false } & {\r\n        [K in keyof GetRejectedMeta<ThunkApiConfig>]?: undefined\r\n      })\r\n    | ({ rejectedWithValue: true } & GetRejectedMeta<ThunkApiConfig>)\r\n  )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n  [Returned, string, ThunkArg, GetFulfilledMeta<ThunkApiConfig>?],\r\n  Returned,\r\n  string,\r\n  never,\r\n  {\r\n    arg: ThunkArg\r\n    requestId: string\r\n    requestStatus: 'fulfilled'\r\n  } & GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> & {\r\n  pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig>\r\n  rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>\r\n  fulfilled: AsyncThunkFulfilledActionCreator<\r\n    Returned,\r\n    ThunkArg,\r\n    ThunkApiConfig\r\n  >\r\n  typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs<OldConfig, NewConfig> = Id<\r\n  NewConfig & Omit<OldConfig, keyof NewConfig>\r\n>\r\n\r\ntype CreateAsyncThunk<CurriedThunkApiConfig extends AsyncThunkConfig> = {\r\n  /**\r\n   *\r\n   * @param typePrefix\r\n   * @param payloadCreator\r\n   * @param options\r\n   *\r\n   * @public\r\n   */\r\n  // separate signature without `AsyncThunkConfig` for better inference\r\n  <Returned, ThunkArg = void>(\r\n    typePrefix: string,\r\n    payloadCreator: AsyncThunkPayloadCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      CurriedThunkApiConfig\r\n    >,\r\n    options?: AsyncThunkOptions<ThunkArg, CurriedThunkApiConfig>\r\n  ): AsyncThunk<Returned, ThunkArg, CurriedThunkApiConfig>\r\n\r\n  /**\r\n   *\r\n   * @param typePrefix\r\n   * @param payloadCreator\r\n   * @param options\r\n   *\r\n   * @public\r\n   */\r\n  <Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(\r\n    typePrefix: string,\r\n    payloadCreator: AsyncThunkPayloadCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n    >,\r\n    options?: AsyncThunkOptions<\r\n      ThunkArg,\r\n      OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n    >\r\n  ): AsyncThunk<\r\n    Returned,\r\n    ThunkArg,\r\n    OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n  >\r\n\r\n  withTypes<ThunkApiConfig extends AsyncThunkConfig>(): CreateAsyncThunk<\r\n    OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n  >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n  function createAsyncThunk<\r\n    Returned,\r\n    ThunkArg,\r\n    ThunkApiConfig extends AsyncThunkConfig\r\n  >(\r\n    typePrefix: string,\r\n    payloadCreator: AsyncThunkPayloadCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      ThunkApiConfig\r\n    >,\r\n    options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>\r\n  ): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> {\r\n    type RejectedValue = GetRejectValue<ThunkApiConfig>\r\n    type PendingMeta = GetPendingMeta<ThunkApiConfig>\r\n    type FulfilledMeta = GetFulfilledMeta<ThunkApiConfig>\r\n    type RejectedMeta = GetRejectedMeta<ThunkApiConfig>\r\n\r\n    const fulfilled: AsyncThunkFulfilledActionCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      ThunkApiConfig\r\n    > = createAction(\r\n      typePrefix + '/fulfilled',\r\n      (\r\n        payload: Returned,\r\n        requestId: string,\r\n        arg: ThunkArg,\r\n        meta?: FulfilledMeta\r\n      ) => ({\r\n        payload,\r\n        meta: {\r\n          ...((meta as any) || {}),\r\n          arg,\r\n          requestId,\r\n          requestStatus: 'fulfilled' as const,\r\n        },\r\n      })\r\n    )\r\n\r\n    const pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig> =\r\n      createAction(\r\n        typePrefix + '/pending',\r\n        (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n          payload: undefined,\r\n          meta: {\r\n            ...((meta as any) || {}),\r\n            arg,\r\n            requestId,\r\n            requestStatus: 'pending' as const,\r\n          },\r\n        })\r\n      )\r\n\r\n    const rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> =\r\n      createAction(\r\n        typePrefix + '/rejected',\r\n        (\r\n          error: Error | null,\r\n          requestId: string,\r\n          arg: ThunkArg,\r\n          payload?: RejectedValue,\r\n          meta?: RejectedMeta\r\n        ) => ({\r\n          payload,\r\n          error: ((options && options.serializeError) || miniSerializeError)(\r\n            error || 'Rejected'\r\n          ) as GetSerializedErrorType<ThunkApiConfig>,\r\n          meta: {\r\n            ...((meta as any) || {}),\r\n            arg,\r\n            requestId,\r\n            rejectedWithValue: !!payload,\r\n            requestStatus: 'rejected' as const,\r\n            aborted: error?.name === 'AbortError',\r\n            condition: error?.name === 'ConditionError',\r\n          },\r\n        })\r\n      )\r\n\r\n    let displayedWarning = false\r\n\r\n    const AC =\r\n      typeof AbortController !== 'undefined'\r\n        ? AbortController\r\n        : class implements AbortController {\r\n            signal = {\r\n              aborted: false,\r\n              addEventListener() {},\r\n              dispatchEvent() {\r\n                return false\r\n              },\r\n              onabort() {},\r\n              removeEventListener() {},\r\n              reason: undefined,\r\n              throwIfAborted() {},\r\n            }\r\n            abort() {\r\n              if (process.env.NODE_ENV !== 'production') {\r\n                if (!displayedWarning) {\r\n                  displayedWarning = true\r\n                  console.info(\r\n                    `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n                  )\r\n                }\r\n              }\r\n            }\r\n          }\r\n\r\n    function actionCreator(\r\n      arg: ThunkArg\r\n    ): AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> {\r\n      return (dispatch, getState, extra) => {\r\n        const requestId = options?.idGenerator\r\n          ? options.idGenerator(arg)\r\n          : nanoid()\r\n\r\n        const abortController = new AC()\r\n        let abortReason: string | undefined\r\n\r\n        let started = false\r\n        function abort(reason?: string) {\r\n          abortReason = reason\r\n          abortController.abort()\r\n        }\r\n\r\n        const promise = (async function () {\r\n          let finalAction: ReturnType<typeof fulfilled | typeof rejected>\r\n          try {\r\n            let conditionResult = options?.condition?.(arg, { getState, extra })\r\n            if (isThenable(conditionResult)) {\r\n              conditionResult = await conditionResult\r\n            }\r\n\r\n            if (conditionResult === false || abortController.signal.aborted) {\r\n              // eslint-disable-next-line no-throw-literal\r\n              throw {\r\n                name: 'ConditionError',\r\n                message: 'Aborted due to condition callback returning false.',\r\n              }\r\n            }\r\n            started = true\r\n\r\n            const abortedPromise = new Promise<never>((_, reject) =>\r\n              abortController.signal.addEventListener('abort', () =>\r\n                reject({\r\n                  name: 'AbortError',\r\n                  message: abortReason || 'Aborted',\r\n                })\r\n              )\r\n            )\r\n            dispatch(\r\n              pending(\r\n                requestId,\r\n                arg,\r\n                options?.getPendingMeta?.(\r\n                  { requestId, arg },\r\n                  { getState, extra }\r\n                )\r\n              )\r\n            )\r\n            finalAction = await Promise.race([\r\n              abortedPromise,\r\n              Promise.resolve(\r\n                payloadCreator(arg, {\r\n                  dispatch,\r\n                  getState,\r\n                  extra,\r\n                  requestId,\r\n                  signal: abortController.signal,\r\n                  abort,\r\n                  rejectWithValue: ((\r\n                    value: RejectedValue,\r\n                    meta?: RejectedMeta\r\n                  ) => {\r\n                    return new RejectWithValue(value, meta)\r\n                  }) as any,\r\n                  fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n                    return new FulfillWithMeta(value, meta)\r\n                  }) as any,\r\n                })\r\n              ).then((result) => {\r\n                if (result instanceof RejectWithValue) {\r\n                  throw result\r\n                }\r\n                if (result instanceof FulfillWithMeta) {\r\n                  return fulfilled(result.payload, requestId, arg, result.meta)\r\n                }\r\n                return fulfilled(result as any, requestId, arg)\r\n              }),\r\n            ])\r\n          } catch (err) {\r\n            finalAction =\r\n              err instanceof RejectWithValue\r\n                ? rejected(null, requestId, arg, err.payload, err.meta)\r\n                : rejected(err as any, requestId, arg)\r\n          }\r\n          // We dispatch the result action _after_ the catch, to avoid having any errors\r\n          // here get swallowed by the try/catch block,\r\n          // per https://twitter.com/dan_abramov/status/770914221638942720\r\n          // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n          const skipDispatch =\r\n            options &&\r\n            !options.dispatchConditionRejection &&\r\n            rejected.match(finalAction) &&\r\n            (finalAction as any).meta.condition\r\n\r\n          if (!skipDispatch) {\r\n            dispatch(finalAction)\r\n          }\r\n          return finalAction\r\n        })()\r\n        return Object.assign(promise as Promise<any>, {\r\n          abort,\r\n          requestId,\r\n          arg,\r\n          unwrap() {\r\n            return promise.then<any>(unwrapResult)\r\n          },\r\n        })\r\n      }\r\n    }\r\n\r\n    return Object.assign(\r\n      actionCreator as AsyncThunkActionCreator<\r\n        Returned,\r\n        ThunkArg,\r\n        ThunkApiConfig\r\n      >,\r\n      {\r\n        pending,\r\n        rejected,\r\n        fulfilled,\r\n        typePrefix,\r\n      }\r\n    )\r\n  }\r\n  createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n  return createAsyncThunk as CreateAsyncThunk<AsyncThunkConfig>\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n  payload: any\r\n  meta?: any\r\n  error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload<T extends UnwrappableAction> = Exclude<\r\n  T,\r\n  { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult<R extends UnwrappableAction>(\r\n  action: R\r\n): UnwrappedActionPayload<R> {\r\n  if (action.meta && action.meta.rejectedWithValue) {\r\n    throw action.payload\r\n  }\r\n  if (action.error) {\r\n    throw action.error\r\n  }\r\n  return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks<True, False> = undefined extends boolean\r\n  ? False\r\n  : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike<any> {\r\n  return (\r\n    value !== null &&\r\n    typeof value === 'object' &&\r\n    typeof value.then === 'function'\r\n  )\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction, isAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n  ListenerMiddleware,\r\n  ListenerMiddlewareInstance,\r\n  AddListenerOverloads,\r\n  AnyListenerPredicate,\r\n  CreateListenerMiddlewareOptions,\r\n  TypedAddListener,\r\n  TypedCreateListenerEntry,\r\n  FallbackAddListenerOptions,\r\n  ListenerEntry,\r\n  ListenerErrorHandler,\r\n  UnsubscribeListener,\r\n  TakePattern,\r\n  ListenerErrorInfo,\r\n  ForkedTaskExecutor,\r\n  ForkedTask,\r\n  TypedRemoveListener,\r\n  TaskResult,\r\n  AbortSignalWithReason,\r\n  UnsubscribeListenerOptions,\r\n} from './types'\r\nimport {\r\n  abortControllerWithReason,\r\n  addAbortSignalListener,\r\n  assertFunction,\r\n  catchRejection,\r\n} from './utils'\r\nimport {\r\n  listenerCancelled,\r\n  listenerCompleted,\r\n  TaskAbortError,\r\n  taskCancelled,\r\n  taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n  runTask,\r\n  validateActive,\r\n  createPause,\r\n  createDelay,\r\n  raceWithSignal,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n  ListenerEffect,\r\n  ListenerMiddleware,\r\n  ListenerEffectAPI,\r\n  ListenerMiddlewareInstance,\r\n  CreateListenerMiddlewareOptions,\r\n  ListenerErrorHandler,\r\n  TypedStartListening,\r\n  TypedAddListener,\r\n  TypedStopListening,\r\n  TypedRemoveListener,\r\n  UnsubscribeListener,\r\n  UnsubscribeListenerOptions,\r\n  ForkedTaskExecutor,\r\n  ForkedTask,\r\n  ForkedTaskAPI,\r\n  AsyncTaskExecutor,\r\n  SyncTaskExecutor,\r\n  TaskCancelled,\r\n  TaskRejected,\r\n  TaskResolved,\r\n  TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (parentAbortSignal: AbortSignalWithReason<unknown>) => {\r\n  const linkControllers = (controller: AbortController) =>\r\n    addAbortSignalListener(parentAbortSignal, () =>\r\n      abortControllerWithReason(controller, parentAbortSignal.reason)\r\n    )\r\n\r\n  return <T>(taskExecutor: ForkedTaskExecutor<T>): ForkedTask<T> => {\r\n    assertFunction(taskExecutor, 'taskExecutor')\r\n    const childAbortController = new AbortController()\r\n\r\n    linkControllers(childAbortController)\r\n\r\n    const result = runTask<T>(\r\n      async (): Promise<T> => {\r\n        validateActive(parentAbortSignal)\r\n        validateActive(childAbortController.signal)\r\n        const result = (await taskExecutor({\r\n          pause: createPause(childAbortController.signal),\r\n          delay: createDelay(childAbortController.signal),\r\n          signal: childAbortController.signal,\r\n        })) as T\r\n        validateActive(childAbortController.signal)\r\n        return result\r\n      },\r\n      () => abortControllerWithReason(childAbortController, taskCompleted)\r\n    )\r\n\r\n    return {\r\n      result: createPause<TaskResult<T>>(parentAbortSignal)(result),\r\n      cancel() {\r\n        abortControllerWithReason(childAbortController, taskCancelled)\r\n      },\r\n    }\r\n  }\r\n}\r\n\r\nconst createTakePattern = <S>(\r\n  startListening: AddListenerOverloads<\r\n    UnsubscribeListener,\r\n    S,\r\n    Dispatch<AnyAction>\r\n  >,\r\n  signal: AbortSignal\r\n): TakePattern<S> => {\r\n  /**\r\n   * A function that takes a ListenerPredicate and an optional timeout,\r\n   * and resolves when either the predicate returns `true` based on an action\r\n   * state combination or when the timeout expires.\r\n   * If the parent listener is canceled while waiting, this will throw a\r\n   * TaskAbortError.\r\n   */\r\n  const take = async <P extends AnyListenerPredicate<S>>(\r\n    predicate: P,\r\n    timeout: number | undefined\r\n  ) => {\r\n    validateActive(signal)\r\n\r\n    // Placeholder unsubscribe function until the listener is added\r\n    let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n    const tuplePromise = new Promise<[AnyAction, S, S]>((resolve, reject) => {\r\n      // Inside the Promise, we synchronously add the listener.\r\n      let stopListening = startListening({\r\n        predicate: predicate as any,\r\n        effect: (action, listenerApi): void => {\r\n          // One-shot listener that cleans up as soon as the predicate passes\r\n          listenerApi.unsubscribe()\r\n          // Resolve the promise with the same arguments the predicate saw\r\n          resolve([\r\n            action,\r\n            listenerApi.getState(),\r\n            listenerApi.getOriginalState(),\r\n          ])\r\n        },\r\n      })\r\n      unsubscribe = () => {\r\n        stopListening()\r\n        reject()\r\n      }\r\n    })\r\n\r\n    const promises: (Promise<null> | Promise<[AnyAction, S, S]>)[] = [\r\n      tuplePromise,\r\n    ]\r\n\r\n    if (timeout != null) {\r\n      promises.push(\r\n        new Promise<null>((resolve) => setTimeout(resolve, timeout, null))\r\n      )\r\n    }\r\n\r\n    try {\r\n      const output = await raceWithSignal(signal, Promise.race(promises))\r\n\r\n      validateActive(signal)\r\n      return output\r\n    } finally {\r\n      // Always clean up the listener\r\n      unsubscribe()\r\n    }\r\n  }\r\n\r\n  return ((predicate: AnyListenerPredicate<S>, timeout: number | undefined) =>\r\n    catchRejection(take(predicate, timeout))) as TakePattern<S>\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n  let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n  if (type) {\r\n    predicate = createAction(type).match\r\n  } else if (actionCreator) {\r\n    type = actionCreator!.type\r\n    predicate = actionCreator.match\r\n  } else if (matcher) {\r\n    predicate = matcher\r\n  } else if (predicate) {\r\n    // pass\r\n  } else {\r\n    throw new Error(\r\n      'Creating or removing a listener requires one of the known fields for matching an action'\r\n    )\r\n  }\r\n\r\n  assertFunction(effect, 'options.listener')\r\n\r\n  return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry<unknown> = (\r\n  options: FallbackAddListenerOptions\r\n) => {\r\n  const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n  const id = nanoid()\r\n  const entry: ListenerEntry<unknown> = {\r\n    id,\r\n    effect,\r\n    type,\r\n    predicate,\r\n    pending: new Set<AbortController>(),\r\n    unsubscribe: () => {\r\n      throw new Error('Unsubscribe not initialized')\r\n    },\r\n  }\r\n\r\n  return entry\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n  entry: ListenerEntry<unknown, Dispatch<AnyAction>>\r\n) => {\r\n  entry.pending.forEach((controller) => {\r\n    abortControllerWithReason(controller, listenerCancelled)\r\n  })\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n  listenerMap: Map<string, ListenerEntry>\r\n) => {\r\n  return () => {\r\n    listenerMap.forEach(cancelActiveListeners)\r\n\r\n    listenerMap.clear()\r\n  }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n  errorHandler: ListenerErrorHandler,\r\n  errorToNotify: unknown,\r\n  errorInfo: ListenerErrorInfo\r\n): void => {\r\n  try {\r\n    errorHandler(errorToNotify, errorInfo)\r\n  } catch (errorHandlerError) {\r\n    // We cannot let an error raised here block the listener queue.\r\n    // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n    setTimeout(() => {\r\n      throw errorHandlerError\r\n    }, 0)\r\n  }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n  `${alm}/add`\r\n) as TypedAddListener<unknown>\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n  `${alm}/remove`\r\n) as TypedRemoveListener<unknown>\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n  console.error(`${alm}/error`, ...args)\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n  S = unknown,\r\n  D extends Dispatch<AnyAction> = ThunkDispatch<S, unknown, AnyAction>,\r\n  ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions<ExtraArgument> = {}) {\r\n  const listenerMap = new Map<string, ListenerEntry>()\r\n  const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n  assertFunction(onError, 'onError')\r\n\r\n  const insertEntry = (entry: ListenerEntry) => {\r\n    entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n    listenerMap.set(entry.id, entry)\r\n    return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n      entry.unsubscribe()\r\n      if (cancelOptions?.cancelActive) {\r\n        cancelActiveListeners(entry)\r\n      }\r\n    }\r\n  }\r\n\r\n  const findListenerEntry = (\r\n    comparator: (entry: ListenerEntry) => boolean\r\n  ): ListenerEntry | undefined => {\r\n    for (const entry of Array.from(listenerMap.values())) {\r\n      if (comparator(entry)) {\r\n        return entry\r\n      }\r\n    }\r\n\r\n    return undefined\r\n  }\r\n\r\n  const startListening = (options: FallbackAddListenerOptions) => {\r\n    let entry = findListenerEntry(\r\n      (existingEntry) => existingEntry.effect === options.effect\r\n    )\r\n\r\n    if (!entry) {\r\n      entry = createListenerEntry(options as any)\r\n    }\r\n\r\n    return insertEntry(entry)\r\n  }\r\n\r\n  const stopListening = (\r\n    options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n  ): boolean => {\r\n    const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n    const entry = findListenerEntry((entry) => {\r\n      const matchPredicateOrType =\r\n        typeof type === 'string'\r\n          ? entry.type === type\r\n          : entry.predicate === predicate\r\n\r\n      return matchPredicateOrType && entry.effect === effect\r\n    })\r\n\r\n    if (entry) {\r\n      entry.unsubscribe()\r\n      if (options.cancelActive) {\r\n        cancelActiveListeners(entry)\r\n      }\r\n    }\r\n\r\n    return !!entry\r\n  }\r\n\r\n  const notifyListener = async (\r\n    entry: ListenerEntry<unknown, Dispatch<AnyAction>>,\r\n    action: AnyAction,\r\n    api: MiddlewareAPI,\r\n    getOriginalState: () => S\r\n  ) => {\r\n    const internalTaskController = new AbortController()\r\n    const take = createTakePattern(\r\n      startListening,\r\n      internalTaskController.signal\r\n    )\r\n\r\n    try {\r\n      entry.pending.add(internalTaskController)\r\n      await Promise.resolve(\r\n        entry.effect(\r\n          action,\r\n          // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n          assign({}, api, {\r\n            getOriginalState,\r\n            condition: (\r\n              predicate: AnyListenerPredicate<any>,\r\n              timeout?: number\r\n            ) => take(predicate, timeout).then(Boolean),\r\n            take,\r\n            delay: createDelay(internalTaskController.signal),\r\n            pause: createPause<any>(internalTaskController.signal),\r\n            extra,\r\n            signal: internalTaskController.signal,\r\n            fork: createFork(internalTaskController.signal),\r\n            unsubscribe: entry.unsubscribe,\r\n            subscribe: () => {\r\n              listenerMap.set(entry.id, entry)\r\n            },\r\n            cancelActiveListeners: () => {\r\n              entry.pending.forEach((controller, _, set) => {\r\n                if (controller !== internalTaskController) {\r\n                  abortControllerWithReason(controller, listenerCancelled)\r\n                  set.delete(controller)\r\n                }\r\n              })\r\n            },\r\n          })\r\n        )\r\n      )\r\n    } catch (listenerError) {\r\n      if (!(listenerError instanceof TaskAbortError)) {\r\n        safelyNotifyError(onError, listenerError, {\r\n          raisedBy: 'effect',\r\n        })\r\n      }\r\n    } finally {\r\n      abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n      entry.pending.delete(internalTaskController)\r\n    }\r\n  }\r\n\r\n  const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n  const middleware: ListenerMiddleware<S, D, ExtraArgument> =\r\n    (api) => (next) => (action) => {\r\n      if (!isAction(action)) {\r\n        // we only want to notify listeners for action objects\r\n        return next(action)\r\n      }\r\n\r\n      if (addListener.match(action)) {\r\n        return startListening(action.payload)\r\n      }\r\n\r\n      if (clearAllListeners.match(action)) {\r\n        clearListenerMiddleware()\r\n        return\r\n      }\r\n\r\n      if (removeListener.match(action)) {\r\n        return stopListening(action.payload)\r\n      }\r\n\r\n      // Need to get this state _before_ the reducer processes the action\r\n      let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n      // `getOriginalState` can only be called synchronously.\r\n      // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n      const getOriginalState = (): S => {\r\n        if (originalState === INTERNAL_NIL_TOKEN) {\r\n          throw new Error(\r\n            `${alm}: getOriginalState can only be called synchronously`\r\n          )\r\n        }\r\n\r\n        return originalState as S\r\n      }\r\n\r\n      let result: unknown\r\n\r\n      try {\r\n        // Actually forward the action to the reducer before we handle listeners\r\n        result = next(action)\r\n\r\n        if (listenerMap.size > 0) {\r\n          let currentState = api.getState()\r\n          // Work around ESBuild+TS transpilation issue\r\n          const listenerEntries = Array.from(listenerMap.values())\r\n          for (let entry of listenerEntries) {\r\n            let runListener = false\r\n\r\n            try {\r\n              runListener = entry.predicate(action, currentState, originalState)\r\n            } catch (predicateError) {\r\n              runListener = false\r\n\r\n              safelyNotifyError(onError, predicateError, {\r\n                raisedBy: 'predicate',\r\n              })\r\n            }\r\n\r\n            if (!runListener) {\r\n              continue\r\n            }\r\n\r\n            notifyListener(entry, action, api, getOriginalState)\r\n          }\r\n        }\r\n      } finally {\r\n        // Remove `originalState` store from this scope.\r\n        originalState = INTERNAL_NIL_TOKEN\r\n      }\r\n\r\n      return result\r\n    }\r\n\r\n  return {\r\n    middleware,\r\n    startListening,\r\n    stopListening,\r\n    clearListeners: clearListenerMiddleware,\r\n  } as ListenerMiddlewareInstance<S, D, ExtraArgument>\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection, noop } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n  if (signal.aborted) {\r\n    throw new TaskAbortError((signal as AbortSignalWithReason<string>).reason)\r\n  }\r\n}\r\n\r\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\r\nexport function raceWithSignal<T>(\r\n  signal: AbortSignalWithReason<string>,\r\n  promise: Promise<T>\r\n): Promise<T> {\r\n  let cleanup = noop\r\n  return new Promise<T>((resolve, reject) => {\r\n    const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n    if (signal.aborted) {\r\n      notifyRejection()\r\n      return\r\n    }\r\n\r\n    cleanup = addAbortSignalListener(signal, notifyRejection)\r\n    promise.finally(() => cleanup()).then(resolve, reject)\r\n  }).finally(() => {\r\n    // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\r\n    cleanup = noop\r\n  })\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async <T>(\r\n  task: () => Promise<T>,\r\n  cleanUp?: () => void\r\n): Promise<TaskResult<T>> => {\r\n  try {\r\n    await Promise.resolve()\r\n    const value = await task()\r\n    return {\r\n      status: 'ok',\r\n      value,\r\n    }\r\n  } catch (error: any) {\r\n    return {\r\n      status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n      error,\r\n    }\r\n  } finally {\r\n    cleanUp?.()\r\n  }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = <T>(signal: AbortSignal) => {\r\n  return (promise: Promise<T>): Promise<T> => {\r\n    return catchRejection(\r\n      raceWithSignal(signal, promise).then((output) => {\r\n        validateActive(signal)\r\n        return output\r\n      })\r\n    )\r\n  }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n  const pause = createPause<void>(signal)\r\n  return (timeoutMs: number): Promise<void> => {\r\n    return pause(new Promise<void>((resolve) => setTimeout(resolve, timeoutMs)))\r\n  }\r\n}\r\n","import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n  <T>() =>\r\n  (payload: T): { payload: T; meta: unknown } => ({\r\n    payload,\r\n    meta: { [SHOULD_AUTOBATCH]: true },\r\n  })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise<any>\r\nconst queueMicrotaskShim =\r\n  typeof queueMicrotask === 'function'\r\n    ? queueMicrotask.bind(\r\n        typeof window !== 'undefined'\r\n          ? window\r\n          : typeof global !== 'undefined'\r\n          ? global\r\n          : globalThis\r\n      )\r\n    : // reuse resolved promise, and allocate it lazily\r\n      (cb: () => void) =>\r\n        (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n          setTimeout(() => {\r\n            throw err\r\n          }, 0)\r\n        )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n  return (notify: () => void) => {\r\n    setTimeout(notify, timeout)\r\n  }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n  typeof window !== 'undefined' && window.requestAnimationFrame\r\n    ? window.requestAnimationFrame\r\n    : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n  | { type: 'tick' }\r\n  | { type: 'timer'; timeout: number }\r\n  | { type: 'raf' }\r\n  | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n  (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n  (next) =>\r\n  (...args) => {\r\n    const store = next(...args)\r\n\r\n    let notifying = true\r\n    let shouldNotifyAtEndOfTick = false\r\n    let notificationQueued = false\r\n\r\n    const listeners = new Set<() => void>()\r\n\r\n    const queueCallback =\r\n      options.type === 'tick'\r\n        ? queueMicrotaskShim\r\n        : options.type === 'raf'\r\n        ? rAF\r\n        : options.type === 'callback'\r\n        ? options.queueNotification\r\n        : createQueueWithTimer(options.timeout)\r\n\r\n    const notifyListeners = () => {\r\n      // We're running at the end of the event loop tick.\r\n      // Run the real listener callbacks to actually update the UI.\r\n      notificationQueued = false\r\n      if (shouldNotifyAtEndOfTick) {\r\n        shouldNotifyAtEndOfTick = false\r\n        listeners.forEach((l) => l())\r\n      }\r\n    }\r\n\r\n    return Object.assign({}, store, {\r\n      // Override the base `store.subscribe` method to keep original listeners\r\n      // from running if we're delaying notifications\r\n      subscribe(listener: () => void) {\r\n        // Each wrapped listener will only call the real listener if\r\n        // the `notifying` flag is currently active when it's called.\r\n        // This lets the base store work as normal, while the actual UI\r\n        // update becomes controlled by this enhancer.\r\n        const wrappedListener: typeof listener = () => notifying && listener()\r\n        const unsubscribe = store.subscribe(wrappedListener)\r\n        listeners.add(listener)\r\n        return () => {\r\n          unsubscribe()\r\n          listeners.delete(listener)\r\n        }\r\n      },\r\n      // Override the base `store.dispatch` method so that we can check actions\r\n      // for the `shouldAutoBatch` flag and determine if batching is active\r\n      dispatch(action: any) {\r\n        try {\r\n          // If the action does _not_ have the `shouldAutoBatch` flag,\r\n          // we resume/continue normal notify-after-each-dispatch behavior\r\n          notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n          // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n          // Instead, we set a flag so that it's a no-op when it does run\r\n          shouldNotifyAtEndOfTick = !notifying\r\n          if (shouldNotifyAtEndOfTick) {\r\n            // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n            // a microtask to notify listeners at the end of the event loop tick.\r\n            // Make sure we only enqueue this _once_ per tick.\r\n            if (!notificationQueued) {\r\n              notificationQueued = true\r\n              queueCallback(notifyListeners)\r\n            }\r\n          }\r\n          // Go ahead and process the action as usual, including reducers.\r\n          // If normal notification behavior is enabled, the store will notify\r\n          // all of its own listeners, and the wrapper callbacks above will\r\n          // see `notifying` is true and pass on to the real listener callbacks.\r\n          // If we're \"batching\" behavior, then the wrapped callbacks will\r\n          // bail out, causing the base store notification behavior to be no-ops.\r\n          return store.dispatch(action)\r\n        } finally {\r\n          // Assume we're back to normal behavior after each action\r\n          notifying = true\r\n        }\r\n      },\r\n    })\r\n  }\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n  default as createNextState,\r\n  current,\r\n  freeze,\r\n  original,\r\n  isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n  Selector,\r\n  OutputParametricSelector,\r\n  OutputSelector,\r\n  ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments.  In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n  // js\r\n  configureStore,\r\n} from './configureStore'\r\nexport type {\r\n  // types\r\n  ConfigureEnhancersCallback,\r\n  ConfigureStoreOptions,\r\n  EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n  // js\r\n  createAction,\r\n  getType,\r\n  isAction,\r\n  isFSA as isFluxStandardAction,\r\n} from './createAction'\r\nexport type {\r\n  // types\r\n  PayloadAction,\r\n  PayloadActionCreator,\r\n  ActionCreatorWithNonInferrablePayload,\r\n  ActionCreatorWithOptionalPayload,\r\n  ActionCreatorWithPayload,\r\n  ActionCreatorWithoutPayload,\r\n  ActionCreatorWithPreparedPayload,\r\n  PrepareAction,\r\n} from './createAction'\r\nexport {\r\n  // js\r\n  createReducer,\r\n} from './createReducer'\r\nexport type {\r\n  // types\r\n  Actions,\r\n  CaseReducer,\r\n  CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n  // js\r\n  createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n  // types\r\n  CreateSliceOptions,\r\n  Slice,\r\n  CaseReducerActions,\r\n  SliceCaseReducers,\r\n  ValidateSliceCaseReducers,\r\n  CaseReducerWithPrepare,\r\n  SliceActionCreator,\r\n} from './createSlice'\r\nexport {\r\n  // js\r\n  createImmutableStateInvariantMiddleware,\r\n  isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n  // types\r\n  ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n  // js\r\n  createSerializableStateInvariantMiddleware,\r\n  findNonSerializableValue,\r\n  isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n  // types\r\n  SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n  // js\r\n  getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n  // types\r\n  ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray, EnhancerArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n  Dictionary,\r\n  EntityState,\r\n  EntityAdapter,\r\n  EntitySelectors,\r\n  EntityStateAdapter,\r\n  EntityId,\r\n  Update,\r\n  IdSelector,\r\n  Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n  createAsyncThunk,\r\n  unwrapResult,\r\n  miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n  AsyncThunk,\r\n  AsyncThunkOptions,\r\n  AsyncThunkAction,\r\n  AsyncThunkPayloadCreatorReturnValue,\r\n  AsyncThunkPayloadCreator,\r\n  SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n  // js\r\n  isAllOf,\r\n  isAnyOf,\r\n  isPending,\r\n  isRejected,\r\n  isFulfilled,\r\n  isAsyncThunkAction,\r\n  isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n  // types\r\n  ActionMatchingAllOf,\r\n  ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n  ListenerEffect,\r\n  ListenerMiddleware,\r\n  ListenerEffectAPI,\r\n  ListenerMiddlewareInstance,\r\n  CreateListenerMiddlewareOptions,\r\n  ListenerErrorHandler,\r\n  TypedStartListening,\r\n  TypedAddListener,\r\n  TypedStopListening,\r\n  TypedRemoveListener,\r\n  UnsubscribeListener,\r\n  UnsubscribeListenerOptions,\r\n  ForkedTaskExecutor,\r\n  ForkedTask,\r\n  ForkedTaskAPI,\r\n  AsyncTaskExecutor,\r\n  SyncTaskExecutor,\r\n  TaskCancelled,\r\n  TaskRejected,\r\n  TaskResolved,\r\n  TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n  createListenerMiddleware,\r\n  addListener,\r\n  removeListener,\r\n  clearAllListeners,\r\n  TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n  SHOULD_AUTOBATCH,\r\n  prepareAutoBatched,\r\n  autoBatchEnhancer,\r\n} from './autoBatchEnhancer'\r\nexport type { AutoBatchOptions } from './autoBatchEnhancer'\r\n","/**\n * Copyright (c) 2019 Emilio Almansi. All rights reserved.\n * This work is licensed under the terms of the MIT license.\n * For a copy, see the file LICENSE in the root directory.\n */\n\n/**\n * Error thrown by setIntervalAsync when invalid arguments are provided.\n */\nclass SetIntervalAsyncError extends Error {\n}\n\nObject.defineProperty(\n  SetIntervalAsyncError.prototype,\n  'name',\n  {\n    value: 'SetIntervalAsyncError'\n  }\n)\n\nexport default SetIntervalAsyncError\n","/**\n * Copyright (c) 2019-2021 Emilio Almansi. All rights reserved.\n * This work is licensed under the terms of the MIT license.\n * For a copy, see the file LICENSE in the root directory.\n */\n\nimport SetIntervalAsyncError from './error'\n\nconst MIN_INTERVAL_MS = 10\n\n/**\n * @private\n *\n * @param {function} handler - Handler function to be executed in intervals.<br>\n *                             May be asynchronous.\n */\nexport function validateHandler (handler) {\n  if (!(\n    typeof handler === 'function'\n  )) {\n    throw new SetIntervalAsyncError(\n      'Invalid argument: \"handler\". Expected a function.'\n    )\n  }\n}\n\n/**\n * @private\n *\n * @param {number} interval - Interval in milliseconds. Must be at least 10 ms.\n */\nexport function validateInterval (interval) {\n  if (!(\n    typeof interval === 'number' && MIN_INTERVAL_MS <= interval\n  )) {\n    throw new SetIntervalAsyncError(\n      `Invalid argument: \"interval\". Expected a number greater than or equal to ${MIN_INTERVAL_MS}.`\n    )\n  }\n}\n\n/**\n * @private\n *\n * @param {SetIntervalAsyncTimer} timer\n */\nexport function validateTimer (timer) {\n  if (!(\n    timer &&\n    'stopped' in timer &&\n    'timeouts' in timer &&\n    'promises' in timer\n  )) {\n    throw new SetIntervalAsyncError(\n      'Invalid argument: \"timer\". Expected an instance of SetIntervalAsyncTimer.'\n    )\n  }\n}\n","/**\n * Copyright (c) 2019-2021 Emilio Almansi. All rights reserved.\n * This work is licensed under the terms of the MIT license.\n * For a copy, see the file LICENSE in the root directory.\n */\n\nimport { validateTimer } from './validation'\n\n/**\n * Stops an execution cycle started by setIntervalAsync.<br>\n * Any ongoing function executions will run until completion,\n * but all future ones will be cancelled.\n *\n * @param {SetIntervalAsyncTimer} timer\n * @returns {Promise}\n *          A promise which resolves when all pending executions have finished.\n */\nexport async function clearIntervalAsync (timer) {\n  validateTimer(timer)\n  timer.stopped = true\n  for (const iterationId in timer.timeouts) {\n    clearTimeout(timer.timeouts[iterationId])\n    delete timer.timeouts[iterationId]\n  }\n  for (const iterationId in timer.promises) {\n    try {\n      await timer.promises[iterationId]\n    } catch (_) {\n      // Do nothing.\n    }\n    delete timer.promises[iterationId]\n  }\n}\n","/**\n * Copyright (c) 2019 Emilio Almansi. All rights reserved.\n * This work is licensed under the terms of the MIT license.\n * For a copy, see the file LICENSE in the root directory.\n */\n\n/**\n * Timer object returned by setIntervalAsync.<br>\n * Can be used together with {@link clearIntervalAsync} to stop execution.\n */\nclass SetIntervalAsyncTimer {\n  constructor () {\n    this.stopped = false\n    this.timeouts = {}\n    this.promises = {}\n  }\n}\n\nexport default SetIntervalAsyncTimer\n","/**\n * Copyright (c) 2021 Emilio Almansi. All rights reserved.\n * This work is licensed under the terms of the MIT license.\n * For a copy, see the file LICENSE in the root directory.\n */\n\n/**\n * @private\n *\n * @param {SetIntervalAsyncTimer} timer\n */\nexport function getNextIterationId (iterationId) {\n  if (iterationId === Number.MAX_SAFE_INTEGER) {\n    return 0\n  }\n  return iterationId + 1\n}\n\n/**\n * @private\n */\nexport async function noop () {\n}\n","/**\n * Copyright (c) 2019-2021 Emilio Almansi. All rights reserved.\n * This work is licensed under the terms of the MIT license.\n * For a copy, see the file LICENSE in the root directory.\n */\n\nimport { clearIntervalAsync } from './clear'\nimport SetIntervalAsyncError from './error'\nimport SetIntervalAsyncTimer from './timer'\nimport { getNextIterationId, noop } from './util'\nimport { validateHandler, validateInterval } from './validation'\n\n/**\n * Attempts to execute the given handler at regular intervals, while preventing<br>\n * multiple concurrent executions. The handler will never be executed concurrently<br>\n * more than once in any given moment. If the running time of any execution exceeds<br>\n * the desired interval, the following execution will be scheduled as soon as<br>\n * possible; ie. immediately after the previous execution concludes.\n *\n * @param {function} handler - Handler function to be executed in intervals.<br>\n *                             May be asynchronous.\n * @param {number} interval - Interval in milliseconds. Must be at least 10 ms.\n * @param {...*} args - Any number of arguments to pass on to the handler.\n * @returns {SetIntervalAsyncTimer}\n *          A timer object which can be used to stop execution with {@link clearIntervalAsync}.\n *\n * @alias [Dynamic] setIntervalAsync\n */\nfunction setIntervalAsync (handler, interval, ...args) {\n  validateHandler(handler)\n  validateInterval(interval)\n  const timer = new SetIntervalAsyncTimer()\n  const iterationId = 0\n  timer.timeouts[iterationId] = setTimeout(\n    timeoutHandler,\n    interval,\n    timer,\n    iterationId,\n    handler,\n    interval,\n    ...args\n  )\n  return timer\n}\n\n/**\n * @private\n *\n * @param {SetIntervalAsyncTimer} timer\n * @param {number} iterationId\n * @param {function} handler\n * @param {number} interval\n * @param {...*} args\n */\nfunction timeoutHandler (timer, iterationId, handler, interval, ...args) {\n  delete timer.timeouts[iterationId]\n  timer.promises[iterationId] = runHandler(\n    timer,\n    iterationId,\n    handler,\n    interval,\n    ...args\n  )\n}\n\n/**\n * @private\n *\n * @param {SetIntervalAsyncTimer} timer\n * @param {number} iterationId\n * @param {function} handler\n * @param {number} interval\n * @param {...*} args\n */\nasync function runHandler (timer, iterationId, handler, interval, ...args) {\n  // The next line ensures that timer.promises[iterationId] is set\n  // before running the handler.\n  await noop()\n  const startTime = new Date()\n  try {\n    await handler(...args)\n  } finally {\n    if (!timer.stopped) {\n      const endTime = new Date()\n      const executionTime = endTime - startTime\n      const timeout = interval > executionTime\n        ? interval - executionTime\n        : 0\n      const nextIterationId = getNextIterationId(iterationId)\n      timer.timeouts[nextIterationId] = setTimeout(\n        timeoutHandler,\n        timeout,\n        timer,\n        nextIterationId,\n        handler,\n        interval,\n        ...args\n      )\n    }\n    delete timer.promises[iterationId]\n  }\n}\n\nexport { setIntervalAsync, clearIntervalAsync, SetIntervalAsyncTimer, SetIntervalAsyncError }\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default 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}","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.toastr = exports.reducer = exports[\"default\"] = exports.actions = void 0;\n\nvar _ReduxToastr = _interopRequireDefault(require(\"./ReduxToastr\"));\n\nvar ReduxToastrActions = _interopRequireWildcard(require(\"./actions\"));\n\nvar _reducer = _interopRequireDefault(require(\"./reducer\"));\n\nvar _toastrEmitter = require(\"./toastrEmitter\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _ReduxToastr[\"default\"];\nexports[\"default\"] = _default;\nvar actions = ReduxToastrActions;\nexports.actions = actions;\nvar reducer = _reducer[\"default\"];\nexports.reducer = reducer;\nvar toastr = _toastrEmitter.toastrEmitter;\nexports.toastr = toastr;","/**\n * Utils\n */\nfunction makeGetEdgeOfNeighbor(getPeriod, getEdgeOfPeriod, defaultOffset) {\n    return function makeGetEdgeOfNeighborInternal(date, offset) {\n        if (offset === void 0) { offset = defaultOffset; }\n        var previousPeriod = getPeriod(date) + offset;\n        return getEdgeOfPeriod(previousPeriod);\n    };\n}\nfunction makeGetEnd(getBeginOfNextPeriod) {\n    return function makeGetEndInternal(date) {\n        return new Date(getBeginOfNextPeriod(date).getTime() - 1);\n    };\n}\nfunction makeGetRange(getStart, getEnd) {\n    return function makeGetRangeInternal(date) {\n        return [getStart(date), getEnd(date)];\n    };\n}\n/**\n * Simple getters - getting a property of a given point in time\n */\n/**\n * Gets year from a given date.\n *\n * @param {DateLike} date Date to get year from\n * @returns {number} Year\n */\nexport function getYear(date) {\n    if (date instanceof Date) {\n        return date.getFullYear();\n    }\n    if (typeof date === 'number') {\n        return date;\n    }\n    var year = parseInt(date, 10);\n    if (typeof date === 'string' && !isNaN(year)) {\n        return year;\n    }\n    throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n/**\n * Gets month from a given date.\n *\n * @param {Date} date Date to get month from\n * @returns {number} Month\n */\nexport function getMonth(date) {\n    if (date instanceof Date) {\n        return date.getMonth();\n    }\n    throw new Error(\"Failed to get month from date: \".concat(date, \".\"));\n}\n/**\n * Gets human-readable month from a given date.\n *\n * @param {Date} date Date to get human-readable month from\n * @returns {number} Human-readable month\n */\nexport function getMonthHuman(date) {\n    if (date instanceof Date) {\n        return date.getMonth() + 1;\n    }\n    throw new Error(\"Failed to get human-readable month from date: \".concat(date, \".\"));\n}\n/**\n * Gets day of the month from a given date.\n *\n * @param {Date} date Date to get day of the month from\n * @returns {number} Day of the month\n */\nexport function getDate(date) {\n    if (date instanceof Date) {\n        return date.getDate();\n    }\n    throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n/**\n * Gets hours from a given date.\n *\n * @param {Date | string} date Date to get hours from\n * @returns {number} Hours\n */\nexport function getHours(date) {\n    if (date instanceof Date) {\n        return date.getHours();\n    }\n    if (typeof date === 'string') {\n        var datePieces = date.split(':');\n        if (datePieces.length >= 2) {\n            var hoursString = datePieces[0];\n            if (hoursString) {\n                var hours = parseInt(hoursString, 10);\n                if (!isNaN(hours)) {\n                    return hours;\n                }\n            }\n        }\n    }\n    throw new Error(\"Failed to get hours from date: \".concat(date, \".\"));\n}\n/**\n * Gets minutes from a given date.\n *\n * @param {Date | string} date Date to get minutes from\n * @returns {number} Minutes\n */\nexport function getMinutes(date) {\n    if (date instanceof Date) {\n        return date.getMinutes();\n    }\n    if (typeof date === 'string') {\n        var datePieces = date.split(':');\n        if (datePieces.length >= 2) {\n            var minutesString = datePieces[1] || '0';\n            var minutes = parseInt(minutesString, 10);\n            if (!isNaN(minutes)) {\n                return minutes;\n            }\n        }\n    }\n    throw new Error(\"Failed to get minutes from date: \".concat(date, \".\"));\n}\n/**\n * Gets seconds from a given date.\n *\n * @param {Date | string} date Date to get seconds from\n * @returns {number} Seconds\n */\nexport function getSeconds(date) {\n    if (date instanceof Date) {\n        return date.getSeconds();\n    }\n    if (typeof date === 'string') {\n        var datePieces = date.split(':');\n        if (datePieces.length >= 2) {\n            var secondsWithMillisecondsString = datePieces[2] || '0';\n            var seconds = parseInt(secondsWithMillisecondsString, 10);\n            if (!isNaN(seconds)) {\n                return seconds;\n            }\n        }\n    }\n    throw new Error(\"Failed to get seconds from date: \".concat(date, \".\"));\n}\n/**\n * Gets milliseconds from a given date.\n *\n * @param {Date | string} date Date to get milliseconds from\n * @returns {number} Milliseconds\n */\nexport function getMilliseconds(date) {\n    if (date instanceof Date) {\n        return date.getMilliseconds();\n    }\n    if (typeof date === 'string') {\n        var datePieces = date.split(':');\n        if (datePieces.length >= 2) {\n            var secondsWithMillisecondsString = datePieces[2] || '0';\n            var millisecondsString = secondsWithMillisecondsString.split('.')[1] || '0';\n            var milliseconds = parseInt(millisecondsString, 10);\n            if (!isNaN(milliseconds)) {\n                return milliseconds;\n            }\n        }\n    }\n    throw new Error(\"Failed to get seconds from date: \".concat(date, \".\"));\n}\n/**\n * Century\n */\n/**\n * Gets century start date from a given date.\n *\n * @param {DateLike} date Date to get century start from\n * @returns {Date} Century start date\n */\nexport function getCenturyStart(date) {\n    var year = getYear(date);\n    var centuryStartYear = year + ((-year + 1) % 100);\n    var centuryStartDate = new Date();\n    centuryStartDate.setFullYear(centuryStartYear, 0, 1);\n    centuryStartDate.setHours(0, 0, 0, 0);\n    return centuryStartDate;\n}\n/**\n * Gets previous century start date from a given date.\n *\n * @param {DateLike} date Date to get previous century start from\n * @returns {Date} Previous century start date\n */\nexport var getPreviousCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, -100);\n/**\n * Gets next century start date from a given date.\n *\n * @param {DateLike} date Date to get next century start from\n * @returns {Date} Next century start date\n */\nexport var getNextCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, 100);\n/**\n * Gets century end date from a given date.\n *\n * @param {DateLike} date Date to get century end from\n * @returns {Date} Century end date\n */\nexport var getCenturyEnd = makeGetEnd(getNextCenturyStart);\n/**\n * Gets previous century end date from a given date.\n *\n * @param {DateLike} date Date to get previous century end from\n * @returns {Date} Previous century end date\n */\nexport var getPreviousCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, -100);\n/**\n * Gets next century end date from a given date.\n *\n * @param {DateLike} date Date to get next century end from\n * @returns {Date} Next century end date\n */\nexport var getNextCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, 100);\n/**\n * Gets century start and end dates from a given date.\n *\n * @param {DateLike} date Date to get century start and end from\n * @returns {[Date, Date]} Century start and end dates\n */\nexport var getCenturyRange = makeGetRange(getCenturyStart, getCenturyEnd);\n/**\n * Decade\n */\n/**\n * Gets decade start date from a given date.\n *\n * @param {DateLike} date Date to get decade start from\n * @returns {Date} Decade start date\n */\nexport function getDecadeStart(date) {\n    var year = getYear(date);\n    var decadeStartYear = year + ((-year + 1) % 10);\n    var decadeStartDate = new Date();\n    decadeStartDate.setFullYear(decadeStartYear, 0, 1);\n    decadeStartDate.setHours(0, 0, 0, 0);\n    return decadeStartDate;\n}\n/**\n * Gets previous decade start date from a given date.\n *\n * @param {DateLike} date Date to get previous decade start from\n * @returns {Date} Previous decade start date\n */\nexport var getPreviousDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, -10);\n/**\n * Gets next decade start date from a given date.\n *\n * @param {DateLike} date Date to get next decade start from\n * @returns {Date} Next decade start date\n */\nexport var getNextDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, 10);\n/**\n * Gets decade end date from a given date.\n *\n * @param {DateLike} date Date to get decade end from\n * @returns {Date} Decade end date\n */\nexport var getDecadeEnd = makeGetEnd(getNextDecadeStart);\n/**\n * Gets previous decade end date from a given date.\n *\n * @param {DateLike} date Date to get previous decade end from\n * @returns {Date} Previous decade end date\n */\nexport var getPreviousDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, -10);\n/**\n * Gets next decade end date from a given date.\n *\n * @param {DateLike} date Date to get next decade end from\n * @returns {Date} Next decade end date\n */\nexport var getNextDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, 10);\n/**\n * Gets decade start and end dates from a given date.\n *\n * @param {DateLike} date Date to get decade start and end from\n * @returns {[Date, Date]} Decade start and end dates\n */\nexport var getDecadeRange = makeGetRange(getDecadeStart, getDecadeEnd);\n/**\n * Year\n */\n/**\n * Gets year start date from a given date.\n *\n * @param {DateLike} date Date to get year start from\n * @returns {Date} Year start date\n */\nexport function getYearStart(date) {\n    var year = getYear(date);\n    var yearStartDate = new Date();\n    yearStartDate.setFullYear(year, 0, 1);\n    yearStartDate.setHours(0, 0, 0, 0);\n    return yearStartDate;\n}\n/**\n * Gets previous year start date from a given date.\n *\n * @param {DateLike} date Date to get previous year start from\n * @returns {Date} Previous year start date\n */\nexport var getPreviousYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, -1);\n/**\n * Gets next year start date from a given date.\n *\n * @param {DateLike} date Date to get next year start from\n * @returns {Date} Next year start date\n */\nexport var getNextYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, 1);\n/**\n * Gets year end date from a given date.\n *\n * @param {DateLike} date Date to get year end from\n * @returns {Date} Year end date\n */\nexport var getYearEnd = makeGetEnd(getNextYearStart);\n/**\n * Gets previous year end date from a given date.\n *\n * @param {DateLike} date Date to get previous year end from\n * @returns {Date} Previous year end date\n */\nexport var getPreviousYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, -1);\n/**\n * Gets next year end date from a given date.\n *\n * @param {DateLike} date Date to get next year end from\n * @returns {Date} Next year end date\n */\nexport var getNextYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, 1);\n/**\n * Gets year start and end dates from a given date.\n *\n * @param {DateLike} date Date to get year start and end from\n * @returns {[Date, Date]} Year start and end dates\n */\nexport var getYearRange = makeGetRange(getYearStart, getYearEnd);\n/**\n * Month\n */\nfunction makeGetEdgeOfNeighborMonth(getEdgeOfPeriod, defaultOffset) {\n    return function makeGetEdgeOfNeighborMonthInternal(date, offset) {\n        if (offset === void 0) { offset = defaultOffset; }\n        var year = getYear(date);\n        var month = getMonth(date) + offset;\n        var previousPeriod = new Date();\n        previousPeriod.setFullYear(year, month, 1);\n        previousPeriod.setHours(0, 0, 0, 0);\n        return getEdgeOfPeriod(previousPeriod);\n    };\n}\n/**\n * Gets month start date from a given date.\n *\n * @param {DateLike} date Date to get month start from\n * @returns {Date} Month start date\n */\nexport function getMonthStart(date) {\n    var year = getYear(date);\n    var month = getMonth(date);\n    var monthStartDate = new Date();\n    monthStartDate.setFullYear(year, month, 1);\n    monthStartDate.setHours(0, 0, 0, 0);\n    return monthStartDate;\n}\n/**\n * Gets previous month start date from a given date.\n *\n * @param {DateLike} date Date to get previous month start from\n * @returns {Date} Previous month start date\n */\nexport var getPreviousMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, -1);\n/**\n * Gets next month start date from a given date.\n *\n * @param {DateLike} date Date to get next month start from\n * @returns {Date} Next month start date\n */\nexport var getNextMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, 1);\n/**\n * Gets month end date from a given date.\n *\n * @param {DateLike} date Date to get month end from\n * @returns {Date} Month end date\n */\nexport var getMonthEnd = makeGetEnd(getNextMonthStart);\n/**\n * Gets previous month end date from a given date.\n *\n * @param {DateLike} date Date to get previous month end from\n * @returns {Date} Previous month end date\n */\nexport var getPreviousMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, -1);\n/**\n * Gets next month end date from a given date.\n *\n * @param {DateLike} date Date to get next month end from\n * @returns {Date} Next month end date\n */\nexport var getNextMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, 1);\n/**\n * Gets month start and end dates from a given date.\n *\n * @param {DateLike} date Date to get month start and end from\n * @returns {[Date, Date]} Month start and end dates\n */\nexport var getMonthRange = makeGetRange(getMonthStart, getMonthEnd);\n/**\n * Day\n */\nfunction makeGetEdgeOfNeighborDay(getEdgeOfPeriod, defaultOffset) {\n    return function makeGetEdgeOfNeighborDayInternal(date, offset) {\n        if (offset === void 0) { offset = defaultOffset; }\n        var year = getYear(date);\n        var month = getMonth(date);\n        var day = getDate(date) + offset;\n        var previousPeriod = new Date();\n        previousPeriod.setFullYear(year, month, day);\n        previousPeriod.setHours(0, 0, 0, 0);\n        return getEdgeOfPeriod(previousPeriod);\n    };\n}\n/**\n * Gets day start date from a given date.\n *\n * @param {DateLike} date Date to get day start from\n * @returns {Date} Day start date\n */\nexport function getDayStart(date) {\n    var year = getYear(date);\n    var month = getMonth(date);\n    var day = getDate(date);\n    var dayStartDate = new Date();\n    dayStartDate.setFullYear(year, month, day);\n    dayStartDate.setHours(0, 0, 0, 0);\n    return dayStartDate;\n}\n/**\n * Gets previous day start date from a given date.\n *\n * @param {DateLike} date Date to get previous day start from\n * @returns {Date} Previous day start date\n */\nexport var getPreviousDayStart = makeGetEdgeOfNeighborDay(getDayStart, -1);\n/**\n * Gets next day start date from a given date.\n *\n * @param {DateLike} date Date to get next day start from\n * @returns {Date} Next day start date\n */\nexport var getNextDayStart = makeGetEdgeOfNeighborDay(getDayStart, 1);\n/**\n * Gets day end date from a given date.\n *\n * @param {DateLike} date Date to get day end from\n * @returns {Date} Day end date\n */\nexport var getDayEnd = makeGetEnd(getNextDayStart);\n/**\n * Gets previous day end date from a given date.\n *\n * @param {DateLike} date Date to get previous day end from\n * @returns {Date} Previous day end date\n */\nexport var getPreviousDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, -1);\n/**\n * Gets next day end date from a given date.\n *\n * @param {DateLike} date Date to get next day end from\n * @returns {Date} Next day end date\n */\nexport var getNextDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, 1);\n/**\n * Gets day start and end dates from a given date.\n *\n * @param {DateLike} date Date to get day start and end from\n * @returns {[Date, Date]} Day start and end dates\n */\nexport var getDayRange = makeGetRange(getDayStart, getDayEnd);\n/**\n * Other\n */\n/**\n * Returns a number of days in a month of a given date.\n *\n * @param {Date} date Date\n * @returns {number} Number of days in a month\n */\nexport function getDaysInMonth(date) {\n    return getDate(getMonthEnd(date));\n}\nfunction padStart(num, val) {\n    if (val === void 0) { val = 2; }\n    var numStr = \"\".concat(num);\n    if (numStr.length >= val) {\n        return num;\n    }\n    return \"0000\".concat(numStr).slice(-val);\n}\n/**\n * Returns local hours and minutes (hh:mm).\n *\n * @param {Date | string} date Date to get hours and minutes from\n * @returns {string} Local hours and minutes\n */\nexport function getHoursMinutes(date) {\n    var hours = padStart(getHours(date));\n    var minutes = padStart(getMinutes(date));\n    return \"\".concat(hours, \":\").concat(minutes);\n}\n/**\n * Returns local hours, minutes and seconds (hh:mm:ss).\n *\n * @param {Date | string} date Date to get hours, minutes and seconds from\n * @returns {string} Local hours, minutes and seconds\n */\nexport function getHoursMinutesSeconds(date) {\n    var hours = padStart(getHours(date));\n    var minutes = padStart(getMinutes(date));\n    var seconds = padStart(getSeconds(date));\n    return \"\".concat(hours, \":\").concat(minutes, \":\").concat(seconds);\n}\n/**\n * Returns local month in ISO-like format (YYYY-MM).\n *\n * @param {Date} date Date to get month in ISO-like format from\n * @returns {string} Local month in ISO-like format\n */\nexport function getISOLocalMonth(date) {\n    var year = padStart(getYear(date), 4);\n    var month = padStart(getMonthHuman(date));\n    return \"\".concat(year, \"-\").concat(month);\n}\n/**\n * Returns local date in ISO-like format (YYYY-MM-DD).\n *\n * @param {Date} date Date to get date in ISO-like format from\n * @returns {string} Local date in ISO-like format\n */\nexport function getISOLocalDate(date) {\n    var year = padStart(getYear(date), 4);\n    var month = padStart(getMonthHuman(date));\n    var day = padStart(getDate(date));\n    return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}\n/**\n * Returns local date & time in ISO-like format (YYYY-MM-DDThh:mm:ss).\n *\n * @param {Date} date Date to get date & time in ISO-like format from\n * @returns {string} Local date & time in ISO-like format\n */\nexport function getISOLocalDateTime(date) {\n    return \"\".concat(getISOLocalDate(date), \"T\").concat(getHoursMinutesSeconds(date));\n}\n","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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","/******************************************************************************\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, SuppressedError, Symbol */\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 __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i >= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.unshift(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.unshift(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length > 2;\r\n    for (var i = 0; i < initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\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 (g && (g = 0, op[0] && (_ = 0)), _) 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    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\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, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\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: false } : 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, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n    if (value !== null && value !== void 0) {\r\n        if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n        var dispose;\r\n        if (async) {\r\n            if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n            dispose = value[Symbol.asyncDispose];\r\n        }\r\n        if (dispose === void 0) {\r\n            if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n            dispose = value[Symbol.dispose];\r\n        }\r\n        if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n        env.stack.push({ value: value, dispose: dispose, async: async });\r\n    }\r\n    else if (async) {\r\n        env.stack.push({ async: true });\r\n    }\r\n    return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n    function fail(e) {\r\n        env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n        env.hasError = true;\r\n    }\r\n    function next() {\r\n        while (env.stack.length) {\r\n            var rec = env.stack.pop();\r\n            try {\r\n                var result = rec.dispose && rec.dispose.call(rec.value);\r\n                if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n            }\r\n            catch (e) {\r\n                fail(e);\r\n            }\r\n        }\r\n        if (env.hasError) throw env.error;\r\n    }\r\n    return next();\r\n}\r\n\r\nexport default {\r\n    __extends: __extends,\r\n    __assign: __assign,\r\n    __rest: __rest,\r\n    __decorate: __decorate,\r\n    __param: __param,\r\n    __metadata: __metadata,\r\n    __awaiter: __awaiter,\r\n    __generator: __generator,\r\n    __createBinding: __createBinding,\r\n    __exportStar: __exportStar,\r\n    __values: __values,\r\n    __read: __read,\r\n    __spread: __spread,\r\n    __spreadArrays: __spreadArrays,\r\n    __spreadArray: __spreadArray,\r\n    __await: __await,\r\n    __asyncGenerator: __asyncGenerator,\r\n    __asyncDelegator: __asyncDelegator,\r\n    __asyncValues: __asyncValues,\r\n    __makeTemplateObject: __makeTemplateObject,\r\n    __importStar: __importStar,\r\n    __importDefault: __importDefault,\r\n    __classPrivateFieldGet: __classPrivateFieldGet,\r\n    __classPrivateFieldSet: __classPrivateFieldSet,\r\n    __classPrivateFieldIn: __classPrivateFieldIn,\r\n    __addDisposableResource: __addDisposableResource,\r\n    __disposeResources: __disposeResources,\r\n};\r\n","module.exports = require('./lib/axios');","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions  */\nexport interface InternalGlobal {\n  navigator?: { userAgent?: string };\n  console: Console;\n  Sentry?: {\n    Integrations?: Integration[];\n  };\n  onerror?: {\n    (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  onunhandledrejection?: {\n    (event: unknown): boolean;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  SENTRY_ENVIRONMENT?: string;\n  SENTRY_DSN?: string;\n  SENTRY_RELEASE?: {\n    id?: string;\n  };\n  SENTRY_SDK_SOURCE?: SdkSource;\n  /**\n   * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n   * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n   * file.\n   */\n  _sentryDebugIds?: Record<string, string>;\n  __SENTRY__: {\n    globalEventProcessors: any;\n    hub: any;\n    logger: any;\n    extensions?: {\n      /** Extension methods for the hub, which are bound to the current Hub instance */\n      // eslint-disable-next-line @typescript-eslint/ban-types\n      [key: string]: Function;\n    };\n  };\n  /**\n   * Raw module metadata that is injected by bundler plugins.\n   *\n   * Keys are `error.stack` strings, values are the metadata.\n   */\n  _sentryModuleMetadata?: Record<string, any>;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n  return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n  (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n  // eslint-disable-next-line no-restricted-globals\n  (typeof window == 'object' && isGlobalObj(window)) ||\n  (typeof self == 'object' && isGlobalObj(self)) ||\n  (typeof global == 'object' && isGlobalObj(global)) ||\n  (function (this: any) {\n    return this;\n  })() ||\n  {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject<T>(): T & InternalGlobal {\n  return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n  const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n  const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n  const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n  return singleton;\n}\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n  if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n    if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n      var i = 0;\n\n      var F = function F() {};\n\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var it,\n      normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function s() {\n      it = o[Symbol.iterator]();\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","import{__spreadArray}from\"tslib\";import{r as raf}from\"./helpers-1457892a.js\";var animationPrefix;var processKeyframes=function(e){e.forEach((function(e){for(var n in e){if(e.hasOwnProperty(n)){var r=e[n];if(n===\"easing\"){var t=\"animation-timing-function\";e[t]=r;delete e[n]}else{var t=convertCamelCaseToHypen(n);if(t!==n){e[t]=r;delete e[n]}}}}}));return e};var convertCamelCaseToHypen=function(e){return e.replace(/([a-z0-9])([A-Z])/g,\"$1-$2\").toLowerCase()};var getAnimationPrefix=function(e){if(animationPrefix===undefined){var n=e.style.animationName!==undefined;var r=e.style.webkitAnimationName!==undefined;animationPrefix=!n&&r?\"-webkit-\":\"\"}return animationPrefix};var setStyleProperty=function(e,n,r){var t=n.startsWith(\"animation\")?getAnimationPrefix(e):\"\";e.style.setProperty(t+n,r)};var removeStyleProperty=function(e,n){var r=n.startsWith(\"animation\")?getAnimationPrefix(e):\"\";e.style.removeProperty(r+n)};var animationEnd=function(e,n){var r;var t={passive:true};var a=function(){if(r){r()}};var i=function(r){if(e===r.target){a();n(r)}};if(e){e.addEventListener(\"webkitAnimationEnd\",i,t);e.addEventListener(\"animationend\",i,t);r=function(){e.removeEventListener(\"webkitAnimationEnd\",i,t);e.removeEventListener(\"animationend\",i,t)}}return a};var generateKeyframeRules=function(e){if(e===void 0){e=[]}return e.map((function(e){var n=e.offset;var r=[];for(var t in e){if(e.hasOwnProperty(t)&&t!==\"offset\"){r.push(t+\": \"+e[t]+\";\")}}return n*100+\"% { \"+r.join(\" \")+\" }\"})).join(\" \")};var keyframeIds=[];var generateKeyframeName=function(e){var n=keyframeIds.indexOf(e);if(n<0){n=keyframeIds.push(e)-1}return\"ion-animation-\"+n};var getStyleContainer=function(e){var n=e.getRootNode();return n.head||n};var createKeyframeStylesheet=function(e,n,r){var t=getStyleContainer(r);var a=getAnimationPrefix(r);var i=t.querySelector(\"#\"+e);if(i){return i}var o=(r.ownerDocument||document).createElement(\"style\");o.id=e;o.textContent=\"@\"+a+\"keyframes \"+e+\" { \"+n+\" } @\"+a+\"keyframes \"+e+\"-alt { \"+n+\" }\";t.appendChild(o);return o};var addClassToArray=function(e,n){if(e===void 0){e=[]}if(n!==undefined){var r=Array.isArray(n)?n:[n];return __spreadArray(__spreadArray([],e),r)}return e};var createAnimation=function(e){var n;var r;var t;var a;var i;var o;var f=[];var u=[];var s=[];var v=false;var l;var c={};var d=[];var y=[];var m={};var p=0;var h=false;var g=false;var E;var P;var S;var A;var C=true;var T=false;var b=true;var k;var w;var x=e;var _=[];var K=[];var I=[];var D=[];var L=[];var N=[];var R=[];var F=[];var O=[];var W=[];var j=typeof AnimationEffect===\"function\"||typeof window.AnimationEffect===\"function\";var H=typeof Element===\"function\"&&typeof Element.prototype.animate===\"function\"&&j;var M=100;var $=function(){return W};var q=function(e){D.forEach((function(n){n.destroy(e)}));z(e);I.length=0;D.length=0;f.length=0;G();v=false;b=true;return w};var z=function(e){J();if(e){Q()}};var Z=function(){h=false;g=false;b=true;P=undefined;S=undefined;A=undefined;p=0;T=false;C=true};var B=function(e,n){var r=n&&n.oneTimeCallback?K:_;r.push({c:e,o:n});return w};var G=function(){_.length=0;K.length=0;return w};var J=function(){if(H){W.forEach((function(e){e.cancel()}));W.length=0}else{var e=I.slice();raf((function(){e.forEach((function(e){removeStyleProperty(e,\"animation-name\");removeStyleProperty(e,\"animation-duration\");removeStyleProperty(e,\"animation-timing-function\");removeStyleProperty(e,\"animation-iteration-count\");removeStyleProperty(e,\"animation-delay\");removeStyleProperty(e,\"animation-play-state\");removeStyleProperty(e,\"animation-fill-mode\");removeStyleProperty(e,\"animation-direction\")}))}))}};var Q=function(){L.forEach((function(e){if(e&&e.parentNode){e.parentNode.removeChild(e)}}));L.length=0};var U=function(e){N.push(e);return w};var V=function(e){R.push(e);return w};var X=function(e){F.push(e);return w};var Y=function(e){O.push(e);return w};var ee=function(e){u=addClassToArray(u,e);return w};var ne=function(e){s=addClassToArray(s,e);return w};var re=function(e){if(e===void 0){e={}}c=e;return w};var te=function(e){if(e===void 0){e=[]}for(var n=0,r=e;n<r.length;n++){var t=r[n];c[t]=\"\"}return w};var ae=function(e){d=addClassToArray(d,e);return w};var ie=function(e){y=addClassToArray(y,e);return w};var oe=function(e){if(e===void 0){e={}}m=e;return w};var fe=function(e){if(e===void 0){e=[]}for(var n=0,r=e;n<r.length;n++){var t=r[n];m[t]=\"\"}return w};var ue=function(){if(i!==undefined){return i}if(l){return l.getFill()}return\"both\"};var se=function(){if(P!==undefined){return P}if(o!==undefined){return o}if(l){return l.getDirection()}return\"normal\"};var ve=function(){if(h){return\"linear\"}if(t!==undefined){return t}if(l){return l.getEasing()}return\"linear\"};var le=function(){if(g){return 0}if(S!==undefined){return S}if(r!==undefined){return r}if(l){return l.getDuration()}return 0};var ce=function(){if(a!==undefined){return a}if(l){return l.getIterations()}return 1};var de=function(){if(A!==undefined){return A}if(n!==undefined){return n}if(l){return l.getDelay()}return 0};var ye=function(){return f};var me=function(e){o=e;Ne(true);return w};var pe=function(e){i=e;Ne(true);return w};var he=function(e){n=e;Ne(true);return w};var ge=function(e){t=e;Ne(true);return w};var Ee=function(e){if(!H&&e===0){e=1}r=e;Ne(true);return w};var Pe=function(e){a=e;Ne(true);return w};var Se=function(e){l=e;return w};var Ae=function(e){if(e!=null){if(e.nodeType===1){I.push(e)}else if(e.length>=0){for(var n=0;n<e.length;n++){I.push(e[n])}}else{console.error(\"Invalid addElement value\")}}return w};var Ce=function(e){if(e!=null){if(Array.isArray(e)){for(var n=0,r=e;n<r.length;n++){var t=r[n];t.parent(w);D.push(t)}}else{e.parent(w);D.push(e)}}return w};var Te=function(e){f=e;return w};var be=function(){N.forEach((function(e){return e()}));R.forEach((function(e){return e()}));var e=u;var n=s;var r=c;I.forEach((function(t){var a=t.classList;e.forEach((function(e){return a.add(e)}));n.forEach((function(e){return a.remove(e)}));for(var i in r){if(r.hasOwnProperty(i)){setStyleProperty(t,i,r[i])}}}))};var ke=function(){Me();F.forEach((function(e){return e()}));O.forEach((function(e){return e()}));var e=C?1:0;var n=d;var r=y;var t=m;I.forEach((function(e){var a=e.classList;n.forEach((function(e){return a.add(e)}));r.forEach((function(e){return a.remove(e)}));for(var i in t){if(t.hasOwnProperty(i)){setStyleProperty(e,i,t[i])}}}));_.forEach((function(n){return n.c(e,w)}));K.forEach((function(n){return n.c(e,w)}));K.length=0;b=true;if(C){T=true}C=true};var we=function(){if(p===0){return}p--;if(p===0){ke();if(l){l.animationFinish()}}};var xe=function(n){if(n===void 0){n=true}Q();var r=processKeyframes(f);I.forEach((function(t){if(r.length>0){var a=generateKeyframeRules(r);k=e!==undefined?e:generateKeyframeName(a);var i=createKeyframeStylesheet(k,a,t);L.push(i);setStyleProperty(t,\"animation-duration\",le()+\"ms\");setStyleProperty(t,\"animation-timing-function\",ve());setStyleProperty(t,\"animation-delay\",de()+\"ms\");setStyleProperty(t,\"animation-fill-mode\",ue());setStyleProperty(t,\"animation-direction\",se());var o=ce()===Infinity?\"infinite\":ce().toString();setStyleProperty(t,\"animation-iteration-count\",o);setStyleProperty(t,\"animation-play-state\",\"paused\");if(n){setStyleProperty(t,\"animation-name\",i.id+\"-alt\")}raf((function(){setStyleProperty(t,\"animation-name\",i.id||null)}))}}))};var _e=function(){I.forEach((function(e){var n=e.animate(f,{id:x,delay:de(),duration:le(),easing:ve(),iterations:ce(),fill:ue(),direction:se()});n.pause();W.push(n)}));if(W.length>0){W[0].onfinish=function(){we()}}};var Ke=function(e){if(e===void 0){e=true}be();if(f.length>0){if(H){_e()}else{xe(e)}}v=true};var Ie=function(e){e=Math.min(Math.max(e,0),.9999);if(H){W.forEach((function(n){n.currentTime=n.effect.getComputedTiming().delay+le()*e;n.pause()}))}else{var n=\"-\"+le()*e+\"ms\";I.forEach((function(e){if(f.length>0){setStyleProperty(e,\"animation-delay\",n);setStyleProperty(e,\"animation-play-state\",\"paused\")}}))}};var De=function(e){W.forEach((function(e){e.effect.updateTiming({delay:de(),duration:le(),easing:ve(),iterations:ce(),fill:ue(),direction:se()})}));if(e!==undefined){Ie(e)}};var Le=function(e,n){if(e===void 0){e=true}raf((function(){I.forEach((function(r){setStyleProperty(r,\"animation-name\",k||null);setStyleProperty(r,\"animation-duration\",le()+\"ms\");setStyleProperty(r,\"animation-timing-function\",ve());setStyleProperty(r,\"animation-delay\",n!==undefined?\"-\"+n*le()+\"ms\":de()+\"ms\");setStyleProperty(r,\"animation-fill-mode\",ue()||null);setStyleProperty(r,\"animation-direction\",se()||null);var t=ce()===Infinity?\"infinite\":ce().toString();setStyleProperty(r,\"animation-iteration-count\",t);if(e){setStyleProperty(r,\"animation-name\",k+\"-alt\")}raf((function(){setStyleProperty(r,\"animation-name\",k||null)}))}))}))};var Ne=function(e,n,r){if(e===void 0){e=false}if(n===void 0){n=true}if(e){D.forEach((function(t){t.update(e,n,r)}))}if(H){De(r)}else{Le(n,r)}return w};var Re=function(e,n){if(e===void 0){e=false}D.forEach((function(r){r.progressStart(e,n)}));We();h=e;if(!v){Ke()}else{Ne(false,true,n)}return w};var Fe=function(e){D.forEach((function(n){n.progressStep(e)}));Ie(e);return w};var Oe=function(e,n,r){h=false;D.forEach((function(t){t.progressEnd(e,n,r)}));if(r!==undefined){S=r}T=false;C=true;if(e===0){P=se()===\"reverse\"?\"normal\":\"reverse\";if(P===\"reverse\"){C=false}if(H){Ne();Ie(1-n)}else{A=(1-n)*le()*-1;Ne(false,false)}}else if(e===1){if(H){Ne();Ie(n)}else{A=n*le()*-1;Ne(false,false)}}if(e!==undefined){B((function(){S=undefined;P=undefined;A=undefined}),{oneTimeCallback:true});if(!l){Be()}}return w};var We=function(){if(v){if(H){W.forEach((function(e){e.pause()}))}else{I.forEach((function(e){setStyleProperty(e,\"animation-play-state\",\"paused\")}))}}};var je=function(){D.forEach((function(e){e.pause()}));We();return w};var He=function(){E=undefined;we()};var Me=function(){if(E){clearTimeout(E)}};var $e=function(){Me();raf((function(){I.forEach((function(e){if(f.length>0){setStyleProperty(e,\"animation-play-state\",\"running\")}}))}));if(f.length===0||I.length===0){we()}else{var e=de()||0;var n=le()||0;var r=ce()||1;if(isFinite(r)){E=setTimeout(He,e+n*r+M)}animationEnd(I[0],(function(){Me();raf((function(){qe();raf(we)}))}))}};var qe=function(){I.forEach((function(e){removeStyleProperty(e,\"animation-duration\");removeStyleProperty(e,\"animation-delay\");removeStyleProperty(e,\"animation-play-state\")}))};var ze=function(){W.forEach((function(e){e.play()}));if(f.length===0||I.length===0){we()}};var Ze=function(){if(H){Ie(0);De()}else{Le()}};var Be=function(e){return new Promise((function(n){if(e&&e.sync){g=true;B((function(){return g=false}),{oneTimeCallback:true})}if(!v){Ke()}if(T){Ze();T=false}if(b){p=D.length+1;b=false}B((function(){return n()}),{oneTimeCallback:true});D.forEach((function(e){e.play()}));if(H){ze()}else{$e()}}))};var Ge=function(){D.forEach((function(e){e.stop()}));if(v){J();v=false}Z()};var Je=function(e,n){var r;var t=f[0];if(t!==undefined&&(t.offset===undefined||t.offset===0)){t[e]=n}else{f=__spreadArray([(r={offset:0},r[e]=n,r)],f)}return w};var Qe=function(e,n){var r;var t=f[f.length-1];if(t!==undefined&&(t.offset===undefined||t.offset===1)){t[e]=n}else{f=__spreadArray(__spreadArray([],f),[(r={offset:1},r[e]=n,r)])}return w};var Ue=function(e,n,r){return Je(e,n).to(e,r)};return w={parentAnimation:l,elements:I,childAnimations:D,id:x,animationFinish:we,from:Je,to:Qe,fromTo:Ue,parent:Se,play:Be,pause:je,stop:Ge,destroy:q,keyframes:Te,addAnimation:Ce,addElement:Ae,update:Ne,fill:pe,direction:me,iterations:Pe,duration:Ee,easing:ge,delay:he,getWebAnimations:$,getKeyframes:ye,getFill:ue,getDirection:se,getDelay:de,getIterations:ce,getEasing:ve,getDuration:le,afterAddRead:X,afterAddWrite:Y,afterClearStyles:fe,afterStyles:oe,afterRemoveClass:ie,afterAddClass:ae,beforeAddRead:U,beforeAddWrite:V,beforeClearStyles:te,beforeStyles:re,beforeRemoveClass:ne,beforeAddClass:ee,onFinish:B,progressStart:Re,progressStep:Fe,progressEnd:Oe}};export{createAnimation as c};","export default 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}","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","export * from './esm-es5/index.js';","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _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}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n  return function () {\n    var Super = getPrototypeOf(Derived),\n        result;\n\n    if (isNativeReflectConstruct()) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return possibleConstructorReturn(this, result);\n  };\n}","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport { Options, Transaction } from '@sentry/types';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(maybeOptions?: Options | undefined): boolean {\n  const client = getCurrentHub().getClient();\n  const options = maybeOptions || (client && client.getOptions());\n  return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction<T extends Transaction>(maybeHub?: Hub): T | undefined {\n  const hub = maybeHub || getCurrentHub();\n  const scope = hub.getScope();\n  return scope && (scope.getTransaction() as T | undefined);\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n  return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n  return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","export default 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}","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n  switch (objectToString.call(wat)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n  return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n  return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n  return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record<string, unknown> {\n  return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): boolean {\n  return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n  return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n  return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike<any> {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n  return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n  return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n  try {\n    return wat instanceof base;\n  } catch (_e) {\n    return false;\n  }\n}\n","import { WrappedFunction } from '@sentry/types';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject, getGlobalSingleton } from './global';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject<Window | NodeJS.Global>();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert'] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<typeof CONSOLE_LEVELS[number], LoggerMethod>;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n  disable(): void;\n  enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n  const global = getGlobalObject<Window>();\n\n  if (!('console' in global)) {\n    return callback();\n  }\n\n  const originalConsole = global.console as Console & Record<string, unknown>;\n  const wrappedLevels: Partial<LoggerConsoleMethods> = {};\n\n  // Restore all wrapped console methods\n  CONSOLE_LEVELS.forEach(level => {\n    // TODO(v7): Remove this check as it's only needed for Node 6\n    const originalWrappedFunc =\n      originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n    if (level in global.console && originalWrappedFunc) {\n      wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n      originalConsole[level] = originalWrappedFunc as Console[typeof level];\n    }\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    Object.keys(wrappedLevels).forEach(level => {\n      originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n    });\n  }\n}\n\nfunction makeLogger(): Logger {\n  let enabled = false;\n  const logger: Partial<Logger> = {\n    enable: () => {\n      enabled = true;\n    },\n    disable: () => {\n      enabled = false;\n    },\n  };\n\n  if (IS_DEBUG_BUILD) {\n    CONSOLE_LEVELS.forEach(name => {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      logger[name] = (...args: any[]) => {\n        if (enabled) {\n          consoleSandbox(() => {\n            global.console[name](`${PREFIX}[${name}]:`, ...args);\n          });\n        }\n      };\n    });\n  } else {\n    CONSOLE_LEVELS.forEach(name => {\n      logger[name] = () => undefined;\n    });\n  }\n\n  return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (IS_DEBUG_BUILD) {\n  logger = getGlobalSingleton('logger', makeLogger);\n} else {\n  logger = makeLogger();\n}\n\nexport { logger };\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\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}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\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}\n\nprocess.nextTick = function (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\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};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'history' | 'xhr' | 'error' | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n  Object.keys(handlers).forEach(key => {\n    handlers[key as InstrumentHandlerType] = undefined;\n  });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n  if (!instrumented[type]) {\n    instrumentFn();\n    instrumented[type] = true;\n  }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n  const typeHandlers = type && handlers[type];\n  if (!typeHandlers) {\n    return;\n  }\n\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n  if (!(name in source)) {\n    return;\n  }\n\n  const original = source[name] as () => any;\n  const wrapped = replacementFactory(original) as WrappedFunction;\n\n  // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n  // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n  if (typeof wrapped === 'function') {\n    try {\n      markFunctionWrapped(wrapped, original);\n    } catch (_Oo) {\n      // This can throw if multiple fill happens on a global object like XMLHttpRequest\n      // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n    }\n  }\n\n  source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n  Object.defineProperty(obj, name, {\n    // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n    value: value,\n    writable: true,\n    configurable: true,\n  });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n  const proto = original.prototype || {};\n  wrapped.prototype = original.prototype = proto;\n  addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available.  See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n  return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n  return Object.keys(object)\n    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n    .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nexport function convertToPlainObject(value: unknown): {\n  [key: string]: unknown;\n} {\n  let newObj = value as {\n    [key: string]: unknown;\n  };\n\n  if (isError(value)) {\n    newObj = {\n      message: value.message,\n      name: value.name,\n      stack: value.stack,\n      ...getOwnProperties(value as ExtendedError),\n    };\n  } else if (isEvent(value)) {\n    /**\n     * Event-like interface that's usable in browser and node\n     */\n    interface SimpleEvent {\n      [key: string]: unknown;\n      type: string;\n      target?: unknown;\n      currentTarget?: unknown;\n    }\n\n    const event = value as SimpleEvent;\n\n    newObj = {\n      type: event.type,\n      target: serializeEventTarget(event.target),\n      currentTarget: serializeEventTarget(event.currentTarget),\n      ...getOwnProperties(event),\n    };\n\n    if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n      newObj.detail = event.detail;\n    }\n  }\n  return newObj;\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n  try {\n    return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: { [key: string]: unknown }): { [key: string]: unknown } {\n  const extractedProps: { [key: string]: unknown } = {};\n  for (const property in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, property)) {\n      extractedProps[property] = obj[property];\n    }\n  }\n  return extractedProps;\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n\n  if (!keys.length) {\n    return '[object has no keys]';\n  }\n\n  if (keys[0].length >= maxLength) {\n    return truncate(keys[0], maxLength);\n  }\n\n  for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n    const serialized = keys.slice(0, includedKeys).join(', ');\n    if (serialized.length > maxLength) {\n      continue;\n    }\n    if (includedKeys === keys.length) {\n      return serialized;\n    }\n    return truncate(serialized, maxLength);\n  }\n\n  return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys<T>(val: T): T {\n  if (isPlainObject(val)) {\n    const rv: { [key: string]: any } = {};\n    for (const key of Object.keys(val)) {\n      if (typeof val[key] !== 'undefined') {\n        rv[key] = dropUndefinedKeys(val[key]);\n      }\n    }\n    return rv as T;\n  }\n\n  if (Array.isArray(val)) {\n    return (val as any[]).map(dropUndefinedKeys) as any;\n  }\n\n  return val;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n  let objectified;\n  switch (true) {\n    case wat === undefined || wat === null:\n      objectified = new String(wat);\n      break;\n\n    // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n    // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n    // an object in order to wrap it.\n    case typeof wat === 'symbol' || typeof wat === 'bigint':\n      objectified = Object(wat);\n      break;\n\n    // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n    case isPrimitive(wat):\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      objectified = new (wat as any).constructor(wat);\n      break;\n\n    // by process of elimination, at this point we know that `wat` must already be an object\n    default:\n      objectified = wat;\n      break;\n  }\n  return objectified;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n  msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n  const global = getGlobalObject() as MsCryptoWindow;\n  const crypto = global.crypto || global.msCrypto;\n\n  if (!(crypto === void 0) && crypto.getRandomValues) {\n    // Use window.crypto API if available\n    const arr = new Uint16Array(8);\n    crypto.getRandomValues(arr);\n\n    // set 4 in byte 7\n    // eslint-disable-next-line no-bitwise\n    arr[3] = (arr[3] & 0xfff) | 0x4000;\n    // set 2 most significant bits of byte 9 to '10'\n    // eslint-disable-next-line no-bitwise\n    arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n    const pad = (num: number): string => {\n      let v = num.toString(16);\n      while (v.length < 4) {\n        v = `0${v}`;\n      }\n      return v;\n    };\n\n    return (\n      pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n    );\n  }\n  // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n  return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n    // eslint-disable-next-line no-bitwise\n    const r = (Math.random() * 16) | 0;\n    // eslint-disable-next-line no-bitwise\n    const v = c === 'x' ? r : (r & 0x3) | 0x8;\n    return v.toString(16);\n  });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n  host?: string;\n  path?: string;\n  protocol?: string;\n  relative?: string;\n} {\n  if (!url) {\n    return {};\n  }\n\n  const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n  if (!match) {\n    return {};\n  }\n\n  // coerce to undefined values to empty string so we don't get 'undefined'\n  const query = match[6] || '';\n  const fragment = match[8] || '';\n  return {\n    host: match[4],\n    path: match[5],\n    protocol: match[2],\n    relative: match[5] + query + fragment, // everything minus origin\n  };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n  return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n  const { message, event_id: eventId } = event;\n  if (message) {\n    return message;\n  }\n\n  const firstException = getFirstException(event);\n  if (firstException) {\n    if (firstException.type && firstException.value) {\n      return `${firstException.type}: ${firstException.value}`;\n    }\n    return firstException.type || firstException.value || eventId || '<unknown>';\n  }\n  return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n  const exception = (event.exception = event.exception || {});\n  const values = (exception.values = exception.values || []);\n  const firstException = (values[0] = values[0] || {});\n  if (!firstException.value) {\n    firstException.value = value || '';\n  }\n  if (!firstException.type) {\n    firstException.type = type || 'Error';\n  }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial<Mechanism>): void {\n  const firstException = getFirstException(event);\n  if (!firstException) {\n    return;\n  }\n\n  const defaultMechanism = { type: 'generic', handled: true };\n  const currentMechanism = firstException.mechanism;\n  firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n  if (newMechanism && 'data' in newMechanism) {\n    const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n    firstException.mechanism.data = mergedData;\n  }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n  major?: number;\n  minor?: number;\n  patch?: number;\n  prerelease?: string;\n  buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = parseInt(match[1], 10);\n  const minor = parseInt(match[2], 10);\n  const patch = parseInt(match[3], 10);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? undefined : major,\n    minor: isNaN(minor) ? undefined : minor,\n    patch: isNaN(patch) ? undefined : patch,\n    prerelease: match[4],\n  };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n  const lineno = frame.lineno || 0;\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line: string) => snipLine(line, 0));\n\n  frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n  frame.post_context = lines\n    .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n    .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n  // eslint-disable-next-line no-useless-escape\n  return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (exception && (exception as any).__sentry_captured__) {\n    return true;\n  }\n\n  try {\n    // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n    // `ExtraErrorData` integration\n    addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n  } catch (err) {\n    // `exception` is a primitive, so we can't mark it seen\n  }\n\n  return false;\n}\n","/* eslint-disable max-lines */\nimport {\n  Breadcrumb,\n  BreadcrumbHint,\n  Client,\n  CustomSamplingContext,\n  Event,\n  EventHint,\n  Extra,\n  Extras,\n  Hub as HubInterface,\n  Integration,\n  IntegrationClass,\n  Primitive,\n  SessionContext,\n  Severity,\n  Span,\n  SpanContext,\n  Transaction,\n  TransactionContext,\n  User,\n} from '@sentry/types';\nimport {\n  consoleSandbox,\n  dateTimestampInSeconds,\n  getGlobalObject,\n  getGlobalSingleton,\n  isNodeEnv,\n  logger,\n  uuid4,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Scope } from './scope';\nimport { Session } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n  client?: Client;\n  scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n  __SENTRY__?: {\n    hub?: Hub;\n    /**\n     * Extra Hub properties injected by various SDKs\n     */\n    integrations?: Integration[];\n    extensions?: {\n      /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      domain?: { [key: string]: any };\n    } & {\n      /** Extension methods for the hub, which are bound to the current Hub instance */\n      // eslint-disable-next-line @typescript-eslint/ban-types\n      [key: string]: Function;\n    };\n  };\n}\n\n/**\n * @hidden\n * @deprecated Can be removed once `Hub.getActiveDomain` is removed.\n */\nexport interface DomainAsCarrier extends Carrier {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  members: { [key: string]: any }[];\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n  /** Is a {@link Layer}[] containing the client and scope */\n  private readonly _stack: Layer[] = [{}];\n\n  /** Contains the last event id of a captured event.  */\n  private _lastEventId?: string;\n\n  /**\n   * Creates a new instance of the hub, will push one {@link Layer} into the\n   * internal stack on creation.\n   *\n   * @param client bound to the hub.\n   * @param scope bound to the hub.\n   * @param version number, higher number means higher priority.\n   */\n  public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n    this.getStackTop().scope = scope;\n    if (client) {\n      this.bindClient(client);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public isOlderThan(version: number): boolean {\n    return this._version < version;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public bindClient(client?: Client): void {\n    const top = this.getStackTop();\n    top.client = client;\n    if (client && client.setupIntegrations) {\n      client.setupIntegrations();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public pushScope(): Scope {\n    // We want to clone the content of prev scope\n    const scope = Scope.clone(this.getScope());\n    this.getStack().push({\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public popScope(): boolean {\n    if (this.getStack().length <= 1) return false;\n    return !!this.getStack().pop();\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public withScope(callback: (scope: Scope) => void): void {\n    const scope = this.pushScope();\n    try {\n      callback(scope);\n    } finally {\n      this.popScope();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getClient<C extends Client>(): C | undefined {\n    return this.getStackTop().client as C;\n  }\n\n  /** Returns the scope of the top stack. */\n  public getScope(): Scope | undefined {\n    return this.getStackTop().scope;\n  }\n\n  /** Returns the scope stack for domains or the process. */\n  public getStack(): Layer[] {\n    return this._stack;\n  }\n\n  /** Returns the topmost scope layer in the order domain > local > process. */\n  public getStackTop(): Layer {\n    return this._stack[this._stack.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public captureException(exception: any, hint?: EventHint): string {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    let finalHint = hint;\n\n    // If there's no explicit hint provided, mimic the same thing that would happen\n    // in the minimal itself to create a consistent behavior.\n    // We don't do this in the client, as it's the lowest level API, and doing this,\n    // would prevent user from having full control over direct calls.\n    if (!hint) {\n      let syntheticException: Error;\n      try {\n        throw new Error('Sentry syntheticException');\n      } catch (exception) {\n        syntheticException = exception as Error;\n      }\n      finalHint = {\n        originalException: exception,\n        syntheticException,\n      };\n    }\n\n    this._invokeClient('captureException', exception, {\n      ...finalHint,\n      event_id: eventId,\n    });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    let finalHint = hint;\n\n    // If there's no explicit hint provided, mimic the same thing that would happen\n    // in the minimal itself to create a consistent behavior.\n    // We don't do this in the client, as it's the lowest level API, and doing this,\n    // would prevent user from having full control over direct calls.\n    if (!hint) {\n      let syntheticException: Error;\n      try {\n        throw new Error(message);\n      } catch (exception) {\n        syntheticException = exception as Error;\n      }\n      finalHint = {\n        originalException: message,\n        syntheticException,\n      };\n    }\n\n    this._invokeClient('captureMessage', message, level, {\n      ...finalHint,\n      event_id: eventId,\n    });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureEvent(event: Event, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n    if (event.type !== 'transaction') {\n      this._lastEventId = eventId;\n    }\n\n    this._invokeClient('captureEvent', event, {\n      ...hint,\n      event_id: eventId,\n    });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public lastEventId(): string | undefined {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n    const { scope, client } = this.getStackTop();\n\n    if (!scope || !client) return;\n\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n      (client.getOptions && client.getOptions()) || {};\n\n    if (maxBreadcrumbs <= 0) return;\n\n    const timestamp = dateTimestampInSeconds();\n    const mergedBreadcrumb = { timestamp, ...breadcrumb };\n    const finalBreadcrumb = beforeBreadcrumb\n      ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n      : mergedBreadcrumb;\n\n    if (finalBreadcrumb === null) return;\n\n    scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setUser(user: User | null): void {\n    const scope = this.getScope();\n    if (scope) scope.setUser(user);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTags(tags: { [key: string]: Primitive }): void {\n    const scope = this.getScope();\n    if (scope) scope.setTags(tags);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtras(extras: Extras): void {\n    const scope = this.getScope();\n    if (scope) scope.setExtras(extras);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTag(key: string, value: Primitive): void {\n    const scope = this.getScope();\n    if (scope) scope.setTag(key, value);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtra(key: string, extra: Extra): void {\n    const scope = this.getScope();\n    if (scope) scope.setExtra(key, extra);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public setContext(name: string, context: { [key: string]: any } | null): void {\n    const scope = this.getScope();\n    if (scope) scope.setContext(name, context);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public configureScope(callback: (scope: Scope) => void): void {\n    const { scope, client } = this.getStackTop();\n    if (scope && client) {\n      callback(scope);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public run(callback: (hub: Hub) => void): void {\n    const oldHub = makeMain(this);\n    try {\n      callback(this);\n    } finally {\n      makeMain(oldHub);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n    const client = this.getClient();\n    if (!client) return null;\n    try {\n      return client.getIntegration(integration);\n    } catch (_oO) {\n      IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n      return null;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public startSpan(context: SpanContext): Span {\n    return this._callExtensionMethod('startSpan', context);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n    return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public traceHeaders(): { [key: string]: string } {\n    return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureSession(endSession: boolean = false): void {\n    // both send the update and pull the session from the scope\n    if (endSession) {\n      return this.endSession();\n    }\n\n    // only send the update\n    this._sendSessionUpdate();\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public endSession(): void {\n    const layer = this.getStackTop();\n    const scope = layer && layer.scope;\n    const session = scope && scope.getSession();\n    if (session) {\n      session.close();\n    }\n    this._sendSessionUpdate();\n\n    // the session is over; take it off of the scope\n    if (scope) {\n      scope.setSession();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public startSession(context?: SessionContext): Session {\n    const { scope, client } = this.getStackTop();\n    const { release, environment } = (client && client.getOptions()) || {};\n\n    // Will fetch userAgent if called from browser sdk\n    const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n    const { userAgent } = global.navigator || {};\n\n    const session = new Session({\n      release,\n      environment,\n      ...(scope && { user: scope.getUser() }),\n      ...(userAgent && { userAgent }),\n      ...context,\n    });\n\n    if (scope) {\n      // End existing session if there's one\n      const currentSession = scope.getSession && scope.getSession();\n      if (currentSession && currentSession.status === 'ok') {\n        currentSession.update({ status: 'exited' });\n      }\n      this.endSession();\n\n      // Afterwards we set the new session on the scope\n      scope.setSession(session);\n    }\n\n    return session;\n  }\n\n  /**\n   * Sends the current Session on the scope\n   */\n  private _sendSessionUpdate(): void {\n    const { scope, client } = this.getStackTop();\n    if (!scope) return;\n\n    const session = scope.getSession && scope.getSession();\n    if (session) {\n      if (client && client.captureSession) {\n        client.captureSession(session);\n      }\n    }\n  }\n\n  /**\n   * Internal helper function to call a method on the top client if it exists.\n   *\n   * @param method The method to call on the client.\n   * @param args Arguments to pass to the client function.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _invokeClient<M extends keyof Client>(method: M, ...args: any[]): void {\n    const { scope, client } = this.getStackTop();\n    if (client && client[method]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n      (client as any)[method](...args, scope);\n    }\n  }\n\n  /**\n   * Calls global extension method and binding current instance to the function call\n   */\n  // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _callExtensionMethod<T>(method: string, ...args: any[]): T {\n    const carrier = getMainCarrier();\n    const sentry = carrier.__SENTRY__;\n    if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n      return sentry.extensions[method].apply(this, args);\n    }\n    IS_DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n  }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n  const carrier = getGlobalObject();\n  carrier.__SENTRY__ = carrier.__SENTRY__ || {\n    extensions: {},\n    hub: undefined,\n  };\n  return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n  const registry = getMainCarrier();\n  const oldHub = getHubFromCarrier(registry);\n  setHubOnCarrier(registry, hub);\n  return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n\n  // If there's no hub, or its an old API, assign a new one\n  if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n    setHubOnCarrier(registry, new Hub());\n  }\n\n  // Prefer domains over global if they are there (applicable only to Node environment)\n  if (isNodeEnv()) {\n    return getHubFromActiveDomain(registry);\n  }\n  // Return hub that lives on a global object\n  return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n  IS_DEBUG_BUILD && logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n\n  const sentry = getMainCarrier().__SENTRY__;\n\n  return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n  try {\n    const sentry = getMainCarrier().__SENTRY__;\n    const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n    // If there's no active domain, just return global hub\n    if (!activeDomain) {\n      return getHubFromCarrier(registry);\n    }\n\n    // If there's no hub on current domain, or it's an old API, assign a new one\n    if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n      const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n      setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n    }\n\n    // Return hub that lives on a domain\n    return getHubFromCarrier(activeDomain);\n  } catch (_Oo) {\n    // Return hub that lives on a global object\n    return getHubFromCarrier(registry);\n  }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n  return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n  return getGlobalSingleton<Hub>('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n  if (!carrier) return false;\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n  __SENTRY__.hub = hub;\n  return true;\n}\n","import{__spreadArray}from\"tslib\";var componentOnReady=function(e,a){if(e.componentOnReady){e.componentOnReady().then((function(e){return a(e)}))}else{raf((function(){return a(e)}))}};var inheritAttributes=function(e,a){if(a===void 0){a=[]}var r={};a.forEach((function(a){if(e.hasAttribute(a)){var i=e.getAttribute(a);if(i!==null){r[a]=e.getAttribute(a)}e.removeAttribute(a)}}));return r};var ariaAttributes=[\"role\",\"aria-activedescendant\",\"aria-atomic\",\"aria-autocomplete\",\"aria-braillelabel\",\"aria-brailleroledescription\",\"aria-busy\",\"aria-checked\",\"aria-colcount\",\"aria-colindex\",\"aria-colindextext\",\"aria-colspan\",\"aria-controls\",\"aria-current\",\"aria-describedby\",\"aria-description\",\"aria-details\",\"aria-disabled\",\"aria-errormessage\",\"aria-expanded\",\"aria-flowto\",\"aria-haspopup\",\"aria-hidden\",\"aria-invalid\",\"aria-keyshortcuts\",\"aria-label\",\"aria-labelledby\",\"aria-level\",\"aria-live\",\"aria-multiline\",\"aria-multiselectable\",\"aria-orientation\",\"aria-owns\",\"aria-placeholder\",\"aria-posinset\",\"aria-pressed\",\"aria-readonly\",\"aria-relevant\",\"aria-required\",\"aria-roledescription\",\"aria-rowcount\",\"aria-rowindex\",\"aria-rowindextext\",\"aria-rowspan\",\"aria-selected\",\"aria-setsize\",\"aria-sort\",\"aria-valuemax\",\"aria-valuemin\",\"aria-valuenow\",\"aria-valuetext\"];var inheritAriaAttributes=function(e){return inheritAttributes(e,ariaAttributes)};var addEventListener=function(e,a,r,i){if(typeof window!==\"undefined\"){var t=window;var n=t&&t.Ionic&&t.Ionic.config;if(n){var o=n.get(\"_ael\");if(o){return o(e,a,r,i)}else if(n._ael){return n._ael(e,a,r,i)}}}return e.addEventListener(a,r,i)};var removeEventListener=function(e,a,r,i){if(typeof window!==\"undefined\"){var t=window;var n=t&&t.Ionic&&t.Ionic.config;if(n){var o=n.get(\"_rel\");if(o){return o(e,a,r,i)}else if(n._rel){return n._rel(e,a,r,i)}}}return e.removeEventListener(a,r,i)};var getElementRoot=function(e,a){if(a===void 0){a=e}return e.shadowRoot||a};var raf=function(e){if(typeof __zone_symbol__requestAnimationFrame===\"function\"){return __zone_symbol__requestAnimationFrame(e)}if(typeof requestAnimationFrame===\"function\"){return requestAnimationFrame(e)}return setTimeout(e)};var hasShadowDom=function(e){return!!e.shadowRoot&&!!e.attachShadow};var findItemLabel=function(e){var a=e.closest(\"ion-item\");if(a){return a.querySelector(\"ion-label\")}return null};var getAriaLabel=function(e,a){var r;var i=e.getAttribute(\"aria-labelledby\");var t=e.id;var n=i!==null&&i.trim()!==\"\"?i:a+\"-lbl\";var o=i!==null&&i.trim()!==\"\"?document.getElementById(i):findItemLabel(e);if(o){if(i===null){o.id=n}r=o.textContent;o.setAttribute(\"aria-hidden\",\"true\")}else if(t.trim()!==\"\"){o=document.querySelector('label[for=\"'+t+'\"]');if(o){if(o.id!==\"\"){n=o.id}else{o.id=n=t+\"-lbl\"}r=o.textContent}}return{label:o,labelId:n,labelText:r}};var renderHiddenInput=function(e,a,r,i,t){if(e||hasShadowDom(a)){var n=a.querySelector(\"input.aux-input\");if(!n){n=a.ownerDocument.createElement(\"input\");n.type=\"hidden\";n.classList.add(\"aux-input\");a.appendChild(n)}n.disabled=t;n.name=r;n.value=i||\"\"}};var clamp=function(e,a,r){return Math.max(e,Math.min(a,r))};var assert=function(e,a){if(!e){var r=\"ASSERT: \"+a;console.error(r);debugger;throw new Error(r)}};var now=function(e){return e.timeStamp||Date.now()};var pointerCoord=function(e){if(e){var a=e.changedTouches;if(a&&a.length>0){var r=a[0];return{x:r.clientX,y:r.clientY}}if(e.pageX!==undefined){return{x:e.pageX,y:e.pageY}}}return{x:0,y:0}};var isEndSide=function(e){var a=document.dir===\"rtl\";switch(e){case\"start\":return a;case\"end\":return!a;default:throw new Error('\"'+e+'\" is not a valid value for [side]. Use \"start\" or \"end\" instead.')}};var debounceEvent=function(e,a){var r=e._original||e;return{_original:e,emit:debounce(r.emit.bind(r),a)}};var debounce=function(e,a){if(a===void 0){a=0}var r;return function(){var i=[];for(var t=0;t<arguments.length;t++){i[t]=arguments[t]}clearTimeout(r);r=setTimeout.apply(void 0,__spreadArray([e,a],i))}};export{addEventListener as a,removeEventListener as b,componentOnReady as c,getAriaLabel as d,renderHiddenInput as e,debounceEvent as f,getElementRoot as g,inheritAttributes as h,inheritAriaAttributes as i,findItemLabel as j,clamp as k,hasShadowDom as l,assert as m,isEndSide as n,debounce as o,pointerCoord as p,now as q,raf as r};","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_<T>(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted<T, ES5ObjectState | ES5ArrayState>\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted<AnyObject, ES5ObjectState>\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted<AnyObject, ES5ArrayState>\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t  // prototype, we should invoke it with the draft as context!\n\t\t\t  desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_<T>(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted<T, ES5ObjectState | ES5ArrayState> {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted<any, ImmerState>[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude<T, Nothing>`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.ReactGAImplementation = void 0;\nvar _ga = _interopRequireWildcard(require(\"./ga4\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ReactGAImplementation = _ga.GA4;\nexports.ReactGAImplementation = ReactGAImplementation;\nvar _default = _ga[\"default\"];\nexports[\"default\"] = _default;","import { fromEvent, Observable } from 'rxjs';\n\nimport { CordovaOptions } from './interfaces';\n\ndeclare const window: any;\n\nexport const ERR_CORDOVA_NOT_AVAILABLE = { error: 'cordova_not_available' };\nexport const ERR_PLUGIN_NOT_INSTALLED = { error: 'plugin_not_installed' };\n\nexport function getPromise<T>(callback: (resolve: Function, reject?: Function) => any): Promise<T> {\n  const tryNativePromise = () => {\n    if (Promise) {\n      return new Promise<T>((resolve, reject) => {\n        callback(resolve, reject);\n      });\n    } else {\n      console.error(\n        'No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.'\n      );\n    }\n  };\n\n  if (typeof window !== 'undefined' && window.angular) {\n    const doc = window.document;\n    const injector = window.angular.element(doc.querySelector('[ng-app]') || doc.body).injector();\n    if (injector) {\n      const $q = injector.get('$q');\n      return $q((resolve: Function, reject: Function) => {\n        callback(resolve, reject);\n      });\n    }\n    console.warn(\n      `Angular 1 was detected but $q couldn't be retrieved. This is usually when the app is not bootstrapped on the html or body tag. Falling back to native promises which won't trigger an automatic digest when promises resolve.`\n    );\n  }\n\n  return tryNativePromise();\n}\n\nexport function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: CordovaOptions = {}) {\n  let pluginResult: any, rej: Function;\n  const p = getPromise((resolve: Function, reject: Function) => {\n    if (opts.destruct) {\n      pluginResult = callCordovaPlugin(\n        pluginObj,\n        methodName,\n        args,\n        opts,\n        (...args: any[]) => resolve(args),\n        (...args: any[]) => reject(args)\n      );\n    } else {\n      pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);\n    }\n    rej = reject;\n  });\n  // Angular throws an error on unhandled rejection, but in this case we have already printed\n  // a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason\n  // to error\n  if (pluginResult && pluginResult.error) {\n    p.catch(() => {});\n    typeof rej === 'function' && rej(pluginResult.error);\n  }\n  return p;\n}\n\nfunction wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {\n  return getPromise((resolve: Function, reject: Function) => {\n    const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);\n    if (pluginResult) {\n      if (pluginResult.error) {\n        reject(pluginResult.error);\n      } else if (pluginResult.then) {\n        pluginResult.then(resolve).catch(reject);\n      }\n    } else {\n      reject({ error: 'unexpected_error' });\n    }\n  });\n}\n\nfunction wrapObservable(pluginObj: any, methodName: string, args: any[], opts: any = {}) {\n  return new Observable(observer => {\n    let pluginResult;\n\n    if (opts.destruct) {\n      pluginResult = callCordovaPlugin(\n        pluginObj,\n        methodName,\n        args,\n        opts,\n        (...args: any[]) => observer.next(args),\n        (...args: any[]) => observer.error(args)\n      );\n    } else {\n      pluginResult = callCordovaPlugin(\n        pluginObj,\n        methodName,\n        args,\n        opts,\n        observer.next.bind(observer),\n        observer.error.bind(observer)\n      );\n    }\n\n    if (pluginResult && pluginResult.error) {\n      observer.error(pluginResult.error);\n      observer.complete();\n    }\n    return () => {\n      try {\n        if (opts.clearFunction) {\n          if (opts.clearWithArgs) {\n            return callCordovaPlugin(\n              pluginObj,\n              opts.clearFunction,\n              args,\n              opts,\n              observer.next.bind(observer),\n              observer.error.bind(observer)\n            );\n          }\n          return callCordovaPlugin(pluginObj, opts.clearFunction, []);\n        }\n      } catch (e) {\n        console.warn(\n          'Unable to clear the previous observable watch for',\n          pluginObj.constructor.getPluginName(),\n          methodName\n        );\n        console.warn(e);\n      }\n    };\n  });\n}\n\n/**\n * Wrap the event with an observable\n * @private\n * @param event event name\n * @param element The element to attach the event listener to\n * @returns {Observable}\n */\nfunction wrapEventObservable(event: string, element: any): Observable<any> {\n  element =\n    typeof window !== 'undefined' && element\n      ? get(window, element)\n      : element || (typeof window !== 'undefined' ? window : {});\n  return fromEvent(element, event);\n}\n\n/**\n * Checks if plugin/cordova is available\n * @return {boolean | { error: string } }\n * @private\n */\nexport function checkAvailability(\n  pluginRef: string,\n  methodName?: string,\n  pluginName?: string\n): boolean | { error: string };\nexport function checkAvailability(\n  pluginObj: any,\n  methodName?: string,\n  pluginName?: string\n): boolean | { error: string };\nexport function checkAvailability(plugin: any, methodName?: string, pluginName?: string): boolean | { error: string } {\n  let pluginRef, pluginInstance, pluginPackage;\n\n  if (typeof plugin === 'string') {\n    pluginRef = plugin;\n  } else {\n    pluginRef = plugin.constructor.getPluginRef();\n    pluginName = plugin.constructor.getPluginName();\n    pluginPackage = plugin.constructor.getPluginInstallName();\n  }\n\n  pluginInstance = getPlugin(pluginRef);\n\n  if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {\n    if (typeof window === 'undefined' || !window.cordova) {\n      cordovaWarn(pluginName, methodName);\n      return ERR_CORDOVA_NOT_AVAILABLE;\n    }\n\n    pluginWarn(pluginName, pluginPackage, methodName);\n    return ERR_PLUGIN_NOT_INSTALLED;\n  }\n\n  return true;\n}\n\n/**\n * Checks if _objectInstance exists and has the method/property\n * @private\n */\nexport function instanceAvailability(pluginObj: any, methodName?: string): boolean {\n  return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');\n}\n\nexport function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {\n  // ignore resolve and reject in case sync\n  if (opts.sync) {\n    return args;\n  }\n\n  // If the plugin method expects myMethod(success, err, options)\n  if (opts.callbackOrder === 'reverse') {\n    // Get those arguments in the order [resolve, reject, ...restOfArgs]\n    args.unshift(reject);\n    args.unshift(resolve);\n  } else if (opts.callbackStyle === 'node') {\n    args.push((err: any, result: any) => {\n      if (err) {\n        reject(err);\n      } else {\n        resolve(result);\n      }\n    });\n  } else if (opts.callbackStyle === 'object' && opts.successName && opts.errorName) {\n    const obj: any = {};\n    obj[opts.successName] = resolve;\n    obj[opts.errorName] = reject;\n    args.push(obj);\n  } else if (typeof opts.successIndex !== 'undefined' || typeof opts.errorIndex !== 'undefined') {\n    const setSuccessIndex = () => {\n      // If we've specified a success/error index\n      if (opts.successIndex > args.length) {\n        args[opts.successIndex] = resolve;\n      } else {\n        args.splice(opts.successIndex, 0, resolve);\n      }\n    };\n\n    const setErrorIndex = () => {\n      // We don't want that the reject cb gets spliced into the position of an optional argument that has not been\n      // defined and thus causing non expected behavior.\n      if (opts.errorIndex > args.length) {\n        args[opts.errorIndex] = reject; // insert the reject fn at the correct specific index\n      } else {\n        args.splice(opts.errorIndex, 0, reject); // otherwise just splice it into the array\n      }\n    };\n\n    if (opts.successIndex > opts.errorIndex) {\n      setErrorIndex();\n      setSuccessIndex();\n    } else {\n      setSuccessIndex();\n      setErrorIndex();\n    }\n  } else {\n    // Otherwise, let's tack them on to the end of the argument list\n    // which is 90% of cases\n    args.push(resolve);\n    args.push(reject);\n  }\n  return args;\n}\n\nexport function callCordovaPlugin(\n  pluginObj: any,\n  methodName: string,\n  args: any[],\n  opts: any = {},\n  resolve?: Function,\n  reject?: Function\n) {\n  // Try to figure out where the success/error callbacks need to be bound\n  // to our promise resolve/reject handlers.\n  args = setIndex(args, opts, resolve, reject);\n\n  const availabilityCheck = checkAvailability(pluginObj, methodName);\n\n  if (availabilityCheck === true) {\n    const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());\n    return pluginInstance[methodName].apply(pluginInstance, args);\n  } else {\n    return availabilityCheck;\n  }\n}\n\nexport function callInstance(\n  pluginObj: any,\n  methodName: string,\n  args: any[],\n  opts: any = {},\n  resolve?: Function,\n  reject?: Function\n) {\n  args = setIndex(args, opts, resolve, reject);\n\n  if (instanceAvailability(pluginObj, methodName)) {\n    return pluginObj._objectInstance[methodName].apply(pluginObj._objectInstance, args);\n  }\n}\n\nexport function getPlugin(pluginRef: string): any {\n  if (typeof window !== 'undefined') {\n    return get(window, pluginRef);\n  }\n  return null;\n}\n\nexport function get(element: Element | Window, path: string) {\n  const paths: string[] = path.split('.');\n  let obj: any = element;\n  for (let i = 0; i < paths.length; i++) {\n    if (!obj) {\n      return null;\n    }\n    obj = obj[paths[i]];\n  }\n  return obj;\n}\n\nexport function pluginWarn(pluginName: string, plugin?: string, method?: string): void {\n  if (method) {\n    console.warn(\n      'Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.'\n    );\n  } else {\n    console.warn(`Native: tried accessing the ${pluginName} plugin but it's not installed.`);\n  }\n  if (plugin) {\n    console.warn(`Install the ${pluginName} plugin: 'ionic cordova plugin add ${plugin}'`);\n  }\n}\n\n/**\n * @private\n * @param pluginName\n * @param method\n */\nexport function cordovaWarn(pluginName: string, method?: string): void {\n  if (typeof process === 'undefined') {\n    if (method) {\n      console.warn(\n        'Native: tried calling ' +\n          pluginName +\n          '.' +\n          method +\n          ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'\n      );\n    } else {\n      console.warn(\n        'Native: tried accessing the ' +\n          pluginName +\n          ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'\n      );\n    }\n  }\n}\n\n// Fixes a bug in TypeScript 2.9.2 where the ...args is being converted into args: {} and\n// causing compilation issues\nexport type WrapFn = (...args: any[]) => any;\n\n/**\n * @private\n */\nexport const wrap = (pluginObj: any, methodName: string, opts: CordovaOptions = {}): WrapFn => {\n  return (...args: any[]) => {\n    if (opts.sync) {\n      // Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is\n      return callCordovaPlugin(pluginObj, methodName, args, opts);\n    } else if (opts.observable) {\n      return wrapObservable(pluginObj, methodName, args, opts);\n    } else if (opts.eventObservable && opts.event) {\n      return wrapEventObservable(opts.event, opts.element);\n    } else if (opts.otherPromise) {\n      return wrapOtherPromise(pluginObj, methodName, args, opts);\n    } else {\n      return wrapPromise(pluginObj, methodName, args, opts);\n    }\n  };\n};\n\n/**\n * @private\n */\nexport function wrapInstance(pluginObj: any, methodName: string, opts: any = {}): Function {\n  return (...args: any[]) => {\n    if (opts.sync) {\n      return callInstance(pluginObj, methodName, args, opts);\n    } else if (opts.observable) {\n      return new Observable(observer => {\n        let pluginResult;\n\n        if (opts.destruct) {\n          pluginResult = callInstance(\n            pluginObj,\n            methodName,\n            args,\n            opts,\n            (...args: any[]) => observer.next(args),\n            (...args: any[]) => observer.error(args)\n          );\n        } else {\n          pluginResult = callInstance(\n            pluginObj,\n            methodName,\n            args,\n            opts,\n            observer.next.bind(observer),\n            observer.error.bind(observer)\n          );\n        }\n\n        if (pluginResult && pluginResult.error) {\n          observer.error(pluginResult.error);\n        }\n\n        return () => {\n          try {\n            if (opts.clearWithArgs) {\n              return callInstance(\n                pluginObj,\n                opts.clearFunction,\n                args,\n                opts,\n                observer.next.bind(observer),\n                observer.error.bind(observer)\n              );\n            }\n            return callInstance(pluginObj, opts.clearFunction, []);\n          } catch (e) {\n            console.warn(\n              'Unable to clear the previous observable watch for',\n              pluginObj.constructor.getPluginName(),\n              methodName\n            );\n            console.warn(e);\n          }\n        };\n      });\n    } else if (opts.otherPromise) {\n      return getPromise((resolve: Function, reject: Function) => {\n        let result;\n        if (opts.destruct) {\n          result = callInstance(\n            pluginObj,\n            methodName,\n            args,\n            opts,\n            (...args: any[]) => resolve(args),\n            (...args: any[]) => reject(args)\n          );\n        } else {\n          result = callInstance(pluginObj, methodName, args, opts, resolve, reject);\n        }\n        if (result && result.then) {\n          result.then(resolve, reject);\n        } else {\n          reject();\n        }\n      });\n    } else {\n      let pluginResult: any, rej: Function;\n      const p = getPromise((resolve: Function, reject: Function) => {\n        if (opts.destruct) {\n          pluginResult = callInstance(\n            pluginObj,\n            methodName,\n            args,\n            opts,\n            (...args: any[]) => resolve(args),\n            (...args: any[]) => reject(args)\n          );\n        } else {\n          pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);\n        }\n        rej = reject;\n      });\n      // Angular throws an error on unhandled rejection, but in this case we have already printed\n      // a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason\n      // to error\n      if (pluginResult && pluginResult.error) {\n        p.catch(() => {});\n        typeof rej === 'function' && rej(pluginResult.error);\n      }\n      return p;\n    }\n  };\n}\n","/* Ionicons v5.5.4, ES Modules */\n\nexport const accessibility = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Accessibility</title><path d='M256 112a56 56 0 1156-56 56.06 56.06 0 01-56 56z'/><path d='M432 112.8l-.45.12-.42.13c-1 .28-2 .58-3 .89-18.61 5.46-108.93 30.92-172.56 30.92-59.13 0-141.28-22-167.56-29.47a73.79 73.79 0 00-8-2.58c-19-5-32 14.3-32 31.94 0 17.47 15.7 25.79 31.55 31.76v.28l95.22 29.74c9.73 3.73 12.33 7.54 13.6 10.84 4.13 10.59.83 31.56-.34 38.88l-5.8 45-32.19 176.19q-.15.72-.27 1.47l-.23 1.27c-2.32 16.15 9.54 31.82 32 31.82 19.6 0 28.25-13.53 32-31.94s28-157.57 42-157.57 42.84 157.57 42.84 157.57c3.75 18.41 12.4 31.94 32 31.94 22.52 0 34.38-15.74 32-31.94a57.17 57.17 0 00-.76-4.06L329 301.27l-5.79-45c-4.19-26.21-.82-34.87.32-36.9a1.09 1.09 0 00.08-.15c1.08-2 6-6.48 17.48-10.79l89.28-31.21a16.9 16.9 0 001.62-.52c16-6 32-14.3 32-31.93S451 107.81 432 112.8z'/></svg>\"\nexport const accessibilityOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Accessibility</title><circle stroke-linejoin='round' cx='256' cy='56' r='40' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' d='M204.23 274.44c2.9-18.06 4.2-35.52-.5-47.59-4-10.38-12.7-16.19-23.2-20.15L88 176.76c-12-4-23.21-10.7-24-23.94-1-17 14-28 29-24 0 0 88 31.14 163 31.14s162-31 162-31c18-5 30 9 30 23.79 0 14.21-11 19.21-24 23.94l-88 31.91c-8 3-21 9-26 18.18-6 10.75-5 29.53-2.1 47.59l5.9 29.63 37.41 163.9c2.8 13.15-6.3 25.44-19.4 27.74S308 489 304.12 476.28l-37.56-115.93q-2.71-8.34-4.8-16.87L256 320l-5.3 21.65q-2.52 10.35-5.8 20.48L208 476.18c-4 12.85-14.5 21.75-27.6 19.46s-22.4-15.59-19.46-27.74l37.39-163.83z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const accessibilitySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Accessibility</title><path d='M448 112c-66.82 17.92-119.55 32-192 32s-125.18-14.08-192-32l-16 51c48 20.53 96.71 35.16 147.2 53.2L144 496l56.4 16L246 336h20l45.6 176 56.4-16-51.2-279.8C367.26 199.93 416 183.53 464 164zM256 112a56 56 0 1156-56 56.06 56.06 0 01-56 56z'/></svg>\"\nexport const add = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Add</title><path stroke-linecap='round' stroke-linejoin='round' d='M256 112v288M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const addCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Add Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm80 224h-64v64a16 16 0 01-32 0v-64h-64a16 16 0 010-32h64v-64a16 16 0 0132 0v64h64a16 16 0 010 32z'/></svg>\"\nexport const addCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Add Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 176v160M336 256H176' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const addCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Add Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm96 224h-80v80h-32v-80h-80v-32h80v-80h32v80h80z'/></svg>\"\nexport const addOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Add</title><path stroke-linecap='round' stroke-linejoin='round' d='M256 112v288M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const addSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Add</title><path stroke-linecap='square' stroke-linejoin='round' d='M256 112v288M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const airplane = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Airplane</title><path d='M186.62 464H160a16 16 0 01-14.57-22.6l64.46-142.25L113.1 297l-35.3 42.77C71.07 348.23 65.7 352 52 352H34.08a17.66 17.66 0 01-14.7-7.06c-2.38-3.21-4.72-8.65-2.44-16.41l19.82-71c.15-.53.33-1.06.53-1.58a.38.38 0 000-.15 14.82 14.82 0 01-.53-1.59l-19.84-71.45c-2.15-7.61.2-12.93 2.56-16.06a16.83 16.83 0 0113.6-6.7H52c10.23 0 20.16 4.59 26 12l34.57 42.05 97.32-1.44-64.44-142A16 16 0 01160 48h26.91a25 25 0 0119.35 9.8l125.05 152 57.77-1.52c4.23-.23 15.95-.31 18.66-.31C463 208 496 225.94 496 256c0 9.46-3.78 27-29.07 38.16-14.93 6.6-34.85 9.94-59.21 9.94-2.68 0-14.37-.08-18.66-.31l-57.76-1.54-125.36 152a25 25 0 01-19.32 9.75z'/></svg>\"\nexport const airplaneOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Airplane</title><path d='M407.72 224c-3.4 0-14.79.1-18 .3l-64.9 1.7a1.83 1.83 0 01-1.69-.9L193.55 67.56a9 9 0 00-6.66-3.56H160l73 161a2.35 2.35 0 01-2.26 3.35l-121.69 1.8a8.06 8.06 0 01-6.6-3.1l-37-45c-3-3.9-8.62-6-13.51-6H33.08c-1.29 0-1.1 1.21-.75 2.43l19.84 71.42a16.3 16.3 0 010 11.9L32.31 333c-.59 1.95-.52 3 1.77 3H52c8.14 0 9.25-1.06 13.41-6.3l37.7-45.7a8.19 8.19 0 016.6-3.1l120.68 2.7a2.7 2.7 0 012.43 3.74L160 448h26.64a9 9 0 006.65-3.55L323.14 287c.39-.6 2-.9 2.69-.9l63.9 1.7c3.3.2 14.59.3 18 .3C452 288.1 480 275.93 480 256s-27.88-32-72.28-32z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const airplaneSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Airplane</title><path d='M407.72 208c-2.72 0-14.44.08-18.67.31l-57.77 1.52L198.06 48h-62.81l74.59 164.61-97.31 1.44L68.25 160H16.14l20.61 94.18c.15.54.33 1.07.53 1.59a.26.26 0 010 .15 15.42 15.42 0 00-.53 1.58L15.86 352h51.78l45.45-55 96.77 2.17L135.24 464h63l133-161.75 57.77 1.54c4.29.23 16 .31 18.66.31 24.35 0 44.27-3.34 59.21-9.94C492.22 283 496 265.46 496 256c0-30.06-33-48-88.28-48zm-71.29 87.9z'/></svg>\"\nexport const alarm = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alarm</title><path d='M153.59 110.46A21.41 21.41 0 00152.48 79 62.67 62.67 0 00112 64l-3.27.09h-.48C74.4 66.15 48 95.55 48.07 131c0 19 8 29.06 14.32 37.11a20.61 20.61 0 0014.7 7.8c.26 0 .7.05 2 .05a19.06 19.06 0 0013.75-5.89zM403.79 64.11l-3.27-.1H400a62.67 62.67 0 00-40.52 15 21.41 21.41 0 00-1.11 31.44l60.77 59.65a19.06 19.06 0 0013.79 5.9c1.28 0 1.72 0 2-.05a20.61 20.61 0 0014.69-7.8c6.36-8.05 14.28-18.08 14.32-37.11.06-35.49-26.34-64.89-60.15-66.93z'/><path d='M256.07 96c-97 0-176 78.95-176 176a175.23 175.23 0 0040.81 112.56l-36.12 36.13a16 16 0 1022.63 22.62l36.12-36.12a175.63 175.63 0 00225.12 0l36.13 36.12a16 16 0 1022.63-22.62l-36.13-36.13A175.17 175.17 0 00432.07 272c0-97-78.95-176-176-176zm16 176a16 16 0 01-16 16h-80a16 16 0 010-32h64v-96a16 16 0 0132 0z'/></svg>\"\nexport const alarmOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alarm</title><path d='M416.07 272a160 160 0 10-160 160 160 160 0 00160-160zM142.12 91.21A46.67 46.67 0 00112 80l-2.79.08C83.66 81.62 64 104 64.07 131c0 13.21 4.66 19.37 10.88 27.23a4.55 4.55 0 003.24 1.77h.88a3.23 3.23 0 002.54-1.31L142.38 99a5.38 5.38 0 001.55-4 5.26 5.26 0 00-1.81-3.79zM369.88 91.21A46.67 46.67 0 01400 80l2.79.08C428.34 81.62 448 104 447.93 131c0 13.21-4.66 19.37-10.88 27.23a4.55 4.55 0 01-3.24 1.76h-.88a3.23 3.23 0 01-2.54-1.31L369.62 99a5.38 5.38 0 01-1.55-4 5.26 5.26 0 011.81-3.79z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256.07 160v112h-80M416.07 432l-40-40M96.07 432l40-40' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const alarmSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alarm</title><path d='M403.79 64.11l-3.27-.1H400c-14.73 0-28.55 5.91-40.52 15S344 96 344 96l88 86s11.25-5.71 17.61-13.85 14.28-18.08 14.32-37.11c.07-35.49-26.33-64.89-60.14-66.93zM108.21 64.11l3.27-.1h.52c14.73 0 28.55 5.91 40.52 15S168 96 168 96l-88 86s-11.25-5.71-17.61-13.85S48.11 150.07 48.07 131C48 95.55 74.4 66.15 108.21 64.11z'/><path d='M391.3 384.6a.06.06 0 010-.08C425 344 441 288.24 427 229.23c-13.64-57.52-72.67-115.69-130.34-128.66C182 74.79 80.07 161.71 80.07 272a175.15 175.15 0 0040.78 112.52.06.06 0 010 .08L73 432a.06.06 0 000 .08l23 22.51a.06.06 0 00.08 0l47.43-47.37a.06.06 0 01.08 0 175.64 175.64 0 00225.05 0h.07L416 454.59a.06.06 0 00.08 0L440 432zM272.07 288h-112-.07v-31.9l.05-.05h80V144h32z'/></svg>\"\nexport const albums = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Albums</title><path d='M368 96H144a16 16 0 010-32h224a16 16 0 010 32zM400 144H112a16 16 0 010-32h288a16 16 0 010 32zM419.13 448H92.87A44.92 44.92 0 0148 403.13V204.87A44.92 44.92 0 0192.87 160h326.26A44.92 44.92 0 01464 204.87v198.26A44.92 44.92 0 01419.13 448z'/></svg>\"\nexport const albumsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Albums</title><rect x='64' y='176' width='384' height='256' rx='28.87' ry='28.87' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M144 80h224M112 128h288' class='ionicon-stroke-width'/></svg>\"\nexport const albumsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Albums</title><path d='M128 64h256v32H128zM96 112h320v32H96zM464 448H48V160h416z'/></svg>\"\nexport const alert = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alert</title><path d='M256 80c-8.66 0-16.58 7.36-16 16l8 216a8 8 0 008 8h0a8 8 0 008-8l8-216c.58-8.64-7.34-16-16-16z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='416' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const alertCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alert Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm0 319.91a20 20 0 1120-20 20 20 0 01-20 20zm21.72-201.15l-5.74 122a16 16 0 01-32 0l-5.74-121.94v-.05a21.74 21.74 0 1143.44 0z'/></svg>\"\nexport const alertCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alert Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M250.26 166.05L256 288l5.73-121.95a5.74 5.74 0 00-5.79-6h0a5.74 5.74 0 00-5.68 6z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 367.91a20 20 0 1120-20 20 20 0 01-20 20z'/></svg>\"\nexport const alertCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alert Circle</title><path d='M240 304h32l6-160h-44l6 160z' class='ionicon-fill-none'/><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm20 319.91h-40v-40h40zM272 304h-32l-6-160h44z'/></svg>\"\nexport const alertOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alert</title><path d='M256 80c-8.66 0-16.58 7.36-16 16l8 216a8 8 0 008 8h0a8 8 0 008-8l8-216c.58-8.64-7.34-16-16-16z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='416' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const alertSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Alert</title><path stroke-linecap='square' stroke-miterlimit='10' d='M240 80l8 240h16l8-240h-32zM240 400h32v32h-32z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const americanFootball = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>American Football</title><path d='M122.06 122.06c-44.37 44.37-66.71 100.61-78 145.28l200.6 200.56c44.67-11.25 100.91-33.59 145.28-78s66.71-100.61 78-145.28L267.34 44.1c-44.67 11.25-100.91 33.59-145.28 77.96zm256.73 256.72zM300.65 189L323 166.71A15.78 15.78 0 01345.29 189L323 211.35l11.16 11.17a15.78 15.78 0 01-22.32 22.32l-11.16-11.16L278.32 256l11.16 11.16a15.78 15.78 0 11-22.32 22.32L256 278.32l-22.32 22.33 11.16 11.16a15.78 15.78 0 11-22.32 22.32L211.35 323 189 345.29A15.78 15.78 0 01166.71 323L189 300.65l-11.16-11.17a15.78 15.78 0 0122.32-22.32l11.16 11.16L233.68 256l-11.16-11.16a15.78 15.78 0 1122.32-22.32L256 233.68l22.32-22.33-11.16-11.16a15.78 15.78 0 0122.32-22.32zM476.57 199.63c7.31-54.53 4-120.26-20-144.21s-89.68-27.3-144.21-20c-2.51.34-5.16.72-7.91 1.15l171 171c.4-2.78.78-5.43 1.12-7.94zM35.43 312.37c-7.31 54.53-4 120.26 20 144.21C72.17 473.33 109.34 480 148.84 480a387 387 0 0050.79-3.43c2.51-.34 5.16-.72 7.91-1.15l-171-171c-.39 2.79-.77 5.44-1.11 7.95z'/></svg>\"\nexport const americanFootballOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>American Football</title><ellipse cx='256' cy='256' rx='267.57' ry='173.44' transform='rotate(-45 256 256.002)' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M334.04 177.96L177.96 334.04M278.3 278.3l-44.6-44.6M322.89 233.7l-44.59-44.59M456.68 211.4L300.6 55.32M211.4 456.68L55.32 300.6M233.7 322.89l-44.59-44.59' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const americanFootballSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>American Football</title><path d='M120.9 120.51c-44.75 44.56-67.29 101.05-78.64 145.9l202.31 201.44c45.05-11.3 101.78-33.74 146.53-78.3s67.29-101.05 78.64-145.91L267.43 42.21C222.38 53.51 165.65 76 120.9 120.51zm259 257.83zm-45-224.2l22.52 22.42-33.78 33.63 22.52 22.42L323.55 255 301 232.61 278.52 255 301 277.45l-22.51 22.42L256 277.45l-22.52 22.42L256 322.29l-22.52 22.42L211 322.29l-33.78 33.63-22.55-22.42 33.78-33.63-22.52-22.42L188.45 255 211 277.45 233.48 255 211 232.61l22.51-22.42L256 232.61l22.52-22.42L256 187.77l22.52-22.42L301 187.77zM478.48 198.41C485.85 143.65 464 48.05 464 48.05s-96.14-21.88-151.14-14.54c-2.54.33-5.21.72-8 1.14l172.47 171.71c.43-2.76.81-5.42 1.15-7.95zM33.52 311.65C26.15 366.41 48.05 464 48.05 464s60 16 99.86 16a391.92 391.92 0 0051.23-3.45c2.54-.33 5.21-.72 8-1.15L34.67 303.7c-.43 2.76-.81 5.42-1.15 7.95z'/></svg>\"\nexport const analytics = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Analytics</title><path d='M456 128a40 40 0 00-37.23 54.6l-84.17 84.17a39.86 39.86 0 00-29.2 0l-60.17-60.17a40 40 0 10-74.46 0L70.6 306.77a40 40 0 1022.63 22.63L193.4 229.23a39.86 39.86 0 0029.2 0l60.17 60.17a40 40 0 1074.46 0l84.17-84.17A40 40 0 10456 128z'/></svg>\"\nexport const analyticsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Analytics</title><path stroke-linecap='round' stroke-linejoin='round' d='M344 280l88-88M232 216l64 64M80 320l104-104' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='456' cy='168' r='24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='320' cy='304' r='24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='208' cy='192' r='24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='56' cy='344' r='24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const analyticsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Analytics</title><path d='M450 128a46 46 0 00-44.11 59l-71.37 71.36a45.88 45.88 0 00-29 0l-52.91-52.91a46 46 0 10-89.12 0L75 293.88A46.08 46.08 0 10106.11 325l87.37-87.36a45.85 45.85 0 0029 0l52.92 52.92a46 46 0 1089.12 0L437 218.12A46 46 0 10450 128z'/></svg>\"\nexport const aperture = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Aperture</title><path d='M250.54 129.17l-67.8-67.8A209.65 209.65 0 0086.32 136h161.4a4 4 0 002.82-6.83zM167.72 168H67.63a207.34 207.34 0 00-16.15 125.9l119.06-119.07a4 4 0 00-2.82-6.83zM344 167.72V67.56a207.82 207.82 0 00-125.89-16.08l119.06 119.06a4 4 0 006.83-2.82zM460.52 218.1L341.46 337.17a4 4 0 002.82 6.83h100.09a207.34 207.34 0 0016.15-125.9zM382.83 250.54l67.83-67.82A209.08 209.08 0 00376 86.2v161.52a4 4 0 006.83 2.82zM221.68 341.77a8 8 0 005.54 2.23h59.66a8 8 0 005.7-2.39l49.18-50a8 8 0 002.3-5.62l-.06-60.81a8 8 0 00-2.38-5.69l-50-49.25a8 8 0 00-5.63-2.3l-60.84.06a8 8 0 00-5.69 2.38l-49.25 50a8 8 0 00-2.3 5.63l.06 60.78a8 8 0 002.45 5.76zM261.46 382.83l67.8 67.8A209.65 209.65 0 00425.68 376h-161.4a4 4 0 00-2.82 6.83zM168 344.28v100.16a207.82 207.82 0 00125.89 16.08L174.83 341.46a4 4 0 00-6.83 2.82zM129.17 261.46l-67.83 67.83A209.1 209.1 0 00136 425.8V264.28a4 4 0 00-6.83-2.82z'/></svg>\"\nexport const apertureOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Aperture</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M360 94.59V296M443.13 212.87L296 360M417.41 360H216M299.13 443.13l-144-144M152 416V216M68.87 299.13l144-144M94.59 152H288M212.87 68.87L360 216' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const apertureSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Aperture</title><path d='M216 48l129.49 128.18V48H216zM181.47 58.38L80 134h176l-74.53-75.62zM336 344h128V216L336 344zM454 182L378 80v176l76-74zM48 166v128l128-128H48zM330 454l102-76H256l74 76zM58 330l76 102V256l-76 74zM345.49 222.12l-55.55-55.46h-67.88l-55.55 55.46v67.76l55.62 55.52c.44 0 .88-.06 1.33-.06h66.48l55.55-55.46zM165.98 336.09L166 464h128L165.98 336.09z'/></svg>\"\nexport const apps = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Apps</title><path d='M104 160a56 56 0 1156-56 56.06 56.06 0 01-56 56zM256 160a56 56 0 1156-56 56.06 56.06 0 01-56 56zM408 160a56 56 0 1156-56 56.06 56.06 0 01-56 56zM104 312a56 56 0 1156-56 56.06 56.06 0 01-56 56zM256 312a56 56 0 1156-56 56.06 56.06 0 01-56 56zM408 312a56 56 0 1156-56 56.06 56.06 0 01-56 56zM104 464a56 56 0 1156-56 56.06 56.06 0 01-56 56zM256 464a56 56 0 1156-56 56.06 56.06 0 01-56 56zM408 464a56 56 0 1156-56 56.06 56.06 0 01-56 56z'/></svg>\"\nexport const appsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Apps</title><rect x='64' y='64' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='216' y='64' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='368' y='64' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='64' y='216' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='216' y='216' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='368' y='216' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='64' y='368' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='216' y='368' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='368' y='368' width='80' height='80' rx='40' ry='40' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const appsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Apps</title><rect x='48' y='48' width='112' height='112' rx='8' ry='8'/><rect x='200' y='48' width='112' height='112' rx='8' ry='8'/><rect x='352' y='48' width='112' height='112' rx='8' ry='8'/><rect x='48' y='200' width='112' height='112' rx='8' ry='8'/><rect x='200' y='200' width='112' height='112' rx='8' ry='8'/><rect x='352' y='200' width='112' height='112' rx='8' ry='8'/><rect x='48' y='352' width='112' height='112' rx='8' ry='8'/><rect x='200' y='352' width='112' height='112' rx='8' ry='8'/><rect x='352' y='352' width='112' height='112' rx='8' ry='8'/></svg>\"\nexport const archive = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Archive</title><path d='M64 164v244a56 56 0 0056 56h272a56 56 0 0056-56V164a4 4 0 00-4-4H68a4 4 0 00-4 4zm267 151.63l-63.69 63.68a16 16 0 01-22.62 0L181 315.63c-6.09-6.09-6.65-16-.85-22.38a16 16 0 0123.16-.56L240 329.37V224.45c0-8.61 6.62-16 15.23-16.43A16 16 0 01272 224v105.37l36.69-36.68a16 16 0 0123.16.56c5.8 6.37 5.24 16.29-.85 22.38z'/><rect x='32' y='48' width='448' height='80' rx='32' ry='32'/></svg>\"\nexport const archiveOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Archive</title><path d='M80 152v256a40.12 40.12 0 0040 40h272a40.12 40.12 0 0040-40V152' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='48' y='64' width='416' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M320 304l-64 64-64-64M256 345.89V224' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const archiveSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Archive</title><rect x='32' y='48' width='448' height='80' rx='12' ry='12'/><path d='M64 160v280a24 24 0 0024 24h336a24 24 0 0024-24V160zm192 230.63L169.32 304 192 281.32l48 48.05V208h32v121.37l48.07-48.07 22.61 22.64z'/></svg>\"\nexport const arrowBack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Back</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>\"\nexport const arrowBackCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Back Circle</title><path d='M48 256c0 114.87 93.13 208 208 208s208-93.13 208-208S370.87 48 256 48 48 141.13 48 256zm212.65-91.36a16 16 0 01.09 22.63L208.42 240H342a16 16 0 010 32H208.42l52.32 52.73A16 16 0 11238 347.27l-79.39-80a16 16 0 010-22.54l79.39-80a16 16 0 0122.65-.09z'/></svg>\"\nexport const arrowBackCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Back Circle</title><path stroke-linecap='round' stroke-linejoin='round' d='M249.38 336L170 256l79.38-80M181.03 256H342' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowBackCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Back Circle</title><path d='M48 256c0 114.87 93.13 208 208 208s208-93.13 208-208S370.87 48 256 48 48 141.13 48 256zm224-80.09L208.42 240H358v32H208.42L272 336.09l-22.7 22.54L147.46 256 249.3 153.37z'/></svg>\"\nexport const arrowBackOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Back</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>\"\nexport const arrowBackSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Back</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>\"\nexport const arrowDown = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Down</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>\"\nexport const arrowDownCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Down Circle</title><path d='M256 464c114.87 0 208-93.13 208-208S370.87 48 256 48 48 141.13 48 256s93.13 208 208 208zm-91.36-212.65a16 16 0 0122.63-.09L240 303.58V170a16 16 0 0132 0v133.58l52.73-52.32A16 16 0 11347.27 274l-80 79.39a16 16 0 01-22.54 0l-80-79.39a16 16 0 01-.09-22.65z'/></svg>\"\nexport const arrowDownCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Down Circle</title><path stroke-linecap='round' stroke-linejoin='round' d='M176 262.62L256 342l80-79.38M256 330.97V170' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowDownCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Down Circle</title><path d='M256 464c114.87 0 208-93.13 208-208S370.87 48 256 48 48 141.13 48 256s93.13 208 208 208zm-80.09-224L240 303.58V154h32v149.58L336.09 240l22.54 22.71L256 364.54 153.37 262.7z'/></svg>\"\nexport const arrowDownOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Down</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>\"\nexport const arrowDownSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Down</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>\"\nexport const arrowForward = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Forward</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M268 112l144 144-144 144M392 256H100' class='ionicon-fill-none'/></svg>\"\nexport const arrowForwardCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Forward Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zm-212.65 91.36a16 16 0 01-.09-22.63L303.58 272H170a16 16 0 010-32h133.58l-52.32-52.73A16 16 0 11274 164.73l79.39 80a16 16 0 010 22.54l-79.39 80a16 16 0 01-22.65.09z'/></svg>\"\nexport const arrowForwardCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Forward Circle</title><path stroke-linecap='round' stroke-linejoin='round' d='M262.62 336L342 256l-79.38-80M330.97 256H170' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 448c106 0 192-86 192-192S362 64 256 64 64 150 64 256s86 192 192 192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowForwardCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Forward Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zm-224 80.09L303.58 272H154v-32h149.58L240 175.91l22.71-22.54L364.54 256 262.7 358.63z'/></svg>\"\nexport const arrowForwardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Forward</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M268 112l144 144-144 144M392 256H100' class='ionicon-fill-none'/></svg>\"\nexport const arrowForwardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Forward</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M268 112l144 144-144 144M392 256H100' class='ionicon-fill-none'/></svg>\"\nexport const arrowRedo = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Redo</title><path d='M58.79 439.13A16 16 0 0148 424c0-73.1 14.68-131.56 43.65-173.77 35-51 90.21-78.46 164.35-81.87V88a16 16 0 0127.05-11.57l176 168a16 16 0 010 23.14l-176 168A16 16 0 01256 424v-79.77c-45 1.36-79 8.65-106.07 22.64-29.25 15.12-50.46 37.71-73.32 67a16 16 0 01-17.82 5.28z'/></svg>\"\nexport const arrowRedoCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Redo Circle</title><path d='M48 256c0 114.87 93.13 208 208 208s208-93.13 208-208S370.87 48 256 48 48 141.13 48 256zm96 66.67c5.45-61.45 34.14-117.09 122.87-117.09v-37.32a8.32 8.32 0 0114-6L365.42 242a8.2 8.2 0 010 11.94L281 333.71a8.32 8.32 0 01-14-6v-37.29c-57.07 0-84.51 13.47-108.58 38.68-5.49 5.65-15.07 1.32-14.42-6.43z'/></svg>\"\nexport const arrowRedoCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Redo Circle</title><path d='M266.91 327.74v-37.32c-57.07 0-84.51 13.47-108.58 38.68-5.4 5.65-15 1.32-14.29-6.43 5.45-61.45 34.14-117.09 122.87-117.09v-37.32a8.32 8.32 0 0114-6L365.42 242a8.2 8.2 0 010 11.94L281 333.71a8.32 8.32 0 01-14.09-5.97z'/><path d='M64 256c0 106 86 192 192 192s192-86 192-192S362 64 256 64 64 150 64 256z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowRedoCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Redo Circle</title><path d='M48 256c0 114.87 93.13 208 208 208s208-93.13 208-208S370.87 48 256 48 48 141.13 48 256zm98 88c0-68.13 22.67-137.14 119.17-137.14V152L366 248l-100.83 96v-54.86c-66.69 0-91.32 19.29-119.17 54.86z'/></svg>\"\nexport const arrowRedoOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Redo</title><path d='M448 256L272 88v96C103.57 184 64 304.77 64 424c48.61-62.24 91.6-96 208-96v96z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowRedoSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Redo</title><path d='M48 399.26C48 335.19 62.44 284 90.91 247c34.38-44.67 88.68-68.77 161.56-71.75V72L464 252 252.47 432V329.35c-44.25 1.19-77.66 7.58-104.27 19.84-28.75 13.25-49.6 33.05-72.08 58.7L48 440z'/></svg>\"\nexport const arrowUndo = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Undo</title><path d='M448 440a16 16 0 01-12.61-6.15c-22.86-29.27-44.07-51.86-73.32-67C335 352.88 301 345.59 256 344.23V424a16 16 0 01-27 11.57l-176-168a16 16 0 010-23.14l176-168A16 16 0 01256 88v80.36c74.14 3.41 129.38 30.91 164.35 81.87C449.32 292.44 464 350.9 464 424a16 16 0 01-16 16z'/></svg>\"\nexport const arrowUndoCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Undo Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm97.67 281.1c-24.07-25.21-51.51-38.68-108.58-38.68v37.32a8.32 8.32 0 01-14.05 6L146.58 254a8.2 8.2 0 010-11.94L231 162.29a8.32 8.32 0 0114.05 6v37.32c88.73 0 117.42 55.64 122.87 117.09.73 7.72-8.85 12.05-14.25 6.4z'/></svg>\"\nexport const arrowUndoCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Undo Circle</title><path d='M245.09 327.74v-37.32c57.07 0 84.51 13.47 108.58 38.68 5.4 5.65 15 1.32 14.29-6.43-5.45-61.45-34.14-117.09-122.87-117.09v-37.32a8.32 8.32 0 00-14.05-6L146.58 242a8.2 8.2 0 000 11.94L231 333.71a8.32 8.32 0 0014.09-5.97z'/><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowUndoCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Undo Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm-9.17 241.14V344L146 248l100.83-96v54.86c96.5 0 119.17 69 119.17 137.14-27.85-35.57-52.48-54.86-119.17-54.86z'/></svg>\"\nexport const arrowUndoOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Undo</title><path d='M240 424v-96c116.4 0 159.39 33.76 208 96 0-119.23-39.57-240-208-240V88L64 256z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowUndoSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Undo</title><path d='M464 440l-28.12-32.11c-22.48-25.65-43.33-45.45-72.08-58.7-26.61-12.26-60-18.65-104.27-19.84V432L48 252 259.53 72v103.21c72.88 3 127.18 27.08 161.56 71.75C449.56 284 464 335.19 464 399.26z'/></svg>\"\nexport const arrowUp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Up</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 244l144-144 144 144M256 120v292' class='ionicon-fill-none'/></svg>\"\nexport const arrowUpCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Up Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm91.36 212.65a16 16 0 01-22.63.09L272 208.42V342a16 16 0 01-32 0V208.42l-52.73 52.32A16 16 0 11164.73 238l80-79.39a16 16 0 0122.54 0l80 79.39a16 16 0 01.09 22.65z'/></svg>\"\nexport const arrowUpCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Up Circle</title><path stroke-linecap='round' stroke-linejoin='round' d='M176 249.38L256 170l80 79.38M256 181.03V342' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const arrowUpCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Up Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm80.09 224L272 208.42V358h-32V208.42L175.91 272l-22.54-22.7L256 147.46 358.63 249.3z'/></svg>\"\nexport const arrowUpOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Up</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 244l144-144 144 144M256 120v292' class='ionicon-fill-none'/></svg>\"\nexport const arrowUpSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Arrow Up</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M112 244l144-144 144 144M256 120v292' class='ionicon-fill-none'/></svg>\"\nexport const at = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>At</title><path d='M320 254.27c-4.5 51-40.12 80-80.55 80s-67.34-35.82-63.45-80 37.12-80 77.55-80 70.33 36 66.45 80z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M319.77 415.77c-28.56 12-47.28 14.5-79.28 14.5-97.2 0-169-78.8-160.49-176s94.31-176 191.51-176C381 78.27 441.19 150 432.73 246c-6.31 71.67-52.11 92.32-76.09 88.07-22.56-4-41.18-24.42-37.74-63.5l8.48-96.25' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const atCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>At Circle</title><path d='M255.46 48.74c-114.84 0-208 93.11-208 208s93.12 208 208 208 208-93.12 208-208-93.15-208-208-208zM380.28 252c-2.85 32.63-16.79 49.7-28 58.26S327.61 322.58 316 320.5a41.61 41.61 0 01-26.82-17.19 62.06 62.06 0 01-44 17.57 51.66 51.66 0 01-38.55-16.83c-11.38-12.42-17-30.36-15.32-49.23 3-35 30.91-57.39 56.87-61.48 27.2-4.29 52.23 6.54 62.9 19.46l3.85 4.66-6.34 50.38c-1.19 14.34 3.28 23.48 12.29 25.1 2.39.42 8.1-.13 14.37-4.93 6.72-5.15 15.14-16 17.1-38.47 2.35-26.54-4.35-49.19-19.25-65.49-15.49-16.9-39.09-25.84-68.23-25.84-54 0-101.81 44.43-106.58 99-2.28 26.2 5.67 50.68 22.4 68.93 16.36 17.86 39.31 27.74 64.66 27.74 19 0 30.61-2.05 49.48-8.78a14 14 0 019.4 26.38c-21.82 7.77-36.68 10.4-58.88 10.4-33.28 0-63.57-13.06-85.3-36.77C138 321 127.42 288.94 130.4 254.82c2.91-33.33 18.45-64.63 43.77-88.12s57.57-36.49 90.7-36.49c37.2 0 67.93 12.08 88.87 34.93 20.09 21.91 29.51 52.75 26.54 86.86z'/><path d='M252.57 221c-14.83 2.33-31.56 15.84-33.34 36.26-1 11.06 2 21.22 8.07 27.87a23.65 23.65 0 0017.91 7.75c20.31 0 34.73-14.94 36.75-38.06a14 14 0 01.34-2.07l3.2-25.45a49.61 49.61 0 00-32.93-6.3z'/></svg>\"\nexport const atCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>At Circle</title><path d='M448.08 256.08c0-106-86-192-192-192s-192 86-192 192 86 192 192 192 192-85.97 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M300.81 358.29c-20.83 7.42-34.05 9.59-54.19 9.59-61.17 0-106.39-50.07-101-111.84S205 144.21 266.14 144.21c68.92 0 106.79 45.55 101.47 106.55-4 45.54-32.8 58.66-47.89 56-14.2-2.55-25.92-15.52-23.75-40.35l5.62-44.66c-7.58-9.17-28.11-18-49.93-14.54C231.77 210.3 209 228 206.56 256s14.49 50.84 39.93 50.84 47.86-18.39 50.69-50.84' stroke-linecap='round' stroke-miterlimit='10' stroke-width='28' class='ionicon-fill-none'/></svg>\"\nexport const atCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>At Circle</title><path d='M256.41 48.74c-114.85 0-208 93.11-208 208s93.12 208 208 208 208-93.12 208-208-93.16-208-208-208zM381.22 252c-2.85 32.63-16.78 49.7-28 58.26s-24.69 12.34-36.33 10.26a41.63 41.63 0 01-27-17.52 60.84 60.84 0 01-43.72 17.9 51.65 51.65 0 01-38.55-16.83c-11.39-12.42-17-30.36-15.33-49.23 3.05-35 30.92-57.39 56.87-61.48 27.21-4.29 52.24 6.54 62.91 19.46l3.84 4.66-6.34 50.38c-1.19 14.34 3.29 23.48 12.29 25.1 2.39.42 8.11-.13 14.38-4.93 6.72-5.15 15.14-16 17.1-38.47 2.32-26.55-4.35-49.19-19.28-65.49-15.5-16.9-39.1-25.84-68.24-25.84-54 0-101.81 44.43-106.57 99-2.29 26.2 5.66 50.68 22.39 68.93C198 344 221 353.88 246.29 353.88c19 0 30.61-2.05 49.49-8.78l13.22-4.69 9.39 26.37-13.19 4.7c-21.82 7.77-36.68 10.4-58.88 10.4-33.28 0-63.57-13.06-85.3-36.77-22.09-24.11-32.62-56.17-29.65-90.29 2.91-33.33 18.46-64.63 43.77-88.12s57.57-36.49 90.7-36.49c37.2 0 67.94 12.08 88.88 34.93 20.05 21.91 29.48 52.75 26.5 86.86z'/><path d='M253.51 221c-14.83 2.33-31.55 15.84-33.34 36.26-1 11.06 2 21.22 8.08 27.87a23.63 23.63 0 0017.91 7.75c19.7 0 33.8-14.79 36.8-38.59l1.75-13.89h.09l1.65-13.11a49.63 49.63 0 00-32.94-6.3z'/></svg>\"\nexport const atOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>At</title><path d='M320 254.27c-4.5 51-40.12 80-80.55 80s-67.34-35.82-63.45-80 37.12-80 77.55-80 70.33 36 66.45 80z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M319.77 415.77c-28.56 12-47.28 14.5-79.28 14.5-97.2 0-169-78.8-160.49-176s94.31-176 191.51-176C381 78.27 441.19 150 432.73 246c-6.31 71.67-52.11 92.32-76.09 88.07-22.56-4-41.18-24.42-37.74-63.5l8.48-96.25' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const atSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>At</title><path d='M407.6 115.78c-32.07-35-79.47-53.51-137.09-53.51-51 0-100.69 19.8-139.82 55.76s-63.13 83.84-67.63 134.83c-4.55 51.67 11.41 100.29 44.94 136.9 33.37 36.44 80.07 56.51 131.49 56.51 32.52 0 53.61-2.36 85.48-15.75l14.75-6.2-12.4-29.5-14.75 6.18c-27.15 11.4-43.78 13.25-73.08 13.25-42.34 0-80.65-16.38-107.89-46.12-27.4-29.92-40.42-69.86-36.66-112.48 7.84-89 86.6-161.4 175.57-161.4 48.4 0 87.65 14.91 113.49 43.13 24.61 26.87 35.6 63.92 31.79 107.15-3.29 37.35-17.76 55.74-29.32 64.6-11 8.44-22 10.18-28 9.11-17.68-3.13-26.87-20.46-24.59-46.29l9.93-109.12L311.9 160l-2 22.29a79.69 79.69 0 00-57.32-24c-23.8 0-46.54 10.07-64 28.37-16.77 17.53-27.23 41.05-29.45 66.22-2.45 27.87 5.75 54.34 22.51 72.64a76.14 76.14 0 0056.88 24.77A93 93 0 00310 318a60 60 0 0042.88 31.81c16.89 3 36.73-2.69 53.08-15.21 30.19-23.13 39.36-60.19 41.74-87.2 4.52-51.7-9.7-98.4-40.1-131.62zm-126.34 186a62.19 62.19 0 01-42.81 16.53 43.94 43.94 0 01-33.28-14.38c-10.71-11.7-15.9-29.27-14.23-48.22 3.23-36.68 30.29-65.4 61.61-65.4a48.16 48.16 0 0135.88 15.82c10.87 11.87 16.2 28.87 14.63 46.73-1.78 20.28-9.33 37.14-21.8 48.88z'/></svg>\"\nexport const attach = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Attach</title><path d='M216.08 192v143.85a40.08 40.08 0 0080.15 0l.13-188.55a67.94 67.94 0 10-135.87 0v189.82a95.51 95.51 0 10191 0V159.74' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const attachOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Attach</title><path d='M216.08 192v143.85a40.08 40.08 0 0080.15 0l.13-188.55a67.94 67.94 0 10-135.87 0v189.82a95.51 95.51 0 10191 0V159.74' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const attachSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Attach</title><path d='M216.08 192v143.55a40.08 40.08 0 0080.15 0l.13-188.55a67.94 67.94 0 10-135.87 0v189.82a95.51 95.51 0 00191 0V159.44' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const backspace = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Backspace</title><path d='M403.13 96H156.87a44.9 44.9 0 00-33.68 15.27 15.88 15.88 0 00-1.91 2.7L32 247.75a16 16 0 000 16.5l89.15 133.57a16.24 16.24 0 002 2.88 44.89 44.89 0 0033.7 15.3h246.28A44.92 44.92 0 00448 371.13V140.87A44.92 44.92 0 00403.13 96zM348 311a16 16 0 11-22.63 22.62L271.67 280 218 333.65A16 16 0 01195.35 311L249 257.33l-53.69-53.69A16 16 0 01218 181l53.69 53.7 53.67-53.7A16 16 0 01348 203.64l-53.7 53.69z'/></svg>\"\nexport const backspaceOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Backspace</title><path d='M135.19 390.14a28.79 28.79 0 0021.68 9.86h246.26A29 29 0 00432 371.13V140.87A29 29 0 00403.13 112H156.87a28.84 28.84 0 00-21.67 9.84v0L46.33 256l88.86 134.11z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M336.67 192.33L206.66 322.34M336.67 322.34L206.66 192.33M336.67 192.33L206.66 322.34M336.67 322.34L206.66 192.33' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const backspaceSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Backspace</title><path d='M144 96L32 256l112 160h304V96zm215.3 226.34L336.67 345l-65-65-65 65L184 322.34l65-65-65-65 22.63-22.63 65 65 65-65 22.63 22.63-65 65z'/></svg>\"\nexport const bag = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag</title><path d='M454.65 169.4A31.82 31.82 0 00432 160h-64v-16a112 112 0 00-224 0v16H80a32 32 0 00-32 32v216c0 39 33 72 72 72h272a72.22 72.22 0 0050.48-20.55 69.48 69.48 0 0021.52-50.2V192a31.75 31.75 0 00-9.35-22.6zM176 144a80 80 0 01160 0v16H176z'/></svg>\"\nexport const bagAdd = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Add</title><path d='M454.66 169.4A31.86 31.86 0 00432 160h-64v-16a112 112 0 00-224 0v16H80a32 32 0 00-32 32v216c0 39 33 72 72 72h272a72.22 72.22 0 0050.48-20.55 69.48 69.48 0 0021.52-50.2V192a31.78 31.78 0 00-9.34-22.6zM320 336h-48v48a16 16 0 01-32 0v-48h-48a16 16 0 010-32h48v-48a16 16 0 0132 0v48h48a16 16 0 010 32zm16-176H176v-16a80 80 0 01160 0z'/></svg>\"\nexport const bagAddOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Add</title><path stroke-linecap='round' stroke-linejoin='round' d='M256 256v128M320 320H192M80 176a16 16 0 00-16 16v216c0 30.24 25.76 56 56 56h272c30.24 0 56-24.51 56-54.75V192a16 16 0 00-16-16zM160 176v-32a96 96 0 0196-96h0a96 96 0 0196 96v32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bagAddSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Add</title><path d='M460 160h-88v-12A116.13 116.13 0 00258.89 32h-5.78A116.13 116.13 0 00140 148v12H52a4 4 0 00-4 4v300a16 16 0 0016 16h384a16 16 0 0016-16V164a4 4 0 00-4-4zm-280-11c0-41.84 33.41-76.56 75.25-77A76.08 76.08 0 01332 148v12H180zm156 187h-64v64h-32v-64h-64v-32h64v-64h32v64h64z'/></svg>\"\nexport const bagCheck = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Check</title><path d='M454.65 169.4A31.82 31.82 0 00432 160h-64v-16a112 112 0 00-224 0v16H80a32 32 0 00-32 32v216c0 39 33 72 72 72h272a72.22 72.22 0 0050.48-20.55 69.48 69.48 0 0021.52-50.2V192a31.75 31.75 0 00-9.35-22.6zM332.49 274l-89.6 112a16 16 0 01-12.23 6h-.26a16 16 0 01-12.16-5.6l-38.4-44.88a16 16 0 1124.32-20.8L230 350.91 307.51 254a16 16 0 0125 20zM336 160H176v-16a80 80 0 01160 0z'/></svg>\"\nexport const bagCheckOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Check</title><path stroke-linecap='round' stroke-linejoin='round' d='M320 264l-89.6 112-38.4-44.88' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M80 176a16 16 0 00-16 16v216c0 30.24 25.76 56 56 56h272c30.24 0 56-24.51 56-54.75V192a16 16 0 00-16-16zM160 176v-32a96 96 0 0196-96h0a96 96 0 0196 96v32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bagCheckSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Check</title><path d='M460 160h-88v-12A116.13 116.13 0 00258.89 32h-5.78A116.13 116.13 0 00140 148v12H52a4 4 0 00-4 4v300a16 16 0 0016 16h384a16 16 0 0016-16V164a4 4 0 00-4-4zm-280-11c0-41.84 33.41-76.56 75.25-77A76.08 76.08 0 01332 148v12H180zm50.81 252.12l-61.37-71.72 24.31-20.81L230 350.91l87.51-109.4 25 20z'/></svg>\"\nexport const bagHandle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Handle</title><path d='M454.65 169.4A31.82 31.82 0 00432 160h-64v-16a112 112 0 00-224 0v16H80a32 32 0 00-32 32v216c0 39 33 72 72 72h272a72.22 72.22 0 0050.48-20.55 69.48 69.48 0 0021.52-50.2V192a31.75 31.75 0 00-9.35-22.6zM176 144a80 80 0 01160 0v16H176zm192 96a112 112 0 01-224 0v-16a16 16 0 0132 0v16a80 80 0 00160 0v-16a16 16 0 0132 0z'/></svg>\"\nexport const bagHandleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Handle</title><path d='M80 176a16 16 0 00-16 16v216c0 30.24 25.76 56 56 56h272c30.24 0 56-24.51 56-54.75V192a16 16 0 00-16-16zM160 176v-32a96 96 0 0196-96h0a96 96 0 0196 96v32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 224v16a96 96 0 0096 96h0a96 96 0 0096-96v-16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bagHandleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Handle</title><path d='M460 160h-88v-12A116.13 116.13 0 00258.89 32h-5.78A116.13 116.13 0 00140 148v12H52a4 4 0 00-4 4v300a16 16 0 0016 16h384a16 16 0 0016-16V164a4 4 0 00-4-4zm-280-11c0-41.84 33.41-76.56 75.25-77A76.08 76.08 0 01332 148v12H180zm188 91a112 112 0 01-224 0v-32h32v32a80 80 0 00160 0v-32h32z'/></svg>\"\nexport const bagOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag</title><path stroke-linecap='round' stroke-linejoin='round' d='M80 176a16 16 0 00-16 16v216c0 30.24 25.76 56 56 56h272c30.24 0 56-24.51 56-54.75V192a16 16 0 00-16-16zM160 176v-32a96 96 0 0196-96h0a96 96 0 0196 96v32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bagRemove = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Remove</title><path d='M454.66 169.4A31.86 31.86 0 00432 160h-64v-16a112 112 0 00-224 0v16H80a32 32 0 00-32 32v216c0 39 33 72 72 72h272a72.22 72.22 0 0050.48-20.55 69.48 69.48 0 0021.52-50.2V192a31.78 31.78 0 00-9.34-22.6zM320 336H192a16 16 0 010-32h128a16 16 0 010 32zm16-176H176v-16a80 80 0 01160 0z'/></svg>\"\nexport const bagRemoveOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Remove</title><path stroke-linecap='round' stroke-linejoin='round' d='M320 320H192M80 176a16 16 0 00-16 16v216c0 30.24 25.76 56 56 56h272c30.24 0 56-24.51 56-54.75V192a16 16 0 00-16-16zM160 176v-32a96 96 0 0196-96h0a96 96 0 0196 96v32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bagRemoveSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag Remove</title><path d='M460 160h-88v-12A116.13 116.13 0 00258.89 32h-5.78A116.13 116.13 0 00140 148v12H52a4 4 0 00-4 4v300a16 16 0 0016 16h384a16 16 0 0016-16V164a4 4 0 00-4-4zm-280-11c0-41.84 33.41-76.56 75.25-77A76.08 76.08 0 01332 148v12H180zm156 187H176v-32h160z'/></svg>\"\nexport const bagSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bag</title><path d='M372 160v-12A116.13 116.13 0 00258.89 32h-5.78A116.13 116.13 0 00140 148v12H52a4 4 0 00-4 4v300a16 16 0 0016 16h384a16 16 0 0016-16V164a4 4 0 00-4-4zm-40 0H180v-11c0-41.84 33.41-76.56 75.25-77A76.08 76.08 0 01332 148z'/></svg>\"\nexport const balloon = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Balloon</title><path d='M391 307.27c32.75-46.35 46.59-101.63 39-155.68A175.82 175.82 0 00231.38 2c-96 13.49-163.14 102.58-149.65 198.58 7.57 53.89 36.12 103.16 80.37 138.74 24.58 19.68 52.31 33.5 78.62 39.68a8 8 0 016 9.22l-4.87 26.38a16.29 16.29 0 001.48 10.57 16 16 0 0014.2 8.61 15.21 15.21 0 002.23-.16l17.81-2.5a2 2 0 012.09 1.14c16.72 36.31 45.46 63.85 82.15 78.36a16 16 0 0021-9.65c2.83-8.18-1.64-17.07-9.68-20.28a118.57 118.57 0 01-59.3-51.88 2 2 0 011.45-3l7.4-1a16.54 16.54 0 0010.08-5.23 16 16 0 002.39-17.8l-12.06-24.23a8 8 0 013.26-10.55c23.59-13.17 46.45-34 64.65-59.73zm-154.9 16.78a16 16 0 01-5.88-1.12c-41.26-16.32-76.3-52.7-91.45-94.94a16 16 0 1130.12-10.8c14.5 40.44 47.27 65.77 73.1 76a16 16 0 01-5.89 30.88z'/></svg>\"\nexport const balloonOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Balloon</title><path d='M414.11 153.82C429.66 264.4 345.85 357.09 282.54 366s-169.48-57.5-185-167.68a159.82 159.82 0 11316.53-44.49z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M236.06 308.05c-32.83-13-67.08-43.1-82.27-85.46M367.7 495.78c-32.83-13-63.31-40.06-78.5-82.41' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M266.71 368.21l-9.17 49.61 63.31-8.9-22.49-45.16-31.65 4.45z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const balloonSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Balloon</title><path d='M391 307.27c32.75-46.35 46.59-101.63 39-155.68C416.47 55.59 327.38-11.54 231.38 2S68.24 104.53 81.73 200.53c7.57 53.89 36.12 103.16 80.37 138.74 26.91 21.64 57.59 36.1 86.05 41.33l-8.36 45.23a8 8 0 009 9.38L279 431c15.9 35.87 41.65 60.48 78.41 75l14.88 5.88 11.77-29.75-14.88-5.89c-26.35-10.42-44.48-26.16-57-49.92l21.84-3.07a8 8 0 006.05-11.49l-20.49-41.16c25.98-12.87 51.49-35.18 71.42-63.33zm-160.82 15.66c-41.26-16.32-76.3-52.7-91.45-94.94l-5.4-15.06 30.12-10.8 5.4 15.06c14.5 40.44 47.27 65.77 73.1 76l14.88 5.88-11.77 29.76z'/></svg>\"\nexport const ban = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ban</title><circle stroke-miterlimit='10' stroke-width='48' cx='256' cy='256' r='200' class='ionicon-fill-none'/><path stroke-miterlimit='10' stroke-width='48' d='M114.58 114.58l282.84 282.84'/></svg>\"\nexport const banOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ban</title><circle cx='256' cy='256' r='208' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-miterlimit='10' d='M108.92 108.92l294.16 294.16' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const banSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ban</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM432 256a175.09 175.09 0 01-35.8 106.26L149.74 115.8A175.09 175.09 0 01256 80c97.05 0 176 79 176 176zm-352 0a175.09 175.09 0 0135.8-106.26L362.26 396.2A175.09 175.09 0 01256 432c-97 0-176-78.95-176-176z'/></svg>\"\nexport const bandage = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bandage</title><path d='M275.8 157a16 16 0 00-22.63 0l-93.34 93.34a16 16 0 000 22.63l79.2 79.2a16 16 0 0022.63 0L355 258.83a16 16 0 000-22.63zM137.21 295.6a47.81 47.81 0 01-9.43-13.38L69 341a72.2 72.2 0 000 102 72.37 72.37 0 00102 0l58.77-58.76a47.81 47.81 0 01-13.38-9.43zM392 48a71.55 71.55 0 00-51 21l-55.92 55.91a48.05 48.05 0 0113.36 9.45l79.19 79.19a48.05 48.05 0 019.45 13.36L443 171a72 72 0 00-51-123z' class='ionicon-fill-none'/><path d='M275.8 157a16 16 0 00-22.63 0l-93.34 93.34a16 16 0 000 22.63l79.2 79.2a16 16 0 0022.63 0L355 258.83a16 16 0 000-22.63zm-56.49 110.31a16 16 0 110-22.62 16 16 0 010 22.62zm48 48a16 16 0 110-22.62 16 16 0 010 22.62zm0-96a16 16 0 110-22.62 16 16 0 010 22.62zm48 48a16 16 0 110-22.62 16 16 0 010 22.62zM465.61 46.39a104.38 104.38 0 00-147.25 0l-69.76 69.89a4 4 0 004.2 6.58 35.74 35.74 0 0111.69-2.54 47.7 47.7 0 0133.94 14.06l79.19 79.19a47.7 47.7 0 0114.06 33.94 35.68 35.68 0 01-2.54 11.69 4 4 0 006.58 4.2l69.89-69.76a104.38 104.38 0 000-147.25z'/><path d='M254.34 386.83a47.91 47.91 0 01-33.94-14l-79.19-79.23a47.81 47.81 0 01-9.43-13.38c-4.59-9.7-1.39-25 2.48-36.9a4 4 0 00-6.64-4l-77.23 77.04a104.12 104.12 0 00147.25 147.25l72.75-72.88a4 4 0 00-4.21-6.58c-4.18 1.58-8.4 2.68-11.84 2.68z'/></svg>\"\nexport const bandageOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bandage</title><rect x='-24.43' y='167.88' width='560.87' height='176.25' rx='88.12' ry='88.12' transform='rotate(-45 256 256.002)' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='169.41' y='156.59' width='176' height='196' rx='32' ry='32' transform='rotate(45 257.409 254.582)' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='208' r='16'/><circle cx='304' cy='256' r='16'/><circle cx='208' cy='256' r='16'/><circle cx='256' cy='304' r='16'/></svg>\"\nexport const bandageSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bandage</title><path d='M27.71 337.1a40 40 0 000 56.54l90.65 90.65a40 40 0 0056.54 0l75.1-75.1L102.81 262zM496 147.1a39.87 39.87 0 00-11.75-28.38l-91-91a40.14 40.14 0 00-56.75 0L264 100.28 411.72 248l72.53-72.53A39.85 39.85 0 00496 147.1zM273.06 386.19l116-116L241.77 123l-116 116zm19.63-141.5a16 16 0 110 22.62 16 16 0 010-22.62zm-48-48a16 16 0 110 22.62 16 16 0 010-22.62zm0 96a16 16 0 110 22.62 16 16 0 010-22.62zm-25.38-48a16 16 0 11-22.62 0 16 16 0 0122.62 0z'/></svg>\"\nexport const barChart = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bar Chart</title><path d='M480 496H48a32 32 0 01-32-32V32a16 16 0 0132 0v432h432a16 16 0 010 32z'/><path d='M156 432h-40a36 36 0 01-36-36V244a36 36 0 0136-36h40a36 36 0 0136 36v152a36 36 0 01-36 36zM300 432h-40a36 36 0 01-36-36V196a36 36 0 0136-36h40a36 36 0 0136 36v200a36 36 0 01-36 36zM443.64 432h-40a36 36 0 01-36-36V132a36 36 0 0136-36h40a36 36 0 0136 36v264a36 36 0 01-36 36z'/></svg>\"\nexport const barChartOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bar Chart</title><path d='M32 32v432a16 16 0 0016 16h432' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='224' width='80' height='192' rx='20' ry='20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='240' y='176' width='80' height='240' rx='20' ry='20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='383.64' y='112' width='80' height='304' rx='20' ry='20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const barChartSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bar Chart</title><path d='M496 496H16V16h32v448h448v32z'/><path d='M192 432H80V208h112zM336 432H224V160h112zM479.64 432h-112V96h112z'/></svg>\"\nexport const barbell = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Barbell</title><path d='M467 176a29.94 29.94 0 00-25.32 12.5 2 2 0 01-3.64-1.14v-36.65c0-20.75-16.34-38.21-37.08-38.7A38 38 0 00362 150v82a2 2 0 01-2 2H152a2 2 0 01-2-2v-81.29c0-20.75-16.34-38.21-37.08-38.7A38 38 0 0074 150v37.38a2 2 0 01-3.64 1.14A29.94 29.94 0 0045 176c-16.3.51-29 14.31-29 30.62v98.72c0 16.31 12.74 30.11 29 30.62a29.94 29.94 0 0025.32-12.5 2 2 0 013.68 1.16v36.67C74 382 90.34 399.5 111.08 400A38 38 0 00150 362v-82a2 2 0 012-2h208a2 2 0 012 2v81.29c0 20.75 16.34 38.21 37.08 38.7A38 38 0 00438 362v-37.38a2 2 0 013.64-1.14A29.94 29.94 0 00467 336c16.3-.51 29-14.31 29-30.62v-98.74c0-16.31-12.74-30.11-29-30.64z'/></svg>\"\nexport const barbellOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Barbell</title><path stroke-linecap='round' stroke-linejoin='round' d='M48 256h416' class='ionicon-fill-none ionicon-stroke-width'/><rect x='384' y='128' width='32' height='256' rx='16' ry='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='128' width='32' height='256' rx='16' ry='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='32' y='192' width='16' height='128' rx='8' ry='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='464' y='192' width='16' height='128' rx='8' ry='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const barbellSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Barbell</title><path d='M496 176h-58v-64h-76v122H150V112H74v64H16v160h58v64h76V278h212v122h76v-64h58V176z'/></svg>\"\nexport const barcode = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Barcode</title><path d='M419.13 96H419l-35.05.33L128 96h-.16l-36.74.33C66.93 96.38 48 116.07 48 141.2v230.27c0 25.15 19 44.86 43.2 44.86h.15l36.71-.33 255.92.33h.17l35.07-.33A44.91 44.91 0 00464 371.13V140.87A44.92 44.92 0 00419.13 96zM144 320a16 16 0 01-32 0V192a16 16 0 0132 0zm64 32a16 16 0 01-32 0V160a16 16 0 0132 0zm64-16a16 16 0 01-32 0V176a16 16 0 0132 0zm64 16a16 16 0 01-32 0V160a16 16 0 0132 0zm64-32a16 16 0 01-32 0V192a16 16 0 0132 0z'/></svg>\"\nexport const barcodeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Barcode</title><path d='M384 400.33l35.13-.33A29 29 0 00448 371.13V140.87A29 29 0 00419.13 112l-35.13.33M128 112l-36.8.33c-15.88 0-27.2 13-27.2 28.87v230.27c0 15.87 11.32 28.86 27.2 28.86L128 400M384 192v128M320 160v192M256 176v160M192 160v192M128 192v128' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const barcodeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Barcode</title><path stroke-linecap='square' stroke-linejoin='round' d='M400 400.33l48-.33V112l-48 .33M112 112l-48 .33v288l48-.33M384 192v128M320 160v192M256 176v160M192 160v192M128 192v128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const baseball = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Baseball</title><path d='M444 295.67l-.47-26.07a205.42 205.42 0 01-39.27-4.73l-5 17.35a14 14 0 11-26.88-7.81l5-17.38a206.47 206.47 0 01-36.05-17.35l-10.44 14.77a14 14 0 01-22.87-16.16l10.41-14.73a204.8 204.8 0 01-30-30L273.71 204a14 14 0 01-16.16-22.87l14.74-10.42a205.3 205.3 0 01-17.38-36.06l-17.32 5a14 14 0 11-7.81-26.89l17.3-5a205.88 205.88 0 01-4.43-32.59q-.17-3-.24-6l-18.22-.33a14 14 0 01-13.74-14A208 208 0 0055 202.42a16 16 0 0115 15.66l.44 24.43c1.58.05 3.16.11 4.73.2a205.88 205.88 0 0132.59 4.43l5-17.3a14 14 0 0126.89 7.81l-5 17.32a205.21 205.21 0 0136 17.38L181 257.61a14 14 0 0122.87 16.16l-10.39 14.73a205.65 205.65 0 0115.79 14.23 203.79 203.79 0 0114.23 15.79l14.73-10.41A14 14 0 01254.39 331l-14.76 10.43A206.86 206.86 0 01257 377.47l17.38-5.05a14 14 0 017.81 26.89l-17.35 5a205.89 205.89 0 014.7 38.28l18.27.33a16 16 0 0115.71 16.28 11.69 11.69 0 01-.08 1.19 208 208 0 00153.39-151.03A14 14 0 01444 295.67z'/><path d='M301.49 56.2A14 14 0 01287.5 70h-.25l-16.81-.3c.05 1.31.1 2.62.17 3.93a178.83 178.83 0 003.44 26.31l16.29-4.74a14 14 0 017.81 26.8l-16.27 4.73a178.06 178.06 0 0013.33 27.69l13.84-9.78a14 14 0 1116.16 22.87l-13.86 9.79q5.25 6.33 11.12 12.19c3.9 3.91 8 7.6 12.2 11.1l9.78-13.84A14 14 0 11367.32 203l-9.76 13.8a178.83 178.83 0 0027.68 13.33l4.76-16.28a14 14 0 0126.89 7.81l-4.73 16.26a177.72 177.72 0 0030.95 3.65l-.16-9a14 14 0 0113.75-14.24h.25a14.67 14.67 0 012.59.25 208 208 0 00-158-163.51c-.06.4-.04.76-.05 1.13zM208.44 457.55a16 16 0 0116.28-15.71l16.76.29a178.49 178.49 0 00-3.62-29.95l-16.26 4.72a14 14 0 11-7.81-26.9l16.21-4.7a177.92 177.92 0 00-13.33-27.68l-13.8 9.76a14 14 0 11-16.16-22.87l13.84-9.78c-3.5-4.22-7.19-8.3-11.1-12.2s-8-7.62-12.19-11.12l-9.79 13.86a14 14 0 11-22.87-16.16l9.78-13.84a177.16 177.16 0 00-27.69-13.33L122 298.21a14 14 0 11-26.9-7.81l4.73-16.29a177.32 177.32 0 00-26.31-3.44c-.89-.05-1.79-.08-2.68-.12l.16 10.59a16 16 0 01-15.71 16.28H55a16 16 0 01-3.94-.51 208 208 0 00157.65 163.87 15.72 15.72 0 01-.27-3.23z'/></svg>\"\nexport const baseballOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Baseball</title><path stroke-linecap='round' stroke-linejoin='round' d='M294.25 108.6l-60.57 17.59M317.13 156.11l-51.5 36.4M355.89 194.87l-36.4 51.5M403.4 217.75l-17.59 60.57' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='192' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M432.94 255.05a192 192 0 01-176.31-180.7M108.54 294.31l17.59-60.57M156.05 317.19l36.4-51.5M194.81 355.95l51.5-36.4M217.69 403.46l60.57-17.59M255 433.61A192 192 0 0074.29 256.69' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const baseballSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Baseball</title><path d='M302.16 56.2a13.88 13.88 0 01-3.42 8.91l-.11 5.13-27.71-.57c0 1.3.09 2.61.16 3.91a177.33 177.33 0 003.45 26.31l24.72-7.18 7.81 26.88-24.71 7.18a177.21 177.21 0 0013.34 27.69l21.27-15 16.16 22.86-21.29 15.05q5.25 6.33 11.11 12.19c3.91 3.91 8 7.6 12.2 11.1l15.71-22.22 22.86 16.16L358 216.75a178.78 178.78 0 0027.68 13.32l7.49-25.8 26.89 7.81-7.5 25.83a177.8 177.8 0 0031 3.67l-.41-24.67 17.41-.29A208 208 0 00301.82 52.93a13.65 13.65 0 01.34 3.27zM214 441.64l27.91.49a177.46 177.46 0 00-3.62-29.95l-24.14 7-7.81-26.88 24.11-7a177.92 177.92 0 00-13.33-27.68L196.79 372l-16.16-22.86L201 334.73c-3.49-4.22-7.19-8.3-11.09-12.2s-8-7.62-12.19-11.12l-13.91 19.68L141 314.93l13.9-19.66a177.26 177.26 0 00-27.7-13.33l-6.37 21.94-26.89-7.81 6.38-22a177.32 177.32 0 00-26.32-3.4c-1.59-.09-3.18-.16-4.78-.2l.4 22.34-17.71.32a207.88 207.88 0 00161.81 166.48z'/><path d='M444.65 302.67l-.55-33.06a206 206 0 01-39.33-4.74L397 291.8l-26.94-7.8 7.83-27a206.91 206.91 0 01-36.06-17.35l-16.36 23.15-22.86-16.16 16.33-23.11a204.21 204.21 0 01-30-30l-22.19 15.67-16.16-22.87 22.17-15.67a206 206 0 01-17.38-36.06l-25.75 7.48-7.81-26.89 25.73-7.47q-2-9.21-3.18-18.64h-.47l-.78-14-.33-6-17.94-.32a13.38 13.38 0 01-1.79-.16l-6.35-.13.06-2.47a14 14 0 01-5.66-11.49 13.27 13.27 0 01.13-1.67A208 208 0 0052.16 217.43l16.1-.28.45 25.18 6.83.38 14 .77v.48q9.42 1.17 18.64 3.18l6.68-23L141.7 232l-6.7 23a205.3 205.3 0 0136.06 17.38l14.53-20.56L208.47 268 194 288.5a203.5 203.5 0 0130 30l21.3-15 16.16 22.86-21.36 15.05a206.86 206.86 0 0117.34 36.06l25.27-7.33 7.81 26.86-25.24 7.33a205.9 205.9 0 014.72 38.3l29.42.53-.29 16.48a207.94 207.94 0 00160-157.21z'/></svg>\"\nexport const basket = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Basket</title><path d='M424.11 192H360L268.8 70.4a16 16 0 00-25.6 0L152 192H87.89a32.57 32.57 0 00-32.62 32.44 30.3 30.3 0 001.31 9l46.27 163.14a50.72 50.72 0 0048.84 36.91h208.62a51.21 51.21 0 0049-36.86l46.33-163.36a15.62 15.62 0 00.46-2.36l.53-4.93a13.3 13.3 0 00.09-1.55A32.57 32.57 0 00424.11 192zM256 106.67L320 192H192zm0 245a37.7 37.7 0 1137.88-37.7A37.87 37.87 0 01256 351.63z'/></svg>\"\nexport const basketOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Basket</title><path d='M68.4 192A20.38 20.38 0 0048 212.2a17.87 17.87 0 00.8 5.5L100.5 400a40.46 40.46 0 0039.1 29.5h232.8a40.88 40.88 0 0039.3-29.5l51.7-182.3.6-5.5a20.38 20.38 0 00-20.4-20.2H68.4zm193.32 160.07A42.07 42.07 0 11304 310a42.27 42.27 0 01-42.28 42.07z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' d='M160 192l96-128 96 128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const basketSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Basket</title><path d='M339.2 217.6L256 106.67 172.8 217.6l-25.6-19.2 96-128a16 16 0 0125.6 0l96 128z'/><path d='M441.59 192H70.41a12 12 0 00-11.68 14.77L112.59 434h286.82l53.86-227.23A12 12 0 00441.59 192zM256 351.66A37.71 37.71 0 11293.89 314 37.88 37.88 0 01256 351.66z'/></svg>\"\nexport const basketball = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Basketball</title><path d='M256 233.37l34.45-34.45a207.08 207.08 0 01-50.12-135.25c0-5 .19-10.05.54-15A207.09 207.09 0 00120.67 98zM313.14 176.23L391.33 98A207.07 207.07 0 00273 48.8c-.41 4.9-.64 9.86-.64 14.87a175.25 175.25 0 0040.78 112.56zM335.77 198.86a175.25 175.25 0 00112.56 40.81c5 0 10-.23 14.87-.64A207.07 207.07 0 00414 120.67zM176.23 313.14a175.23 175.23 0 00-112.56-40.81q-7.52 0-14.87.64A207.07 207.07 0 0098 391.33zM256 278.63l-34.45 34.45a207.08 207.08 0 0150.12 135.25c0 5-.19 10.05-.54 15A207.06 207.06 0 00391.33 414zM448.33 271.67a207.08 207.08 0 01-135.25-50.12L278.63 256 414 391.33a207.09 207.09 0 0049.39-120.2c-5.01.35-10.02.54-15.06.54zM233.37 256L98 120.67a207.06 207.06 0 00-49.39 120.2c5-.35 10-.54 15-.54a207.08 207.08 0 01135.25 50.12zM120.67 414A207.07 207.07 0 00239 463.2q.63-7.35.64-14.87a175.23 175.23 0 00-40.81-112.56z'/></svg>\"\nexport const basketballOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Basketball</title><circle cx='256' cy='256' r='192' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M432.94 255.05a192 192 0 01-176.31-180.7M255 433.61A192 192 0 0074.29 256.69M120.24 120.24l271.52 271.52M120.24 391.76l271.52-271.52' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const basketballSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Basketball</title><path d='M256 233.37l34.45-34.45a207.08 207.08 0 01-50.12-135.25c0-5 .19-10.05.54-15A207.09 207.09 0 00120.67 98zM313.14 176.23L391.33 98A207.07 207.07 0 00273 48.8c-.41 4.9-.64 9.86-.64 14.87a175.25 175.25 0 0040.78 112.56zM335.77 198.86a175.25 175.25 0 00112.56 40.81c5 0 10-.23 14.87-.64A207.07 207.07 0 00414 120.67zM176.23 313.14a175.23 175.23 0 00-112.56-40.81q-7.52 0-14.87.64A207.07 207.07 0 0098 391.33zM256 278.63l-34.45 34.45a207.08 207.08 0 0150.12 135.25c0 5-.19 10.05-.54 15A207.06 207.06 0 00391.33 414zM448.33 271.67a207.08 207.08 0 01-135.25-50.12L278.63 256 414 391.33a207.09 207.09 0 0049.39-120.2c-5.01.35-10.02.54-15.06.54zM233.37 256L98 120.67a207.06 207.06 0 00-49.39 120.2c5-.35 10-.54 15-.54a207.08 207.08 0 01135.25 50.12zM120.67 414A207.07 207.07 0 00239 463.2q.63-7.35.64-14.87a175.23 175.23 0 00-40.81-112.56z'/></svg>\"\nexport const batteryCharging = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Charging</title><path d='M48 322.3V189.7A29.74 29.74 0 0177.7 160h137.44l24.4-32H77.7A61.77 61.77 0 0016 189.7v132.6A61.77 61.77 0 0077.7 384h96.85a22.57 22.57 0 01.26-7.32l.15-.75.21-.73 6.5-23.2H77.7A29.74 29.74 0 0148 322.3zM386.3 128h-98.64a22.69 22.69 0 01-.27 7.2l-.15.74-.21.73-6.54 23.33H386.3a29.74 29.74 0 0129.7 29.7v132.6a29.74 29.74 0 01-29.7 29.7H247l-24.42 32H386.3a61.77 61.77 0 0061.7-61.7V189.7a61.77 61.77 0 00-61.7-61.7z'/><path d='M162.65 294.16a24.37 24.37 0 01-21.56-13 25 25 0 011.42-25.83l.31-.46.33-.44L197.62 183H89.69a20 20 0 00-20 20v106a20 20 0 0020 20h98.42l9.78-34.86z'/><path d='M276.07 280.89l27.07-35.49a5.2 5.2 0 00.77-1.91 5 5 0 00.08-.66 5 5 0 00-.08-1.29 5.11 5.11 0 00-.68-1.75 4.76 4.76 0 00-.78-.95 3.48 3.48 0 00-.48-.38 4 4 0 00-1.11-.55 4.28 4.28 0 00-1.31-.2h-61.62l12.12-43.21 3.23-11.5 6.21-22.16.51-1.84 7.79-27.76a3.51 3.51 0 00.05-.55v-.16c0-.05 0-.26-.05-.38s0-.09 0-.14a2.2 2.2 0 00-.17-.45 3.77 3.77 0 00-.26-.39l-.09-.1a2.73 2.73 0 00-.25-.23l-.1-.08a3.14 3.14 0 00-.39-.24 2 2 0 00-.41-.14H265.53a2.3 2.3 0 00-.45 0 1.9 1.9 0 00-.42.15l-.13.07-.3.21-.11.1a2.4 2.4 0 00-.36.41l-18 23.63-13.14 17.22-9.85 12.83-63.71 83.55a5.72 5.72 0 00-.44.8 4.78 4.78 0 00-.35 1.09 4.7 4.7 0 00-.08 1.29 4.86 4.86 0 002 3.71 4.74 4.74 0 00.54.31 4.31 4.31 0 001.89.43h61.62L194.42 380.6a3.64 3.64 0 000 .56v.15a2.32 2.32 0 00.06.38.58.58 0 000 .14 2.2 2.2 0 00.17.45 3.62 3.62 0 00.26.38l.09.1.25.24a.39.39 0 01.1.08 2.22 2.22 0 00.39.23 2.83 2.83 0 00.41.14h.13a1.86 1.86 0 00.33 0h.13a2.32 2.32 0 00.45-.06 2.05 2.05 0 00.41-.16l.13-.07.3-.21.11-.09a2.4 2.4 0 00.36-.41L221.82 352l17.53-23z'/><path d='M319.5 256.93l-.46.6L264.51 329h109.8a20 20 0 0020-20V203a20 20 0 00-20-20H274.05l-9.74 34.73h35.24A24.35 24.35 0 01321 230.5a25.21 25.21 0 01-1 25.79zM480 202.67a16 16 0 00-16 16v74.66a16 16 0 0032 0v-74.66a16 16 0 00-16-16z'/></svg>\"\nexport const batteryChargingOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Charging</title><path d='M48 322.3V189.7A29.74 29.74 0 0177.7 160h137.44l24.4-32H77.7A61.77 61.77 0 0016 189.7v132.6A61.77 61.77 0 0077.7 384h96.85a22.57 22.57 0 01.26-7.32l.15-.75.21-.73 6.5-23.2H77.7A29.74 29.74 0 0148 322.3zM386.3 128h-98.64a22.69 22.69 0 01-.27 7.2l-.15.74-.21.73-6.54 23.33H386.3a29.74 29.74 0 0129.7 29.7v132.6a29.74 29.74 0 01-29.7 29.7H247l-24.42 32H386.3a61.77 61.77 0 0061.7-61.7V189.7a61.77 61.77 0 00-61.7-61.7z'/><path d='M162.65 294.16a24.37 24.37 0 01-21.56-13 25 25 0 011.42-25.83l.31-.46.33-.44L197.62 183H89.69a20 20 0 00-20 20v106a20 20 0 0020 20h98.42l9.78-34.86z'/><path d='M276.07 280.89l27.07-35.49a5.2 5.2 0 00.77-1.91 5 5 0 00.08-.66 5 5 0 00-.08-1.29 5.11 5.11 0 00-.68-1.75 4.76 4.76 0 00-.78-.95 3.48 3.48 0 00-.48-.38 4 4 0 00-1.11-.55 4.28 4.28 0 00-1.31-.2h-61.62l12.12-43.21 3.23-11.5 6.21-22.16.51-1.84 7.79-27.76a3.51 3.51 0 00.05-.55v-.16c0-.05 0-.26-.05-.38s0-.09 0-.14a2.2 2.2 0 00-.17-.45 3.77 3.77 0 00-.26-.39l-.09-.1a2.73 2.73 0 00-.25-.23l-.1-.08a3.14 3.14 0 00-.39-.24 2 2 0 00-.41-.14H265.53a2.3 2.3 0 00-.45 0 1.9 1.9 0 00-.42.15l-.13.07-.3.21-.11.1a2.4 2.4 0 00-.36.41l-18 23.63-13.14 17.22-9.85 12.83-63.71 83.55a5.72 5.72 0 00-.44.8 4.78 4.78 0 00-.35 1.09 4.7 4.7 0 00-.08 1.29 4.86 4.86 0 002 3.71 4.74 4.74 0 00.54.31 4.31 4.31 0 001.89.43h61.62L194.42 380.6a3.64 3.64 0 000 .56v.15a2.32 2.32 0 00.06.38.58.58 0 000 .14 2.2 2.2 0 00.17.45 3.62 3.62 0 00.26.38l.09.1.25.24a.39.39 0 01.1.08 2.22 2.22 0 00.39.23 2.83 2.83 0 00.41.14h.13a1.86 1.86 0 00.33 0h.13a2.32 2.32 0 00.45-.06 2.05 2.05 0 00.41-.16l.13-.07.3-.21.11-.09a2.4 2.4 0 00.36-.41L221.82 352l17.53-23z'/><path d='M319.5 256.93l-.46.6L264.51 329h109.8a20 20 0 0020-20V203a20 20 0 00-20-20H274.05l-9.74 34.73h35.24A24.35 24.35 0 01321 230.5a25.21 25.21 0 01-1 25.79zM480 202.67a16 16 0 00-16 16v74.66a16 16 0 0032 0v-74.66a16 16 0 00-16-16z'/></svg>\"\nexport const batteryChargingSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Charging</title><path d='M306.68 237.62h-66.5l15.33-54.7 6.43-22.92 3.94-14 4.29-15.33a3.56 3.56 0 00.06-.44v-.19a1.85 1.85 0 000-.23 2 2 0 000-.24v-.14c0-.1-.07-.19-.11-.29v-.05a2.33 2.33 0 00-2-1.35h-.1a2.25 2.25 0 00-1.8 1l-12.5 17.15-18.82 25.55-8.36 11.48-35.41 48.6L160 274.26h66.44l-30 107a3.93 3.93 0 00-.06.48v.1a1.94 1.94 0 000 .34.29.29 0 000 .09 3 3 0 00.07.32v.06a1.83 1.83 0 00.14.32 2.38 2.38 0 001.52 1.16H198.68a2.1 2.1 0 001.31-.5l.06-.05a2.6 2.6 0 00.42-.45L223.3 352l13-17.82z'/><path d='M289.78 134.55l-.14.74-.21.73-6.72 24H417V352H248.05l-23.33 32H449V128H290.13a22.62 22.62 0 01-.35 6.55zM49 160h169.49l23.31-32H17v256h159.49a22.73 22.73 0 01.34-6.67l.15-.75.2-.73 6.69-23.85H49z'/><path d='M264.76 329.08h130.55V182.92H276.28l-9.73 34.7H346l-23.16 31.78-58.08 79.68zM160 294.26h-39.31l23.15-31.78 57.95-79.56H70.69v146.16h119.6l9.77-34.82H160zM465 202.67h32v106.67h-32z'/></svg>\"\nexport const batteryDead = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Dead</title><rect x='31' y='144' width='400' height='224' rx='45.7' ry='45.7' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M479 218.67v74.66' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const batteryDeadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Dead</title><rect x='31' y='144' width='400' height='224' rx='45.7' ry='45.7' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M479 218.67v74.66' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const batteryDeadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Dead</title><path stroke-linecap='square' stroke-miterlimit='10' d='M32 144h400v224H32zM480 218.67v74.66' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const batteryFull = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Full</title><rect x='32' y='144' width='400' height='224' rx='45.7' ry='45.7' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='85.69' y='198.93' width='292.63' height='114.14' rx='4' ry='4' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M480 218.67v74.66' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const batteryFullOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Full</title><rect x='32' y='144' width='400' height='224' rx='45.7' ry='45.7' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='85.69' y='198.93' width='292.63' height='114.14' rx='4' ry='4' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M480 218.67v74.66' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const batteryFullSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Full</title><path d='M17 384h432V128H17zm32-224h368v192H49z'/><path d='M70.69 182.94h324.63v146.13H70.69zM465 202.67h32v106.67h-32z'/></svg>\"\nexport const batteryHalf = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Half</title><rect x='32' y='144' width='400' height='224' rx='45.7' ry='45.7' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='85.69' y='198.93' width='154.31' height='114.13' rx='4' ry='4' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M480 218.67v74.66' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const batteryHalfOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Half</title><rect x='32' y='144' width='400' height='224' rx='45.7' ry='45.7' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='85.69' y='198.93' width='154.31' height='114.13' rx='4' ry='4' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M480 218.67v74.66' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const batteryHalfSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Battery Half</title><path d='M17 384h432V128H17zm32-224h368v192H49z'/><path d='M70.69 182.92H256v146.16H70.69zM465 202.67h32v106.67h-32z'/></svg>\"\nexport const beaker = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Beaker</title><path d='M444 32H128c-19.38 0-45.9 4.34-64.11 24.77C52.17 69.92 48 85.66 48 96a16 16 0 0013.8 15.85C91.7 116 96 117.79 96 136v264a80.07 80.07 0 0080 80h192a80.11 80.11 0 0080-80V96c0-12.55 7.46-27.25 10-31.36l.1-.14c.22-.35.5-.72.78-1.1 2-2.79 5.09-7 5.09-12.95C464 39.79 454.89 32 444 32zM84.11 83.08c5.24-8.87 17.17-19 44.29-19h294.43C419.3 72.87 416 84.27 416 96v64H128v-24c0-37.32-21.35-48.14-43.89-52.92z'/></svg>\"\nexport const beakerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Beaker</title><path d='M445.2 48.05L398 48H128c-54.3 0-64 35.7-64 48 30.3 4.2 48 8 48 40v264a64 64 0 0064 64h192a64 64 0 0064-64V96c0-19 11.5-38.35 12.6-40 1.2-1.9 3.4-4.4 3.4-5.5s-.3-2.45-2.8-2.45zM112 176h320' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const beakerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Beaker</title><path d='M453.55 54.7L464 32H128.4c-27.74 0-49 6.57-63.31 19.51C54.39 61.27 48 74.89 48 88v24h16c31 0 32 16.79 32 35v313a20 20 0 0020 20h312a20 20 0 0020-20V96c0-17.16 2.28-34.14 5.55-41.3zM416 96v64H128v-22c0-36.15-21-51-41.77-53.46C89 70 105.7 64.05 128.4 64.05h289.92A221.83 221.83 0 00416 96z'/></svg>\"\nexport const bed = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bed</title><path d='M432 230.7a79.44 79.44 0 00-32-6.7H112a79.51 79.51 0 00-32 6.69A80.09 80.09 0 0032 304v112a16 16 0 0032 0v-8a8.1 8.1 0 018-8h368a8.1 8.1 0 018 8v8a16 16 0 0032 0V304a80.09 80.09 0 00-48-73.3zM376 80H136a56 56 0 00-56 56v72a4 4 0 005.11 3.84A95.5 95.5 0 01112 208h4.23a4 4 0 004-3.55A32 32 0 01152 176h56a32 32 0 0131.8 28.45 4 4 0 004 3.55h24.46a4 4 0 004-3.55A32 32 0 01304 176h56a32 32 0 0131.8 28.45 4 4 0 004 3.55h4.2a95.51 95.51 0 0126.89 3.85A4 4 0 00432 208v-72a56 56 0 00-56-56z'/></svg>\"\nexport const bedOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bed</title><path d='M384 240H96V136a40.12 40.12 0 0140-40h240a40.12 40.12 0 0140 40v104zM48 416V304a64.19 64.19 0 0164-64h288a64.19 64.19 0 0164 64v112' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M48 416v-8a24.07 24.07 0 0124-24h368a24.07 24.07 0 0124 24v8M112 240v-16a32.09 32.09 0 0132-32h80a32.09 32.09 0 0132 32v16M256 240v-16a32.09 32.09 0 0132-32h80a32.09 32.09 0 0132 32v16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bedSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bed</title><path d='M432 224V96a16 16 0 00-16-16H96a16 16 0 00-16 16v128a48 48 0 00-48 48v160h36v-32h376v32h36V272a48 48 0 00-48-48zm-192 0H120v-32a16 16 0 0116-16h88a16 16 0 0116 16zm32-32a16 16 0 0116-16h88a16 16 0 0116 16v32H272z'/></svg>\"\nexport const beer = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Beer</title><path d='M392 208h-24v-5.74A63.93 63.93 0 00321.65 96a111 111 0 00-27.59-47.29A108.62 108.62 0 00216 16c-29.91 0-57.78 12.28-79 34.68a56 56 0 00-67.51 77.54A63.91 63.91 0 0080 231.39V440a56.06 56.06 0 0056 56h176a56.06 56.06 0 0056-56v-8h24a72.08 72.08 0 0072-72v-80a72.08 72.08 0 00-72-72zM176 416a16 16 0 01-32 0V256a16 16 0 0132 0zm64 0a16 16 0 01-32 0V256a16 16 0 0132 0zm64 0a16 16 0 01-32 0V256a16 16 0 0132 0zm16-224c-8.33 0-20.55-5.18-26.69-11.31A16 16 0 00282 176H160a16 16 0 00-15 10.53c-6.83 18.68-23.6 21.47-33 21.47a32 32 0 010-64c.09 0 9.12.34 16.4 5.8a16 16 0 1019.2-25.6A63.69 63.69 0 00112 112a63.55 63.55 0 00-14 1.57A24 24 0 01120 80a23.78 23.78 0 0119.38 9.84 51.35 51.35 0 014.71 7.9A16 16 0 00176 96c0-6.77-3.61-15.17-10.76-25-.46-.63-1-1.25-1.45-1.86C178.39 55.44 196.64 48 216 48a76.86 76.86 0 0155.23 23.18A80.2 80.2 0 01292.61 142a16 16 0 0012.73 18.71 16.29 16.29 0 003 .28 16 16 0 0015.7-13 111.78 111.78 0 001.96-19.42 32 32 0 01-6 63.43zm112 168a40 40 0 01-40 40h-24V240h24a40 40 0 0140 40z'/></svg>\"\nexport const beerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Beer</title><path d='M352 200v240a40.12 40.12 0 01-40 40H136a40.12 40.12 0 01-40-40V224' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M352 224h40a56.16 56.16 0 0156 56v80a56.16 56.16 0 01-56 56h-40' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M224 256v160M288 256v160M160 256v160M320 112a48 48 0 010 96c-13.25 0-29.31-7.31-38-16H160c-8 22-27 32-48 32a48 48 0 010-96 47.91 47.91 0 0126 9' class='ionicon-fill-none ionicon-stroke-width'/><path d='M91.86 132.43a40 40 0 1160.46-52S160 91 160 96M145.83 64.71C163.22 44.89 187.57 32 216 32c52.38 0 94 42.84 94 95.21a95 95 0 01-1.67 17.79' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const beerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Beer</title><path d='M448 208h-80v-5.74A63.93 63.93 0 00321.65 96a111 111 0 00-27.59-47.29A108.62 108.62 0 00216 16c-29.91 0-57.78 12.28-79 34.67a56 56 0 00-67.51 77.51c-1 .86-1.91 1.74-2.83 2.66A63.56 63.56 0 0048 176.26a62.65 62.65 0 0020.77 46.54A65 65 0 0080 231v249a16 16 0 0016 16h256a16 16 0 0016-16v-48h80a16 16 0 0016-16V224a16 16 0 00-16-16zM176 432h-32V240h32zm64 0h-32V240h32zm64 0h-32V240h32zm16-240c-8.33 0-20.55-5.18-26.69-11.31l-4.68-4.69H148.79L145 186.53c-5.81 16-18.83 20.41-28.73 21.29a34.08 34.08 0 01-25.91-8.67 31 31 0 01-10.32-23 31.8 31.8 0 019.33-22.71c.16-.17.33-.32.5-.49A31.78 31.78 0 01112 144c.09 0 9.12.34 16.4 5.8l12.8 9.6 19.2-25.6-12.8-9.6A63.69 63.69 0 00112 112a64.79 64.79 0 00-14 1.55 24 24 0 0141.4-23.68l.23.35.4.46a35.78 35.78 0 015 8.94l5.62 15 30-11.24-5.62-15a68.2 68.2 0 00-10-17.74c-.38-.52-.79-1-1.19-1.51C178.38 55.45 196.64 48 216 48a76.86 76.86 0 0155.23 23.18A80.2 80.2 0 01292.61 142l-3 15.72 31.43 6 3-15.72a111.78 111.78 0 001.96-19.43 32 32 0 01-6 63.43zm112 208h-64V240h64z'/></svg>\"\nexport const bicycle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bicycle</title><path d='M388 448a92 92 0 1192-92 92.1 92.1 0 01-92 92zm0-152a60 60 0 1060 60 60.07 60.07 0 00-60-60zM124 448a92 92 0 1192-92 92.1 92.1 0 01-92 92zm0-152a60 60 0 1060 60 60.07 60.07 0 00-60-60zM320 128a31.89 31.89 0 0032-32.1A31.55 31.55 0 00320.2 64a32 32 0 10-.2 64z'/><path d='M367.55 192h-43.76a4 4 0 01-3.51-2.08l-31.74-58.17a31 31 0 00-49.38-7.75l-69.86 70.4a32.56 32.56 0 00-9.3 22.4c0 17.4 12.6 23.6 18.5 27.1 28.5 16.42 48.57 28.43 59.58 35.1a4 4 0 011.92 3.41v69.12c0 8.61 6.62 16 15.23 16.43A16 16 0 00272 352v-86a16 16 0 00-6.66-13l-37-26.61a4 4 0 01-.58-6l42-44.79a4 4 0 016.42.79L298 215.77a16 16 0 0014 8.23h56a16 16 0 0016-16.77c-.42-8.61-7.84-15.23-16.45-15.23z'/></svg>\"\nexport const bicycleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bicycle</title><path d='M388 288a76 76 0 1076 76 76.24 76.24 0 00-76-76zM124 288a76 76 0 1076 76 76.24 76.24 0 00-76-76z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 360v-86l-64-42 80-88 40 72h56' class='ionicon-fill-none ionicon-stroke-width'/><path d='M320 136a31.89 31.89 0 0032-32.1A31.55 31.55 0 00320.2 72a32 32 0 10-.2 64z'/></svg>\"\nexport const bicycleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bicycle</title><path d='M320 192l-29.5-60.1C284.32 118 284.32 118 264 118c-13.26 0-14.76 0-23 7.3l-71.7 69.1c-8.3 8.45-9.3 9.45-9.3 26.6 0 12.67 3.78 14.61 18.51 22.9L240 278v90h32V254s-29-17-48.3-30l48.9-51.5c18.7 28.5 27.3 51.5 38 51.5H384v-32z'/><path d='M388 448a92 92 0 1192-92 92.1 92.1 0 01-92 92zm0-152a60 60 0 1060 60 60.07 60.07 0 00-60-60zM124 448a92 92 0 1192-92 92.1 92.1 0 01-92 92zm0-152a60 60 0 1060 60 60.07 60.07 0 00-60-60zM320 128a31.89 31.89 0 0032-32.1A31.55 31.55 0 00320.2 64a32 32 0 10-.2 64z'/></svg>\"\nexport const bluetooth = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bluetooth</title><path d='M388 160.77a20 20 0 00-5.85-14.91l-112-112A20 20 0 00236 48v164.52l-79-67.71a20 20 0 00-26 30.38L225.27 256 131 336.81a20 20 0 1026 30.38l79-67.71V464a20 20 0 0034.14 14.14l112-112a20 20 0 00-1.14-29.33L286.73 256 381 175.19a20 20 0 007-14.42zm-49.42 192.36L276 415.72V299.49zM276 212.52V96.28l62.59 62.59z'/></svg>\"\nexport const bluetoothOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bluetooth</title><path stroke-linecap='round' stroke-linejoin='round' d='M144 352l224-192L256 48v416l112-112-224-192' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bluetoothSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bluetooth</title><path d='M397.41 161.13L236-.28v212.8l-94.17-80.72-26 30.37L225.27 256 115.8 349.83l26 30.37 94.2-80.72v212.8l161.41-161.41L286.73 256zM276 96.28l62.59 62.59L276 212.52zm62.58 256.85L276 415.72V299.48z'/></svg>\"\nexport const boat = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Boat</title><path d='M416 473.14a6.83 6.83 0 00-3.57-6c-27.07-14.55-51.76-36.82-62.62-48a10.05 10.05 0 00-12.72-1.51c-50.33 32.42-111.61 32.44-161.95.05a10.09 10.09 0 00-12.82 1.56c-10.77 11.28-35.19 33.3-62.43 47.75a7.11 7.11 0 00-3.89 5.73 6.73 6.73 0 007.92 7.15c20.85-4.18 41-13.68 60.2-23.83a8.71 8.71 0 018-.06 185.14 185.14 0 00167.81 0 8.82 8.82 0 018.09.06c19.1 10 39.22 19.59 60 23.8a6.73 6.73 0 008-6.71zM476.71 246.91c-3.49-8.39-10.9-14.89-20.9-18.35L432 219.08V136a64 64 0 00-64-64h-32v-8a40 40 0 00-40-40h-80a40 40 0 00-40 40v8h-32a64 64 0 00-64 64v83.15l-23.58 9.39c-9.94 3.3-17.63 10-21.15 18.44-2.45 5.89-5.25 15-1.3 26.46l.1.3 46.66 119.44A23.33 23.33 0 00102.58 408c.5 0 1 0 1.53-.05 31.32-2 56-17.27 72.6-31.61C200.42 396.81 228.31 408 256 408s55.43-11.2 79.14-31.7c16.59 14.36 41.3 29.67 72.61 31.65a23.36 23.36 0 0023.37-14.74l46.65-119c3.28-8.09 2.9-17.76-1.06-27.3zM269 154.21l-1.14-.4a39.53 39.53 0 00-23.73 0l-.58.18-126.07 50.23a4 4 0 01-5.48-3.72V136a32 32 0 0132-32h224a32 32 0 0132 32v64.44a4 4 0 01-5.48 3.72z'/></svg>\"\nexport const boatOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Boat</title><path d='M461.93 261.05c-2-4.76-6.71-7.83-11.67-9.49l-187.18-74.48a23.78 23.78 0 00-14.17 0l-187 74.52c-5 1.56-9.83 4.77-11.81 9.53s-2.94 9.37-1 15.08l46.53 119.15a7.46 7.46 0 007.47 4.64c26.69-1.68 50.31-15.23 68.38-32.5a7.66 7.66 0 0110.49 0C201.29 386 227 400 256 400s54.56-14 73.88-32.54a7.67 7.67 0 0110.5 0c18.07 17.28 41.69 30.86 68.38 32.54a7.45 7.45 0 007.46-4.61l46.7-119.16c1.98-4.78.99-10.41-.99-15.18z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M416 473.14a6.84 6.84 0 00-3.56-6c-27.08-14.55-51.77-36.82-62.63-48a10.05 10.05 0 00-12.72-1.51c-50.33 32.42-111.61 32.44-161.95.05a10.09 10.09 0 00-12.82 1.56c-10.77 11.28-35.19 33.3-62.43 47.75a7.15 7.15 0 00-3.89 5.73 6.73 6.73 0 007.92 7.15c20.85-4.18 41-13.68 60.2-23.83a8.71 8.71 0 018-.06A185.14 185.14 0 00340 456a8.82 8.82 0 018.09.06c19.1 10 39.22 19.59 60 23.8a6.72 6.72 0 007.95-6.71z'/><path d='M320 96V72a24.07 24.07 0 00-24-24h-80a24.07 24.07 0 00-24 24v24M416 233v-89a48.14 48.14 0 00-48-48H144a48.14 48.14 0 00-48 48v92M256 183.6v212.85' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const boatSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Boat</title><path d='M477.77 246.42c-2.13-6-7.23-9.55-12.56-11.95L432 221.38V92a20 20 0 00-20-20h-76V40a16 16 0 00-16-16H192a16 16 0 00-16 16v32h-76a20 20 0 00-20 20v129.46l-33.08 13.06c-5.33 2.4-10.58 6-12.72 12s-3.16 11.81-1 19L84.25 415.7h1.06c34.12 0 64-17.41 85.31-43.82 21.32 26.41 51.18 42.12 85.3 42.12s64-15.76 85.31-42.17c21.32 26.41 51.18 43.87 85.3 43.87h1.06l51.25-150.17c2.16-6 1.07-13.1-1.07-19.11zM256 152l-144 56.83V108a4 4 0 014-4h280a4 4 0 014 4v100.76z'/><path d='M345.22 407c-52.25 36.26-126.35 36.25-178.6 0 0 0-45.64 63-94.64 63l13.33 1c29.86 0 58.65-11.73 85.31-25.59a185.33 185.33 0 00170.6 0c26.66 13.87 55.45 25.6 85.31 25.6l13.33-1C392.21 470 345.22 407 345.22 407z'/></svg>\"\nexport const body = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Body</title><circle cx='256' cy='56' r='56'/><path d='M437 128H75a27 27 0 000 54h101.88c6.91 0 15 3.09 19.58 15 5.35 13.83 2.73 40.54-.57 61.23l-4.32 24.45a.42.42 0 01-.12.35l-34.6 196.81A27.43 27.43 0 00179 511.58a27.06 27.06 0 0031.42-22.29l23.91-136.8S242 320 256 320c14.23 0 21.74 32.49 21.74 32.49l23.91 136.92a27.24 27.24 0 1053.62-9.6L320.66 283a.45.45 0 00-.11-.35l-4.33-24.45c-3.3-20.69-5.92-47.4-.57-61.23 4.56-11.88 12.91-15 19.28-15H437a27 27 0 000-54z'/></svg>\"\nexport const bodyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Body</title><circle stroke-miterlimit='10' cx='256' cy='56' r='40' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-miterlimit='10' d='M199.3 295.62h0l-30.4 172.2a24 24 0 0019.5 27.8 23.76 23.76 0 0027.6-19.5l21-119.9v.2s5.2-32.5 17.5-32.5h3.1c12.5 0 17.5 32.5 17.5 32.5v-.1l21 119.9a23.92 23.92 0 1047.1-8.4l-30.4-172.2-4.9-29.7c-2.9-18.1-4.2-47.6.5-59.7 4-10.4 14.13-14.2 23.2-14.2H424a24 24 0 000-48H88a24 24 0 000 48h92.5c9.23 0 19.2 3.8 23.2 14.2 4.7 12.1 3.4 41.6.5 59.7z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bodySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Body</title><circle cx='256' cy='56' r='56'/><path d='M464 128H48v52h144l-32 325.13 51 6.87 21.65-192h47.02L301 512l51-6.98L320 180h144v-52z'/></svg>\"\nexport const bonfire = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bonfire</title><path d='M273.38 368.37c-.81-9.23-8.86-16.44-18.55-16.44a18.63 18.63 0 00-18.2 14.07l-18.2 88.36a35.59 35.59 0 00-.93 7.87c0 19.93 16.68 33.77 37.33 33.77s37.34-13.84 37.34-33.77a36.16 36.16 0 00-1.29-9.45zM411.05 407.89a42.66 42.66 0 00-5.95-4.36L335.57 355c-6.77-4.24-14-4.13-19.25 1a13.52 13.52 0 00-2 17.19l52.5 69a38 38 0 004 4.69c9.1 10.16 29.28 10.72 40.37 0 10.94-10.96 10.81-30.39-.14-38.99zM463.3 335.93h-70.42c-4.55 0-8.88 3.35-8.88 8.15s2.95 7.85 6.92 9.16l66.43 20.55C467 376 480 367.44 480 356.71c0-13.63-7.6-20.78-16.7-20.78zM128.22 344.08c0-4.95-4.55-8.15-9.45-8.15H48.35c-8.87 0-16.35 9.58-16.35 20.31S44.62 376 54.3 373.79l67.43-20.55c4.39-1.31 6.49-4.24 6.49-9.16zM176.55 355.05L107 403.41a32.29 32.29 0 00-6 4.34 26.33 26.33 0 000 38.56 29.41 29.41 0 0040.36 0 30.75 30.75 0 004-4.68L197.9 373c3.5-5.57 2.92-12.48-2-17a15 15 0 00-19.35-.95zM293.46 242.39c10-5.42 19.45-10.54 28.31-16.16 42.46-26.92 62.23-59 62.23-101 0-64.66-56.07-104.4-108.82-109-6.49-.57-15-.42-19.91 3.88s-5.88 12.56-6.15 19.1c-1.38 33.61-28.38 59-57 85.86-28 26.3-56.93 53.49-62.71 91-8.41 54.68 21.74 86.71 40.46 100.93a31.88 31.88 0 0019.3 6.51 32.32 32.32 0 007.41-.87 31.75 31.75 0 0021.27-16.95c14.91-30.39 45.77-47.12 75.61-63.3z'/><path d='M139.82 156.57c12.22-15.76 27-29.68 41.37-43.15 19.92-18.72 37.81-35.58 46.5-53.86-12.24-7.37-27.36-11.36-46.51-11.36-17.79 0-20.39 5.18-20.39 19.06 0 12.56-6.53 20.54-14.34 30.65C137.8 109.1 128 121.77 128 140.84c0 10.23 1.29 18.77 4.2 26.37q3.5-5.32 7.62-10.64zM330.34 239.74c-9.33 5.92-19 11.16-29.25 16.71-28.91 15.68-56.21 30.48-68.88 56.28a62.6 62.6 0 01-1.88 3.61 8 8 0 003.89 11.3c12.31 5.1 25.13 8.27 38.91 8.27a111.42 111.42 0 0078.24-31.37A107.45 107.45 0 00384 226.85a86.56 86.56 0 00-1.33-15 8 8 0 00-13.8-4c-10.18 11.47-22.93 22-38.53 31.89z'/></svg>\"\nexport const bonfireOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bonfire</title><path d='M273.38 368.33c-.81-9.23-8.86-16.44-18.55-16.44a18.63 18.63 0 00-18.2 14.11l-18.2 88.38a35.75 35.75 0 00-.93 7.88c0 19.93 16.68 33.78 37.33 33.78s37.34-13.85 37.34-33.78a36.16 36.16 0 00-1.29-9.45zM411.05 407.86a41.78 41.78 0 00-5.95-4.35l-69.53-48.59c-6.77-4.25-14-4.13-19.25 1a13.53 13.53 0 00-2 17.2l52.5 69a36.57 36.57 0 004 4.69c9.1 10.17 29.28 10.73 40.37 0 10.94-10.91 10.81-30.35-.14-38.95zM463.3 335.88h-70.42c-4.55 0-8.88 3.35-8.88 8.16s2.95 7.85 6.92 9.16l66.43 20.55C467 376 480 367.4 480 356.66c0-13.66-7.6-20.78-16.7-20.78zM128.22 344c0-5-4.55-8.16-9.45-8.16H48.35c-8.87 0-16.35 9.58-16.35 20.32S44.62 376 54.3 373.75l67.43-20.55c4.39-1.31 6.49-4.2 6.49-9.2zM176.55 355L107 403.38a32.34 32.34 0 00-6 4.35 26.33 26.33 0 000 38.56 29.39 29.39 0 0040.36 0 30.75 30.75 0 004-4.68L197.9 373c3.5-5.58 2.92-12.49-2-17.06a15 15 0 00-19.35-.94z'/><path d='M368 125.09c0-55.7-49.22-89.16-94.2-93.06a8 8 0 00-8.69 7.71c-3.12 76-109.38 110.69-119.87 178.68-7 45.4 16.65 72.37 34.31 85.78a15.94 15.94 0 0023.93-5.62c22.5-45.86 74.33-63.49 109.72-85.94 42.88-27.2 54.8-56.44 54.8-87.55z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M240 95.7c-12.82-23-30.51-31-59.16-31.63a3.86 3.86 0 00-4.06 3.51c-.95 34.22-32.78 44.85-32.78 73.15 0 19.37 5.39 29 17.16 39.28M352.45 178.76c8.6 14.31 15.55 30.08 15.55 48 0 52.52-42.47 93.1-94.86 93.1a94.42 94.42 0 01-65.14-26' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bonfireSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bonfire</title><path d='M199.89 336l-15.25-5.62a100.35 100.35 0 01-32-23.08c-13.93-14.9-29.29-40.71-23.38-79.11 5.2-33.73 44.2-74.21 69.34-97.87 27.24-25.62 66-65.85 64.15-99.15L262 16h15.18C328.53 16 384 53.62 384 114.41c0 45.57-22 77.61-68.91 106.9-8 5-16.44 9.66-25.42 14.53-30.63 16.62-75.29 49.83-85.73 85.32zM181.19 113.59C201 95 218.91 78.15 227.62 59.79q-2.76-1.68-5.7-3.09c-11.87-5.69-26.1-8.34-44.76-8.34h-16.94l.56 16.49c.47 14.06-6.06 22.51-14.33 33.21C137.8 109.26 128 121.94 128 141c0 10.23 1.29 18.76 4.2 26.36q3.5-5.31 7.61-10.63c12.19-15.73 27.05-29.68 41.38-43.14z'/><path d='M330.34 239.85c-9.31 5.9-19 11.14-29.25 16.71-32.65 17.69-63.48 34.44-73.23 67.44l-.6 2a110.5 110.5 0 0045.87 10c29.66 0 57.45-11.13 78.24-31.36A107.38 107.38 0 00384 227a92.39 92.39 0 00-5.59-31c-11.35 16.18-27.14 30.58-48.07 43.85zM268.72 360h-25.44a4 4 0 00-3.92 3.22l-25.36 128a4 4 0 003.92 4.78h76.26a4 4 0 003.92-4.78l-25.41-128a4 4 0 00-3.97-3.22zM325.68 354.32l-11.36 11.36a4 4 0 00-.5 5.05l59.47 89.21a4 4 0 006.16.61l41.1-41.1a4 4 0 00-.61-6.16l-89.21-59.47a4 4 0 00-5.05.5zM388 336a4 4 0 00-4 4v8.61a4 4 0 003.34 3.95l88 14.66a4 4 0 004.66-3.94V340a4 4 0 00-4-4zM186.32 354.32l11.36 11.36a4 4 0 01.5 5.05l-59.47 89.21a4 4 0 01-6.16.61l-41.1-41.1a4 4 0 01.61-6.16l89.21-59.47a4 4 0 015.05.5zM124 336H36a4 4 0 00-4 4v23.28a4 4 0 004.66 3.94l88-14.66a4 4 0 003.34-3.95V340a4 4 0 00-4-4z'/></svg>\"\nexport const book = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Book</title><path d='M202.24 74C166.11 56.75 115.61 48.3 48 48a31.36 31.36 0 00-17.92 5.33A32 32 0 0016 79.9V366c0 19.34 13.76 33.93 32 33.93 71.07 0 142.36 6.64 185.06 47a4.11 4.11 0 006.94-3V106.82a15.89 15.89 0 00-5.46-12A143 143 0 00202.24 74zM481.92 53.3A31.33 31.33 0 00464 48c-67.61.3-118.11 8.71-154.24 26a143.31 143.31 0 00-32.31 20.78 15.93 15.93 0 00-5.45 12v337.13a3.93 3.93 0 006.68 2.81c25.67-25.5 70.72-46.82 185.36-46.81a32 32 0 0032-32v-288a32 32 0 00-14.12-26.61z'/></svg>\"\nexport const bookOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Book</title><path d='M256 160c16-63.16 76.43-95.41 208-96a15.94 15.94 0 0116 16v288a16 16 0 01-16 16c-128 0-177.45 25.81-208 64-30.37-38-80-64-208-64-9.88 0-16-8.05-16-17.93V80a15.94 15.94 0 0116-16c131.57.59 192 32.84 208 96zM256 160v288' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bookSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Book</title><path d='M464 48c-67.61.29-117.87 9.6-154.24 25.69-27.14 12-37.76 21.08-37.76 51.84V448c41.57-37.5 78.46-48 224-48V48zM48 48c67.61.29 117.87 9.6 154.24 25.69 27.14 12 37.76 21.08 37.76 51.84V448c-41.57-37.5-78.46-48-224-48V48z'/></svg>\"\nexport const bookmark = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bookmark</title><path d='M400 480a16 16 0 01-10.63-4L256 357.41 122.63 476A16 16 0 0196 464V96a64.07 64.07 0 0164-64h192a64.07 64.07 0 0164 64v368a16 16 0 01-16 16z'/></svg>\"\nexport const bookmarkOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bookmark</title><path d='M352 48H160a48 48 0 00-48 48v368l144-128 144 128V96a48 48 0 00-48-48z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bookmarkSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bookmark</title><path d='M416 480L256 357.41 96 480V32h320z'/></svg>\"\nexport const bookmarks = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bookmarks</title><path d='M400 0H176a64.11 64.11 0 00-62 48h228a74 74 0 0174 74v304.89l22 17.6a16 16 0 0019.34.5 16.41 16.41 0 006.66-13.42V64a64 64 0 00-64-64z'/><path d='M320 80H112a64 64 0 00-64 64v351.62A16.36 16.36 0 0054.6 509a16 16 0 0019.71-.71L216 388.92l141.69 119.32a16 16 0 0019.6.79 16.4 16.4 0 006.71-13.44V144a64 64 0 00-64-64z'/></svg>\"\nexport const bookmarksOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bookmarks</title><path d='M128 80V64a48.14 48.14 0 0148-48h224a48.14 48.14 0 0148 48v368l-80-64' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M320 96H112a48.14 48.14 0 00-48 48v352l152-128 152 128V144a48.14 48.14 0 00-48-48z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bookmarksSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bookmarks</title><path d='M112 0v48h304v368l48 32V0H112z'/><path d='M48 80v432l168-124 168 124V80H48z'/></svg>\"\nexport const bowlingBall = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bowling Ball</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM288 224a24 24 0 1124-24 24 24 0 01-24 24zm8-72a24 24 0 1124-24 24 24 0 01-24 24zm64 40a24 24 0 1124-24 24 24 0 01-24 24z'/></svg>\"\nexport const bowlingBallOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bowling Ball</title><circle cx='256' cy='256' r='208' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='288' cy='200' r='24'/><circle cx='296' cy='128' r='24'/><circle cx='360' cy='168' r='24'/></svg>\"\nexport const bowlingBallSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bowling Ball</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM286 230a28 28 0 1128-28 28 28 0 01-28 28zm8-76a28 28 0 1128-28 28 28 0 01-28 28zm68 44a28 28 0 1128-28 28 28 0 01-28 28z'/></svg>\"\nexport const briefcase = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Briefcase</title><path d='M336 80H176a16 16 0 00-16 16v16h192V96a16 16 0 00-16-16z' class='ionicon-fill-none'/><path d='M496 176a64.07 64.07 0 00-64-64h-48V96a48.05 48.05 0 00-48-48H176a48.05 48.05 0 00-48 48v16H80a64.07 64.07 0 00-64 64v48h480zm-144-64H160V96a16 16 0 0116-16h160a16 16 0 0116 16zM336 264a24 24 0 01-24 24H200a24 24 0 01-24-24v-4a4 4 0 00-4-4H16v144a64 64 0 0064 64h352a64 64 0 0064-64V256H340a4 4 0 00-4 4z'/></svg>\"\nexport const briefcaseOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Briefcase</title><rect x='32' y='128' width='448' height='320' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M144 128V96a32 32 0 0132-32h160a32 32 0 0132 32v32M480 240H32M320 240v24a8 8 0 01-8 8H200a8 8 0 01-8-8v-24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const briefcaseSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Briefcase</title><path d='M336 288H176v-32H16v196a12 12 0 0012 12h456a12 12 0 0012-12V256H336zM496 124a12 12 0 00-12-12H384V56a8 8 0 00-8-8H136a8 8 0 00-8 8v56H28a12 12 0 00-12 12v100h480zm-152-12H168V88h176z'/></svg>\"\nexport const browsers = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Browsers</title><path d='M416 48H96a64 64 0 00-64 64v288a64 64 0 0064 64h320a64 64 0 0064-64V112a64 64 0 00-64-64zm24 96H72a8 8 0 01-8-8v-24a32.09 32.09 0 0132-32h320a32.09 32.09 0 0132 32v24a8 8 0 01-8 8z'/></svg>\"\nexport const browsersOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Browsers</title><rect x='48' y='64' width='416' height='384' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M397.82 64H114.18C77.69 64 48 94.15 48 131.2V176h16c0-16 16-32 32-32h320c16 0 32 16 32 32h16v-44.8c0-37.05-29.69-67.2-66.18-67.2z'/></svg>\"\nexport const browsersSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Browsers</title><path d='M32 64v384a16 16 0 0016 16h416a16 16 0 0016-16V64a16 16 0 00-16-16H48a16 16 0 00-16 16zm408 364H72a4 4 0 01-4-4V152a4 4 0 014-4h368a4 4 0 014 4v272a4 4 0 01-4 4z'/></svg>\"\nexport const brush = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Brush</title><path d='M233.15 360.11a15.7 15.7 0 01-4.92-.77 16 16 0 01-10.92-13c-2.15-15-19.95-32.46-36.62-35.85a16 16 0 01-8.69-26.33l211.09-235.1c.19-.22.39-.43.59-.63a56.57 56.57 0 0179.89 0 56.51 56.51 0 01.11 79.78l-219 227a16 16 0 01-11.53 4.9zM119.89 480.11c-32.14 0-65.45-16.89-84.85-43a16 16 0 0112.85-25.54c5.34 0 20-4.87 20-20.57 0-39.07 31.4-70.86 70-70.86s70 31.79 70 70.86c0 49.12-39.48 89.11-88 89.11z'/></svg>\"\nexport const brushOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Brush</title><path d='M452.37 59.63h0a40.49 40.49 0 00-57.26 0L184 294.74c23.08 4.7 46.12 27.29 49.26 49.26l219.11-227.11a40.49 40.49 0 000-57.26zM138 336c-29.88 0-54 24.5-54 54.86 0 23.95-20.88 36.57-36 36.57C64.56 449.74 92.82 464 120 464c39.78 0 72-32.73 72-73.14 0-30.36-24.12-54.86-54-54.86z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const brushSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Brush</title><path d='M480 96l-64-64-244 260 64 64zM142 320c-36.52 0-66 30.63-66 68.57 0 25.43-31 45.72-44 45.72C52.24 462.17 86.78 480 120 480c48.62 0 88-40.91 88-91.43 0-37.94-29.48-68.57-66-68.57z'/></svg>\"\nexport const bug = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bug</title><path d='M463.55 272.13H400v-48.2q0-4.32-.27-8.47c29.57-27.88 32.25-64.63 32.27-103 0-8.61-6.64-16-15.25-16.41A16 16 0 00400 112c0 28-1.86 48.15-9.9 63.84-19.22-41.15-65.78-63.91-134.1-63.91-39.8 0-74.19 9.13-99.43 26.39-14.9 10.19-26.2 22.91-33.7 37.72C114 160.65 112 141 112 112.46c0-8.61-6.6-16-15.2-16.44A16 16 0 0080 112c0 37.63 2.61 73.73 32.44 101.63q-.43 5.06-.44 10.3v48.2H48.45c-8.61 0-16 6.62-16.43 15.23a16 16 0 0016 16.77h64V320a143.32 143.32 0 0010.39 53.69C96.74 396.64 80.18 422 80 463.34c0 8.74 6.62 16.3 15.36 16.65A16 16 0 00112 464c0-27.66 9.1-44.71 26.17-61.32A144.37 144.37 0 00220 459.42a16 16 0 0020-15.49V192.45c0-8.61 6.62-16 15.23-16.43A16 16 0 01272 192v251.93a16 16 0 0020 15.49 144.4 144.4 0 0081.82-56.74c17 16.54 26.09 33.52 26.17 60.95a16.27 16.27 0 0015.1 16.37A16 16 0 00432 464c0-41.68-16.6-67.23-42.39-90.31A143.32 143.32 0 00400 320v-15.87h64a16 16 0 0016-16.77c-.42-8.61-7.84-15.23-16.45-15.23z'/><path d='M321.39 104l.32.09c13.57 3.8 25.07-10.55 18.2-22.85A95.86 95.86 0 00256.21 32h-.42a95.87 95.87 0 00-84.19 50.13c-6.84 12.58 5.14 27 18.84 22.86 19.71-6 41.79-9.06 65.56-9.06 24.09 0 46.09 2.72 65.39 8.07z'/></svg>\"\nexport const bugOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bug</title><path d='M370 378c28.89 23.52 46 46.07 46 86M142 378c-28.89 23.52-46 46.06-46 86M384 208c28.89-23.52 32-56.07 32-96M128 206c-28.89-23.52-32-54.06-32-94M464 288.13h-80M128 288.13H48M256 192v256' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 448h0c-70.4 0-128-57.6-128-128v-96.07c0-65.07 57.6-96 128-96h0c70.4 0 128 25.6 128 96V320c0 70.4-57.6 128-128 128z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M179.43 143.52a49.08 49.08 0 01-3.43-15.73A80 80 0 01255.79 48h.42A80 80 0 01336 127.79a41.91 41.91 0 01-3.12 14.3' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bugSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bug</title><path d='M480 304.13v-32h-80V215.2c29.42-27.95 32-64.76 32-103.2V96h-32v16c0 28-1.86 48.15-9.9 63.84C368 128 324.32 112 256 112c-39.8 0-75.19 7.06-100.43 24.32-14.9 10.19-25.2 24.91-32.7 39.72C114 160.57 112 140.82 112 112V96H80v16c0 37.44 2.59 73.36 32 101.2v58.93H32v32l80-.13c0 19 3.7 53.09 10.39 69.69C96.6 396.76 80 422.31 80 464v16h32v-16c0-27.66 9.1-44.71 26.17-61.32C160 448 177 464 240 464V176h32v288c65 0 80-16 101.83-61.32C390.9 419.29 400 436.35 400 464v16h32v-16c0-41.68-16.6-67.23-42.39-90.31C396.3 357.09 400 323 400 304z'/><path d='M256 32c-48.06 0-96 0-96 84 26.12-14 59.35-20 96-20 24.09 0 46.09 2.65 65.39 8 10.75 3 24.66 8.71 30.61 12 0-84-47.94-84-96-84z'/></svg>\"\nexport const build = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Build</title><path d='M469.54 120.52a16 16 0 00-25.54-4L382.56 178a16.12 16.12 0 01-22.63 0l-26.56-26.6a16 16 0 010-22.63l61.18-61.19a16 16 0 00-4.78-25.92C343.56 21 285.88 31.78 249.51 67.88c-30.9 30.68-40.11 78.62-25.25 131.53a15.89 15.89 0 01-4.49 16L53.29 367.46a64.17 64.17 0 1090.6 90.64l153.68-166.85a15.9 15.9 0 0115.77-4.57 179.3 179.3 0 0046.22 6.37c33.4 0 62.71-10.81 83.85-31.64 39.15-38.57 45.12-103.99 26.13-140.89zM99.48 447.15a32 32 0 1128.34-28.35 32 32 0 01-28.34 28.35z'/></svg>\"\nexport const buildOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Build</title><path d='M393.87 190a32.1 32.1 0 01-45.25 0l-26.57-26.57a32.09 32.09 0 010-45.26L382.19 58a1 1 0 00-.3-1.64c-38.82-16.64-89.15-8.16-121.11 23.57-30.58 30.35-32.32 76-21.12 115.84a31.93 31.93 0 01-9.06 32.08L64 380a48.17 48.17 0 1068 68l153.86-167a31.93 31.93 0 0131.6-9.13c39.54 10.59 84.54 8.6 114.72-21.19 32.49-32 39.5-88.56 23.75-120.93a1 1 0 00-1.6-.26z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='96' cy='416' r='16'/></svg>\"\nexport const buildSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Build</title><path d='M230 209.2L32 405.58 106.65 480l197.59-198.17c46.47 17.46 105.52 12.54 143-24.78 40.44-40.32 40.35-108 16.81-156.79l-87.33 87.06-52.32-52.13 87.33-87.06C363 24.46 294.67 24.34 254.23 64.66c-38.03 37.91-42.78 97.6-24.23 144.54z'/></svg>\"\nexport const bulb = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bulb</title><path d='M288 464h-64a16 16 0 000 32h64a16 16 0 000-32zM304 416h-96a16 16 0 000 32h96a16 16 0 000-32zM369.42 62.69C339.35 32.58 299.07 16 256 16A159.62 159.62 0 0096 176c0 46.62 17.87 90.23 49 119.64l4.36 4.09C167.37 316.57 192 339.64 192 360v24a16 16 0 0016 16h24a8 8 0 008-8V274.82a8 8 0 00-5.13-7.47A130.73 130.73 0 01208.71 253a16 16 0 1118.58-26c7.4 5.24 21.65 13 28.71 13s21.31-7.78 28.73-13a16 16 0 0118.56 26 130.73 130.73 0 01-26.16 14.32 8 8 0 00-5.13 7.47V392a8 8 0 008 8h24a16 16 0 0016-16v-24c0-19.88 24.36-42.93 42.15-59.77l4.91-4.66C399.08 265 416 223.61 416 176a159.16 159.16 0 00-46.58-113.31z'/></svg>\"\nexport const bulbOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bulb</title><path d='M304 384v-24c0-29 31.54-56.43 52-76 28.84-27.57 44-64.61 44-108 0-80-63.73-144-144-144a143.6 143.6 0 00-144 144c0 41.84 15.81 81.39 44 108 20.35 19.21 52 46.7 52 76v24M224 480h64M208 432h96M256 384V256' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M294 240s-21.51 16-38 16-38-16-38-16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const bulbSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bulb</title><path d='M208 464h96v32h-96zM192 416h128v32H192zM369.42 62.69C339.35 32.58 299.07 16 256 16A159.62 159.62 0 0096 176c0 46.62 17.87 90.23 49 119.64l4.36 4.09C167.37 316.57 192 339.64 192 360v40h48V269.11L195.72 244 214 217.72 256 240l41.29-22.39 19.1 25.68-44.39 26V400h48v-40c0-19.88 24.36-42.93 42.15-59.77l4.91-4.66C399.08 265 416 223.61 416 176a159.16 159.16 0 00-46.58-113.31z'/></svg>\"\nexport const bus = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bus</title><path d='M400 32H112a48 48 0 00-48 48v320a47.91 47.91 0 0016 35.74V454a26 26 0 0026 26h28a26 26 0 0026-26v-6h192v6a26 26 0 0026 26h28a26 26 0 0026-26v-18.26A47.91 47.91 0 00448 400V80a48 48 0 00-48-48zM147.47 399.82a32 32 0 1128.35-28.35 32 32 0 01-28.35 28.35zM236 288H112a16 16 0 01-16-16V144a16 16 0 0116-16h124a4 4 0 014 4v152a4 4 0 01-4 4zm20-192H112.46c-8.6 0-16-6.6-16.44-15.19A16 16 0 01112 64h287.54c8.6 0 16 6.6 16.44 15.19A16 16 0 01400 96H256zm20 32h124a16 16 0 0116 16v128a16 16 0 01-16 16H276a4 4 0 01-4-4V132a4 4 0 014-4zm60.18 243.47a32 32 0 1128.35 28.35 32 32 0 01-28.35-28.35z'/></svg>\"\nexport const busOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bus</title><rect x='80' y='112' width='352' height='192' rx='32' ry='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='80' y='304' width='352' height='128' rx='32' ry='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M400 112H112a32.09 32.09 0 01-32-32h0a32.09 32.09 0 0132-32h288a32.09 32.09 0 0132 32h0a32.09 32.09 0 01-32 32zM144 432v22a10 10 0 01-10 10h-28a10 10 0 01-10-10v-22zM416 432v22a10 10 0 01-10 10h-28a10 10 0 01-10-10v-22z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='368' cy='368' r='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='144' cy='368' r='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 112v192M80 80v288M432 80v288' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const busSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Bus</title><path d='M400 64H112a16 16 0 000 32h288a16 16 0 000-32z' class='ionicon-fill-none'/><path d='M424 32H88a24 24 0 00-24 24v360a32 32 0 0016 27.71V480h72v-32h208v32h72v-36.29A32 32 0 00448 416V56a24 24 0 00-24-24zM175.82 371.47a32 32 0 11-35.3-35.29 32.09 32.09 0 0135.3 35.29zM240 288H96V128h144zm16-192H96.46L96 64h320l-.46 32H256zm16 32h144v160H272zm64.18 236.53a32 32 0 1135.3 35.29 32.09 32.09 0 01-35.3-35.29z'/></svg>\"\nexport const business = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Business</title><path d='M432 176H320V64a48 48 0 00-48-48H80a48 48 0 00-48 48v416a16 16 0 0016 16h104a8 8 0 008-8v-71.55c0-8.61 6.62-16 15.23-16.43A16 16 0 01192 416v72a8 8 0 008 8h264a16 16 0 0016-16V224a48 48 0 00-48-48zM98.08 431.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm80 240a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm80 320a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zm0-80a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM444 464H320V208h112a16 16 0 0116 16v236a4 4 0 01-4 4z'/><path d='M400 400a16 16 0 1016 16 16 16 0 00-16-16zM400 320a16 16 0 1016 16 16 16 0 00-16-16zM400 240a16 16 0 1016 16 16 16 0 00-16-16zM336 400a16 16 0 1016 16 16 16 0 00-16-16zM336 320a16 16 0 1016 16 16 16 0 00-16-16zM336 240a16 16 0 1016 16 16 16 0 00-16-16z'/></svg>\"\nexport const businessOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Business</title><path stroke-linecap='round' stroke-linejoin='round' d='M176 416v64M80 32h192a32 32 0 0132 32v412a4 4 0 01-4 4H48h0V64a32 32 0 0132-32zM320 192h112a32 32 0 0132 32v256h0-160 0V208a16 16 0 0116-16z' class='ionicon-fill-none ionicon-stroke-width'/><path d='M98.08 431.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM98.08 351.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM98.08 271.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM98.08 191.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM98.08 111.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM178.08 351.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM178.08 271.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM178.08 191.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM178.08 111.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM258.08 431.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM258.08 351.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM258.08 271.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79z'/><ellipse cx='256' cy='176' rx='15.95' ry='16.03' transform='rotate(-45 255.99 175.996)'/><path d='M258.08 111.87a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79zM400 400a16 16 0 1016 16 16 16 0 00-16-16zM400 320a16 16 0 1016 16 16 16 0 00-16-16zM400 240a16 16 0 1016 16 16 16 0 00-16-16zM336 400a16 16 0 1016 16 16 16 0 00-16-16zM336 320a16 16 0 1016 16 16 16 0 00-16-16zM336 240a16 16 0 1016 16 16 16 0 00-16-16z'/></svg>\"\nexport const businessSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Business</title><path d='M320 176V16H32v480h128v-96h32v96h288V176zM112 432H80v-32h32zm0-80H80v-32h32zm0-80H80v-32h32zm0-80H80v-32h32zm0-80H80V80h32zm128-32h32v32h-32zm-48 272h-32v-32h32zm0-80h-32v-32h32zm0-80h-32v-32h32zm0-80h-32V80h32zm80 320h-32v-32h32zm0-80h-32v-32h32zm0-80h-32v-32h32zm0-80h-32v-32h32v32zm176 272H320v-32h32v-32h-32v-48h32v-32h-32v-48h32v-32h-32v-32h128z'/><path d='M384 400h32v32h-32zM384 320h32v32h-32zM384 240h32v32h-32z'/></svg>\"\nexport const cafe = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cafe</title><path d='M432 64H96a16 16 0 00-16 16v192a96.11 96.11 0 0096 96h112a96.11 96.11 0 0096-96v-80h18a62.07 62.07 0 0062-62V96a32 32 0 00-32-32zm0 66a30 30 0 01-30 30h-18V96h48zM400 400H64a16 16 0 000 32h336a16 16 0 000-32z'/></svg>\"\nexport const cafeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cafe</title><path d='M368 80h64a16 16 0 0116 16v34a46 46 0 01-46 46h-34M96 80h272v192a80 80 0 01-80 80H176a80 80 0 01-80-80V80h0zM64 416h336' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cafeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cafe</title><path d='M448 64H80v254.34a19.83 19.83 0 005.86 14.14l29.65 29.66a19.87 19.87 0 0014.15 5.86h204.68a19.87 19.87 0 0014.15-5.86l29.65-29.66a19.83 19.83 0 005.86-14.14V192h32a16 16 0 0011.31-4.69l32-32A16 16 0 00464 144V80a16 16 0 00-16-16zm-16 73.37L409.37 160H384V96h48zM48 400h368v32H48z'/></svg>\"\nexport const calculator = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calculator</title><path d='M416 80a48.05 48.05 0 00-48-48H144a48.05 48.05 0 00-48 48v352a48.05 48.05 0 0048 48h224a48.05 48.05 0 0048-48zM168 432a24 24 0 1124-24 24 24 0 01-24 24zm0-80a24 24 0 1124-24 24 24 0 01-24 24zm0-80a24 24 0 1124-24 24 24 0 01-24 24zm88 160a24 24 0 1124-24 24 24 0 01-24 24zm0-80a24 24 0 1124-24 24 24 0 01-24 24zm0-80a24 24 0 1124-24 24 24 0 01-24 24zm112 136a24 24 0 01-48 0v-80a24 24 0 0148 0zm-24-136a24 24 0 1124-24 24 24 0 01-24 24zm19.31-100.69A16 16 0 01352 176H160a16 16 0 01-16-16V96a16 16 0 0116-16h192a16 16 0 0116 16v64a16 16 0 01-4.69 11.31z'/></svg>\"\nexport const calculatorOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calculator</title><rect x='112' y='48' width='288' height='416' rx='32' ry='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M160.01 112H352v64H160.01z' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='168' cy='248' r='24'/><circle cx='256' cy='248' r='24'/><circle cx='344' cy='248' r='24'/><circle cx='168' cy='328' r='24'/><circle cx='256' cy='328' r='24'/><circle cx='168' cy='408' r='24'/><circle cx='256' cy='408' r='24'/><rect x='320' y='304' width='48' height='128' rx='24' ry='24'/></svg>\"\nexport const calculatorSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calculator</title><path d='M416 48a16 16 0 00-16-16H112a16 16 0 00-16 16v416a16 16 0 0016 16h288a16 16 0 0016-16zM192 432h-48v-48h48zm0-80h-48v-48h48zm0-80h-48v-48h48zm88 160h-48v-48h48zm0-80h-48v-48h48zm0-80h-48v-48h48zm88 160h-48V304h48zm0-160h-48v-48h48zm0-96H144V80h224z'/></svg>\"\nexport const calendar = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar</title><path d='M480 128a64 64 0 00-64-64h-16V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00368 48v16H144V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00112 48v16H96a64 64 0 00-64 64v12a4 4 0 004 4h440a4 4 0 004-4zM32 416a64 64 0 0064 64h320a64 64 0 0064-64V179a3 3 0 00-3-3H35a3 3 0 00-3 3zm344-208a24 24 0 11-24 24 24 24 0 0124-24zm0 80a24 24 0 11-24 24 24 24 0 0124-24zm-80-80a24 24 0 11-24 24 24 24 0 0124-24zm0 80a24 24 0 11-24 24 24 24 0 0124-24zm0 80a24 24 0 11-24 24 24 24 0 0124-24zm-80-80a24 24 0 11-24 24 24 24 0 0124-24zm0 80a24 24 0 11-24 24 24 24 0 0124-24zm-80-80a24 24 0 11-24 24 24 24 0 0124-24zm0 80a24 24 0 11-24 24 24 24 0 0124-24z'/></svg>\"\nexport const calendarClear = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar Clear</title><path d='M480 128a64 64 0 00-64-64h-16V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00368 48v16H144V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00112 48v16H96a64 64 0 00-64 64v12a4 4 0 004 4h440a4 4 0 004-4zM32 416a64 64 0 0064 64h320a64 64 0 0064-64V180a4 4 0 00-4-4H36a4 4 0 00-4 4z'/></svg>\"\nexport const calendarClearOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar Clear</title><rect stroke-linejoin='round' x='48' y='80' width='416' height='384' rx='48' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' stroke-linecap='round' d='M128 48v32M384 48v32M464 160H48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const calendarClearSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar Clear</title><path d='M32 456a24 24 0 0024 24h400a24 24 0 0024-24V192H32zM480 87.77A23.8 23.8 0 00456 64h-55.92V32h-48v32H159.92V32h-48v32H56a23.8 23.8 0 00-24 23.77V144h448z'/></svg>\"\nexport const calendarNumber = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar Number</title><path d='M416 64h-16V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00368 48v16H144V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00112 48v16H96a64 64 0 00-64 64v12a4 4 0 004 4h440a4 4 0 004-4v-12a64 64 0 00-64-64zM476 176H36a4 4 0 00-4 4v236a64 64 0 0064 64h320a64 64 0 0064-64V180a4 4 0 00-4-4zM239.58 401.1c-12.17 9.61-28.75 14.9-46.7 14.9-27.87 0-48.48-18.16-57.66-33.7a16 16 0 0127.56-16.3c1.08 1.84 11.15 18 30.1 18 16.66 0 36.12-7.29 36.12-27.82 0-6.25-1.22-14.95-7-20.88-8.54-8.74-22.75-12.67-30.11-12.67a16 16 0 010-32c4.85 0 17.41-2.6 25.28-10.65a22 22 0 006.57-16.08c0-23.23-28.63-23.9-31.89-23.9-17.34 0-23.8 10.61-24.07 11.06a16 16 0 11-27.55-16.26c7.64-13 25.22-26.8 51.62-26.8 16.44 0 31.76 4.77 43.13 13.42 13.39 10.2 20.76 25.28 20.76 42.48A54 54 0 01240 302.35c-1.15 1.18-2.36 2.28-3.59 3.35a66.18 66.18 0 018.42 7.23c10.56 10.8 16.14 25.75 16.14 43.25.03 18.06-7.58 34.01-21.39 44.92zM368 396a16 16 0 01-32 0V256.29l-22.51 16.59a16 16 0 11-19-25.76l43.42-32a16 16 0 019.49-3.12h4.6a16 16 0 0116 16z'/></svg>\"\nexport const calendarNumberOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar Number</title><rect x='48' y='80' width='416' height='384' rx='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M128 48v32M384 48v32M464 160H48M304 260l43.42-32H352v168M191.87 306.63c9.11 0 25.79-4.28 36.72-15.47a37.9 37.9 0 0011.13-27.26c0-26.12-22.59-39.9-47.89-39.9-21.4 0-33.52 11.61-37.85 18.93M149 374.16c4.88 8.27 19.71 25.84 43.88 25.84 28.59 0 52.12-15.94 52.12-43.82 0-12.62-3.66-24-11.58-32.07-12.36-12.64-31.25-17.48-41.55-17.48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const calendarNumberSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar Number</title><path d='M32 456a24 24 0 0024 24h400a24 24 0 0024-24V176H32zm310.17-244H368v200h-32V256.29l-35.39 26.08-19-25.76zM222 335.3c-8.54-8.74-22.75-12.67-30.11-12.67h-16v-32h16c4.85 0 17.41-2.6 25.28-10.65a22 22 0 006.57-16.08c0-23.23-28.63-23.9-31.89-23.9-17.34 0-23.8 10.61-24.07 11.06l-8.13 13.78-27.56-16.27 8.14-13.77c7.64-13 25.22-26.8 51.62-26.8 16.44 0 31.76 4.77 43.13 13.42 13.39 10.2 20.76 25.28 20.76 42.48A54 54 0 01240 302.35c-1.15 1.18-2.36 2.28-3.59 3.35a66.18 66.18 0 018.42 7.23c10.56 10.8 16.14 25.75 16.14 43.25 0 18.06-7.61 34-21.42 44.92-12.17 9.61-28.75 14.9-46.7 14.9-27.87 0-48.48-18.16-57.66-33.7l-8.13-13.78 27.56-16.27 8.16 13.75c1.08 1.84 11.15 18 30.1 18 16.66 0 36.12-7.29 36.12-27.82 0-6.25-1.22-14.95-7-20.88zM456 64h-55.92V32h-48v32H159.92V32h-48v32H56a23.8 23.8 0 00-24 23.77V144h448V87.77A23.8 23.8 0 00456 64z'/></svg>\"\nexport const calendarOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar</title><rect stroke-linejoin='round' x='48' y='80' width='416' height='384' rx='48' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='296' cy='232' r='24'/><circle cx='376' cy='232' r='24'/><circle cx='296' cy='312' r='24'/><circle cx='376' cy='312' r='24'/><circle cx='136' cy='312' r='24'/><circle cx='216' cy='312' r='24'/><circle cx='136' cy='392' r='24'/><circle cx='216' cy='392' r='24'/><circle cx='296' cy='392' r='24'/><path stroke-linejoin='round' stroke-linecap='round' d='M128 48v32M384 48v32' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' d='M464 160H48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const calendarSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Calendar</title><path d='M32 456a24 24 0 0024 24h400a24 24 0 0024-24V176H32zm320-244a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm0 80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm-80-80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm0 80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm0 80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm-80-80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm0 80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm-80-80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zm0 80a4 4 0 014-4h40a4 4 0 014 4v40a4 4 0 01-4 4h-40a4 4 0 01-4-4zM456 64h-55.92V32h-48v32H159.92V32h-48v32H56a23.8 23.8 0 00-24 23.77V144h448V87.77A23.8 23.8 0 00456 64z'/></svg>\"\nexport const call = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Call</title><path d='M391 480c-19.52 0-46.94-7.06-88-30-49.93-28-88.55-53.85-138.21-103.38C116.91 298.77 93.61 267.79 61 208.45c-36.84-67-30.56-102.12-23.54-117.13C45.82 73.38 58.16 62.65 74.11 52a176.3 176.3 0 0128.64-15.2c1-.43 1.93-.84 2.76-1.21 4.95-2.23 12.45-5.6 21.95-2 6.34 2.38 12 7.25 20.86 16 18.17 17.92 43 57.83 52.16 77.43 6.15 13.21 10.22 21.93 10.23 31.71 0 11.45-5.76 20.28-12.75 29.81-1.31 1.79-2.61 3.5-3.87 5.16-7.61 10-9.28 12.89-8.18 18.05 2.23 10.37 18.86 41.24 46.19 68.51s57.31 42.85 67.72 45.07c5.38 1.15 8.33-.59 18.65-8.47 1.48-1.13 3-2.3 4.59-3.47 10.66-7.93 19.08-13.54 30.26-13.54h.06c9.73 0 18.06 4.22 31.86 11.18 18 9.08 59.11 33.59 77.14 51.78 8.77 8.84 13.66 14.48 16.05 20.81 3.6 9.53.21 17-2 22-.37.83-.78 1.74-1.21 2.75a176.49 176.49 0 01-15.29 28.58c-10.63 15.9-21.4 28.21-39.38 36.58A67.42 67.42 0 01391 480z'/></svg>\"\nexport const callOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Call</title><path d='M451 374c-15.88-16-54.34-39.35-73-48.76-24.3-12.24-26.3-13.24-45.4.95-12.74 9.47-21.21 17.93-36.12 14.75s-47.31-21.11-75.68-49.39-47.34-61.62-50.53-76.48 5.41-23.23 14.79-36c13.22-18 12.22-21 .92-45.3-8.81-18.9-32.84-57-48.9-72.8C119.9 44 119.9 47 108.83 51.6A160.15 160.15 0 0083 65.37C67 76 58.12 84.83 51.91 98.1s-9 44.38 23.07 102.64 54.57 88.05 101.14 134.49S258.5 406.64 310.85 436c64.76 36.27 89.6 29.2 102.91 23s22.18-15 32.83-31a159.09 159.09 0 0013.8-25.8C465 391.17 468 391.17 451 374z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const callSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Call</title><path d='M478.94 370.14c-5.22-5.56-23.65-22-57.53-43.75-34.13-21.94-59.3-35.62-66.52-38.81a3.83 3.83 0 00-3.92.49c-11.63 9.07-31.21 25.73-32.26 26.63-6.78 5.81-6.78 5.81-12.33 4-9.76-3.2-40.08-19.3-66.5-45.78s-43.35-57.55-46.55-67.3c-1.83-5.56-1.83-5.56 4-12.34.9-1.05 17.57-20.63 26.64-32.25a3.83 3.83 0 00.49-3.92c-3.19-7.23-16.87-32.39-38.81-66.52-21.78-33.87-38.2-52.3-43.76-57.52a3.9 3.9 0 00-3.89-.87 322.35 322.35 0 00-56 25.45A338 338 0 0033.35 92a3.83 3.83 0 00-1.26 3.74c2.09 9.74 12.08 50.4 43.08 106.72 31.63 57.48 53.55 86.93 100 133.22S252 405.21 309.54 436.84c56.32 31 97 41 106.72 43.07a3.86 3.86 0 003.75-1.26A337.73 337.73 0 00454.35 430a322.7 322.7 0 0025.45-56 3.9 3.9 0 00-.86-3.86z'/></svg>\"\nexport const camera = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Camera</title><circle cx='256' cy='272' r='64'/><path d='M432 144h-59c-3 0-6.72-1.94-9.62-5l-25.94-40.94a15.52 15.52 0 00-1.37-1.85C327.11 85.76 315 80 302 80h-92c-13 0-25.11 5.76-34.07 16.21a15.52 15.52 0 00-1.37 1.85l-25.94 41c-2.22 2.42-5.34 5-8.62 5v-8a16 16 0 00-16-16h-24a16 16 0 00-16 16v8h-4a48.05 48.05 0 00-48 48V384a48.05 48.05 0 0048 48h352a48.05 48.05 0 0048-48V192a48.05 48.05 0 00-48-48zM256 368a96 96 0 1196-96 96.11 96.11 0 01-96 96z'/></svg>\"\nexport const cameraOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Camera</title><path d='M350.54 148.68l-26.62-42.06C318.31 100.08 310.62 96 302 96h-92c-8.62 0-16.31 4.08-21.92 10.62l-26.62 42.06C155.85 155.23 148.62 160 140 160H80a32 32 0 00-32 32v192a32 32 0 0032 32h352a32 32 0 0032-32V192a32 32 0 00-32-32h-59c-8.65 0-16.85-4.77-22.46-11.32z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='272' r='80' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M124 158v-22h-24v22' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cameraReverse = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Camera Reverse</title><path d='M432 144h-59c-3 0-6.72-1.94-9.62-5l-25.94-40.94a15.52 15.52 0 00-1.37-1.85C327.11 85.76 315 80 302 80h-92c-13 0-25.11 5.76-34.07 16.21a15.52 15.52 0 00-1.37 1.85l-25.94 41c-2.22 2.42-5.34 5-8.62 5v-8a16 16 0 00-16-16h-24a16 16 0 00-16 16v8h-4a48.05 48.05 0 00-48 48V384a48.05 48.05 0 0048 48h352a48.05 48.05 0 0048-48V192a48.05 48.05 0 00-48-48zM316.84 346.3a96.06 96.06 0 01-155.66-59.18 16 16 0 01-16.49-26.43l20-20a16 16 0 0122.62 0l20 20A16 16 0 01196 288a17.31 17.31 0 01-2-.14 64.07 64.07 0 00102.66 33.63 16 16 0 1120.21 24.81zm50.47-63l-20 20a16 16 0 01-22.62 0l-20-20a16 16 0 0113.09-27.2A64 64 0 00215 222.64 16 16 0 11194.61 198a96 96 0 01156 59 16 16 0 0116.72 26.35z'/></svg>\"\nexport const cameraReverseOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Camera Reverse</title><path d='M350.54 148.68l-26.62-42.06C318.31 100.08 310.62 96 302 96h-92c-8.62 0-16.31 4.08-21.92 10.62l-26.62 42.06C155.85 155.23 148.62 160 140 160H80a32 32 0 00-32 32v192a32 32 0 0032 32h352a32 32 0 0032-32V192a32 32 0 00-32-32h-59c-8.65 0-16.85-4.77-22.46-11.32z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M124 158v-22h-24v22M335.76 285.22v-13.31a80 80 0 00-131-61.6M176 258.78v13.31a80 80 0 00130.73 61.8' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M196 272l-20-20-20 20M356 272l-20 20-20-20' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cameraReverseSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Camera Reverse</title><path d='M456 144h-83c-3 0-6.72-1.94-9.62-5l-27.31-42.79C326 80 320 80 302 80h-92c-18 0-23 0-34.07 16.21L148.62 139c-2.22 2.42-5.34 5-8.62 5v-16a8 8 0 00-8-8H92a8 8 0 00-8 8v16H56a24 24 0 00-24 24v240a24 24 0 0024 24h400a24 24 0 0024-24V168a24 24 0 00-24-24zM256 368c-47.82 0-87.76-34.23-95-80h-43.63L176 229.37 234.63 288H194a64.07 64.07 0 00102.63 33.49L320 343l-3.68 3.72A96.64 96.64 0 01256 368zm80-53.84L277.11 256H318a64.26 64.26 0 00-103-33.36L192 200l3.14-2.45A96.19 96.19 0 01255.76 176c47.85 0 87 34.19 94.24 80h44.92z'/></svg>\"\nexport const cameraSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Camera</title><circle cx='256' cy='272' r='64'/><path d='M456 144h-83c-3 0-6.72-1.94-9.62-5L336.1 96.2C325 80 320 80 302 80h-92c-18 0-24 0-34.07 16.21L148.62 139c-2.22 2.42-5.34 5-8.62 5v-16a8 8 0 00-8-8H92a8 8 0 00-8 8v16H56a24 24 0 00-24 24v240a24 24 0 0024 24h400a24 24 0 0024-24V168a24 24 0 00-24-24zM260.51 367.9a96 96 0 1191.39-91.39 96.11 96.11 0 01-91.39 91.39z'/></svg>\"\nexport const car = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Car</title><path d='M447.68 220.78a16 16 0 00-1-3.08l-37.78-88.16C400.19 109.17 379 96 354.89 96H157.11c-24.09 0-45.3 13.17-54 33.54L65.29 217.7A15.72 15.72 0 0064 224v176a16 16 0 0016 16h32a16 16 0 0016-16v-16h256v16a16 16 0 0016 16h32a16 16 0 0016-16V224a16.15 16.15 0 00-.32-3.22zM144 320a32 32 0 1132-32 32 32 0 01-32 32zm224 0a32 32 0 1132-32 32 32 0 01-32 32zM104.26 208l28.23-65.85C136.11 133.69 146 128 157.11 128h197.78c11.1 0 21 5.69 24.62 14.15L407.74 208z'/></svg>\"\nexport const carOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Car</title><path d='M80 224l37.78-88.15C123.93 121.5 139.6 112 157.11 112h197.78c17.51 0 33.18 9.5 39.33 23.85L432 224M80 224h352v144H80zM112 368v32H80v-32M432 368v32h-32v-32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='144' cy='288' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='368' cy='288' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const carSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Car</title><path d='M447.68 220.78a16.44 16.44 0 00-1-3.1l-48-112A16 16 0 00384 96H128a16 16 0 00-14.71 9.7l-48 112a16.44 16.44 0 00-1 3.1A16.15 16.15 0 0064 224v184a8 8 0 008 8h32a8 8 0 008-8v-24h288v24a8 8 0 008 8h32a8 8 0 008-8V224a16.15 16.15 0 00-.32-3.22zM144 320a32 32 0 1132-32 32 32 0 01-32 32zm224 0a32 32 0 1132-32 32 32 0 01-32 32zM104.26 208l34.29-80h234.9l34.29 80z'/></svg>\"\nexport const carSport = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Car Sport</title><path d='M494.26 276.22c-3.6-40.41-9.53-48.28-11.77-51.24-5.15-6.84-13.39-11.31-22.11-16a3.6 3.6 0 01-.91-5.68 15.93 15.93 0 004.53-12.53A16.27 16.27 0 00447.65 176h-15.6a17 17 0 00-2 .13 8.5 8.5 0 00-1.41-.47c-9.24-19.53-21.89-46.27-48.11-59.32C341.64 97 270 96 256 96s-85.64 1-124.48 20.31c-26.22 13.05-38.87 39.79-48.11 59.32l-.08.16a6.52 6.52 0 00-1.35.34 17 17 0 00-2-.13H64.35A16.27 16.27 0 0048 190.77a15.93 15.93 0 004.59 12.47 3.6 3.6 0 01-.91 5.68c-8.72 4.72-17 9.19-22.11 16-2.24 3-8.16 10.83-11.77 51.24-2 22.74-2.3 46.28-.73 61.44 3.29 31.5 9.46 50.54 9.72 51.33a16 16 0 0013.2 10.87v.2a16 16 0 0016 16h56a16 16 0 0016-16c8.61 0 14.6-1.54 20.95-3.18a158.83 158.83 0 0128-4.91C207.45 389 237.79 388 256 388c17.84 0 49.52 1 80.08 3.91a159.16 159.16 0 0128.11 4.93c6.08 1.56 11.85 3 19.84 3.15a16 16 0 0016 16h56a16 16 0 0016-16v-.12A16 16 0 00485.27 389c.26-.79 6.43-19.83 9.72-51.33 1.57-15.17 1.29-38.67-.73-61.45zm-381.93-86.91c8-17 17.15-36.24 33.44-44.35 23.54-11.72 72.33-17 110.23-17s86.69 5.24 110.23 17c16.29 8.11 25.4 27.36 33.44 44.35l1 2.17a8 8 0 01-7.44 11.42C360 202 290 199.12 256 199.12s-104 2.95-137.28 3.85a8 8 0 01-7.44-11.42c.35-.74.72-1.49 1.05-2.24zm11.93 79.63A427.17 427.17 0 0172.42 272c-10.6 0-21.53-3-23.56-12.44-1.39-6.35-1.24-9.92-.49-13.51C49 243 50 240.78 55 240c13-2 20.27.51 41.55 6.78 14.11 4.15 24.29 9.68 30.09 14.06 2.91 2.16 1.36 7.8-2.38 8.1zm221.38 82c-13.16 1.5-39.48.95-89.34.95s-76.17.55-89.33-.95c-13.58-1.51-30.89-14.35-19.07-25.79 7.87-7.54 26.23-13.18 50.68-16.35s34.8-4.8 57.62-4.8 32.12 1 57.62 4.81 44.77 9.52 50.68 16.35c10.78 12.24-5.29 24.19-18.86 25.84zm117.5-91.39c-2 9.48-13 12.44-23.56 12.44a455.91 455.91 0 01-52.84-3.06c-3.06-.29-4.48-5.66-1.38-8.1 5.71-4.49 16-9.91 30.09-14.06 21.28-6.27 33.55-8.78 44.09-6.69 2.57.51 3.93 3.27 4.09 5a40.64 40.64 0 01-.49 14.48z'/></svg>\"\nexport const carSportOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Car Sport</title><path d='M469.71 234.6c-7.33-9.73-34.56-16.43-46.08-33.94s-20.95-55.43-50.27-70S288 112 256 112s-88 4-117.36 18.63-38.75 52.52-50.27 70-38.75 24.24-46.08 33.97S29.8 305.84 32.94 336s9 48 9 48h86c14.08 0 18.66-5.29 47.46-8 31.6-3 62.6-4 80.6-4s50 1 81.58 4c28.8 2.73 33.53 8 47.46 8h85s5.86-17.84 9-48-2.04-91.67-9.33-101.4zM400 384h56v16h-56zM56 384h56v16H56z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M364.47 309.16c-5.91-6.83-25.17-12.53-50.67-16.35S279 288 256.2 288s-33.17 1.64-57.61 4.81-42.79 8.81-50.66 16.35C136.12 320.6 153.42 333.44 167 335c13.16 1.5 39.47.95 89.31.95s76.15.55 89.31-.95c13.56-1.65 29.62-13.6 18.85-25.84zM431.57 243.05a3.23 3.23 0 00-3.1-3c-11.81-.42-23.8.42-45.07 6.69a93.88 93.88 0 00-30.08 15.06c-2.28 1.78-1.47 6.59 1.39 7.1a455.32 455.32 0 0052.82 3.1c10.59 0 21.52-3 23.55-12.44a52.41 52.41 0 00.49-16.51zM80.43 243.05a3.23 3.23 0 013.1-3c11.81-.42 23.8.42 45.07 6.69a93.88 93.88 0 0130.08 15.06c2.28 1.78 1.47 6.59-1.39 7.1a455.32 455.32 0 01-52.82 3.1c-10.59 0-21.52-3-23.55-12.44a52.41 52.41 0 01-.49-16.51z'/><path stroke-linecap='round' stroke-linejoin='round' d='M432 192h16M64 192h16M78 211s46.35-12 178-12 178 12 178 12' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const carSportSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Car Sport</title><path d='M488 224c-3-5-32.61-17.79-32.61-17.79 5.15-2.66 8.67-3.21 8.67-14.21 0-12-.06-16-8.06-16h-27.14c-.11-.24-.23-.49-.34-.74-17.52-38.26-19.87-47.93-46-60.95C347.47 96.88 281.76 96 256 96s-91.47.88-126.49 18.31c-26.16 13-25.51 19.69-46 60.95 0 .11-.21.4-.4.74H55.94c-7.94 0-8 4-8 16 0 11 3.52 11.55 8.67 14.21C56.61 206.21 28 220 24 224s-8 32-8 80 4 96 4 96h11.94c0 14 2.06 16 8.06 16h80c6 0 8-2 8-16h256c0 14 2 16 8 16h82c4 0 6-3 6-16h12s4-49 4-96-5-75-8-80zm-362.74 44.94A516.94 516.94 0 0170.42 272c-20.42 0-21.12 1.31-22.56-11.44a72.16 72.16 0 01.51-17.51L49 240h3c12 0 23.27.51 44.55 6.78a98 98 0 0130.09 15.06C131 265 132 268 132 268zm247.16 72L368 352H144s.39-.61-5-11.18c-4-7.82 1-12.82 8.91-15.66C163.23 319.64 208 304 256 304s93.66 13.48 108.5 21.16C370 328 376.83 330 372.42 341zm-257-136.53a96.23 96.23 0 01-9.7.07c2.61-4.64 4.06-9.81 6.61-15.21 8-17 17.15-36.24 33.44-44.35 23.54-11.72 72.33-17 110.23-17s86.69 5.24 110.23 17c16.29 8.11 25.4 27.36 33.44 44.35 2.57 5.45 4 10.66 6.68 15.33-2 .11-4.3 0-9.79-.19zm347.72 56.11C461 273 463 272 441.58 272a516.94 516.94 0 01-54.84-3.06c-2.85-.51-3.66-5.32-1.38-7.1a93.84 93.84 0 0130.09-15.06c21.28-6.27 33.26-7.11 45.09-6.69a3.22 3.22 0 013.09 3 70.18 70.18 0 01-.49 17.47z'/></svg>\"\nexport const card = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Card</title><path d='M32 376a56 56 0 0056 56h336a56 56 0 0056-56V222H32zm66-76a30 30 0 0130-30h48a30 30 0 0130 30v20a30 30 0 01-30 30h-48a30 30 0 01-30-30zM424 80H88a56 56 0 00-56 56v26h448v-26a56 56 0 00-56-56z'/></svg>\"\nexport const cardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Card</title><rect x='48' y='96' width='416' height='320' rx='56' ry='56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' stroke-width='60' d='M48 192h416M128 300h48v20h-48z' class='ionicon-fill-none'/></svg>\"\nexport const cardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Card</title><path d='M32 416a16 16 0 0016 16h416a16 16 0 0016-16V222H32zm66-138a8 8 0 018-8h92a8 8 0 018 8v64a8 8 0 01-8 8h-92a8 8 0 01-8-8zM464 80H48a16 16 0 00-16 16v66h448V96a16 16 0 00-16-16z'/></svg>\"\nexport const caretBack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Back</title><path d='M321.94 98L158.82 237.78a24 24 0 000 36.44L321.94 414c15.57 13.34 39.62 2.28 39.62-18.22v-279.6c0-20.5-24.05-31.56-39.62-18.18z'/></svg>\"\nexport const caretBackCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Back Circle</title><path d='M48 256c0 114.87 93.13 208 208 208s208-93.13 208-208S370.87 48 256 48 48 141.13 48 256zm252-74.14v148.28a16 16 0 01-26.23 12.29l-89.09-74.13a16 16 0 010-24.6l89.09-74.13A16 16 0 01300 181.86z'/></svg>\"\nexport const caretBackCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Back Circle</title><path d='M273.77 169.57l-89.09 74.13a16 16 0 000 24.6l89.09 74.13A16 16 0 00300 330.14V181.86a16 16 0 00-26.23-12.29z'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const caretBackCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Back Circle</title><path d='M48 256c0 114.87 93.13 208 208 208s208-93.13 208-208S370.87 48 256 48 48 141.13 48 256zm252 108.27L169.91 256 300 147.73z'/></svg>\"\nexport const caretBackOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Back</title><path d='M321.94 98L158.82 237.78a24 24 0 000 36.44L321.94 414c15.57 13.34 39.62 2.28 39.62-18.22v-279.6c0-20.5-24.05-31.56-39.62-18.18z'/></svg>\"\nexport const caretBackSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Back</title><path d='M368 64L144 256l224 192V64z'/></svg>\"\nexport const caretDown = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Down</title><path d='M98 190.06l139.78 163.12a24 24 0 0036.44 0L414 190.06c13.34-15.57 2.28-39.62-18.22-39.62h-279.6c-20.5 0-31.56 24.05-18.18 39.62z'/></svg>\"\nexport const caretDownCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Down Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zm-121.57-17.77l-74.13 89.09a16 16 0 01-24.6 0l-74.13-89.09A16 16 0 01181.86 212h148.28a16 16 0 0112.29 26.23z'/></svg>\"\nexport const caretDownCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Down Circle</title><path d='M342.43 238.23l-74.13 89.09a16 16 0 01-24.6 0l-74.13-89.09A16 16 0 01181.86 212h148.28a16 16 0 0112.29 26.23z'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const caretDownCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Down Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zm-99.73-44L256 342.09 147.73 212z'/></svg>\"\nexport const caretDownOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Down</title><path d='M98 190.06l139.78 163.12a24 24 0 0036.44 0L414 190.06c13.34-15.57 2.28-39.62-18.22-39.62h-279.6c-20.5 0-31.56 24.05-18.18 39.62z'/></svg>\"\nexport const caretDownSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Down</title><path d='M64 144l192 224 192-224H64z'/></svg>\"\nexport const caretForward = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Forward</title><path d='M190.06 414l163.12-139.78a24 24 0 000-36.44L190.06 98c-15.57-13.34-39.62-2.28-39.62 18.22v279.6c0 20.5 24.05 31.56 39.62 18.18z'/></svg>\"\nexport const caretForwardCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Forward Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zm-252 74.14V181.86a16 16 0 0126.23-12.29l89.09 74.13a16 16 0 010 24.6l-89.09 74.13A16 16 0 01212 330.14z'/></svg>\"\nexport const caretForwardCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Forward Circle</title><path d='M238.23 342.43l89.09-74.13a16 16 0 000-24.6l-89.09-74.13A16 16 0 00212 181.86v148.28a16 16 0 0026.23 12.29z'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const caretForwardCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Forward Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zM212 147.73L342.09 256 212 364.27z'/></svg>\"\nexport const caretForwardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Forward</title><path d='M190.06 414l163.12-139.78a24 24 0 000-36.44L190.06 98c-15.57-13.34-39.62-2.28-39.62 18.22v279.6c0 20.5 24.05 31.56 39.62 18.18z'/></svg>\"\nexport const caretForwardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Forward</title><path d='M144 448l224-192L144 64v384z'/></svg>\"\nexport const caretUp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Up</title><path d='M414 321.94L274.22 158.82a24 24 0 00-36.44 0L98 321.94c-13.34 15.57-2.28 39.62 18.22 39.62h279.6c20.5 0 31.56-24.05 18.18-39.62z'/></svg>\"\nexport const caretUpCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Up Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm74.14 252H181.86a16 16 0 01-12.29-26.23l74.13-89.09a16 16 0 0124.6 0l74.13 89.09A16 16 0 01330.14 300z'/></svg>\"\nexport const caretUpCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Up Circle</title><path d='M342.43 273.77l-74.13-89.09a16 16 0 00-24.6 0l-74.13 89.09A16 16 0 00181.86 300h148.28a16 16 0 0012.29-26.23z'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const caretUpCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Up Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zM147.73 300L256 169.91 364.27 300z'/></svg>\"\nexport const caretUpOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Up</title><path d='M414 321.94L274.22 158.82a24 24 0 00-36.44 0L98 321.94c-13.34 15.57-2.28 39.62 18.22 39.62h279.6c20.5 0 31.56-24.05 18.18-39.62z'/></svg>\"\nexport const caretUpSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Caret Up</title><path d='M448 368L256 144 64 368h384z'/></svg>\"\nexport const cart = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cart</title><circle cx='176' cy='416' r='32'/><circle cx='400' cy='416' r='32'/><path d='M456.8 120.78a23.92 23.92 0 00-18.56-8.78H133.89l-6.13-34.78A16 16 0 00112 64H48a16 16 0 000 32h50.58l45.66 258.78A16 16 0 00160 368h256a16 16 0 000-32H173.42l-5.64-32h241.66A24.07 24.07 0 00433 284.71l28.8-144a24 24 0 00-5-19.93z'/></svg>\"\nexport const cartOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cart</title><circle cx='176' cy='416' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='400' cy='416' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M48 80h64l48 272h256' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 288h249.44a8 8 0 007.85-6.43l28.8-144a8 8 0 00-7.85-9.57H128' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cartSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cart</title><circle cx='176' cy='416' r='32'/><circle cx='400' cy='416' r='32'/><path d='M167.78 304h261.34l38.4-192H133.89l-8.47-48H32v32h66.58l48 272H432v-32H173.42l-5.64-32z'/></svg>\"\nexport const cash = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cash</title><path d='M448 400H64a16 16 0 010-32h384a16 16 0 010 32zM416 448H96a16 16 0 010-32h320a16 16 0 010 32zM32 272H16v48a32 32 0 0032 32h48v-16a64.07 64.07 0 00-64-64z'/><path d='M480 240h16v-64h-16a96.11 96.11 0 01-96-96V64H128v16a96.11 96.11 0 01-96 96H16v64h16a96.11 96.11 0 0196 96v16h256v-16a96.11 96.11 0 0196-96zm-224 64a96 96 0 1196-96 96.11 96.11 0 01-96 96z'/><circle cx='256' cy='208' r='64'/><path d='M416 336v16h48a32 32 0 0032-32v-48h-16a64.07 64.07 0 00-64 64zM480 144h16V96a32 32 0 00-32-32h-48v16a64.07 64.07 0 0064 64zM96 80V64H48a32 32 0 00-32 32v48h16a64.07 64.07 0 0064-64z'/></svg>\"\nexport const cashOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cash</title><rect x='32' y='80' width='448' height='256' rx='16' ry='16' transform='rotate(180 256 208)' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M64 384h384M96 432h320' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='208' r='80' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M480 160a80 80 0 01-80-80M32 160a80 80 0 0080-80M480 256a80 80 0 00-80 80M32 256a80 80 0 0180 80' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cashSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cash</title><path d='M48 368h416v32H48zM80 416h352v32H80zM480 176a96.11 96.11 0 01-96-96V64H128v16a96.11 96.11 0 01-96 96H16v64h16a96.11 96.11 0 0196 96v16h256v-16a96.11 96.11 0 0196-96h16v-64zM256 304a96 96 0 1196-96 96.11 96.11 0 01-96 96z'/><path d='M96 80V64H16v80h16a64.07 64.07 0 0064-64zM32 272H16v80h80v-16a64.07 64.07 0 00-64-64zM480 144h16V64h-80v16a64.07 64.07 0 0064 64zM416 336v16h80v-80h-16a64.07 64.07 0 00-64 64z'/><circle cx='256' cy='208' r='64'/></svg>\"\nexport const cellular = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cellular</title><path d='M472 432h-48a24 24 0 01-24-24V104a24 24 0 0124-24h48a24 24 0 0124 24v304a24 24 0 01-24 24zM344 432h-48a24 24 0 01-24-24V184a24 24 0 0124-24h48a24 24 0 0124 24v224a24 24 0 01-24 24zM216 432h-48a24 24 0 01-24-24V248a24 24 0 0124-24h48a24 24 0 0124 24v160a24 24 0 01-24 24zM88 432H40a24 24 0 01-24-24v-96a24 24 0 0124-24h48a24 24 0 0124 24v96a24 24 0 01-24 24z'/></svg>\"\nexport const cellularOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cellular</title><rect x='416' y='96' width='64' height='320' rx='8' ry='8' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='288' y='176' width='64' height='240' rx='8' ry='8' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='160' y='240' width='64' height='176' rx='8' ry='8' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='32' y='304' width='64' height='112' rx='8' ry='8' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cellularSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cellular</title><path d='M496 432h-96V80h96zM368 432h-96V160h96zM240 432h-96V224h96zM112 432H16V288h96z'/></svg>\"\nexport const chatbox = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbox</title><path d='M144 464a16 16 0 01-16-16v-64h-24a72.08 72.08 0 01-72-72V120a72.08 72.08 0 0172-72h304a72.08 72.08 0 0172 72v192a72.08 72.08 0 01-72 72H245.74l-91.49 76.29A16.05 16.05 0 01144 464z'/></svg>\"\nexport const chatboxEllipses = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbox Ellipses</title><path d='M408 48H104a72.08 72.08 0 00-72 72v192a72.08 72.08 0 0072 72h24v64a16 16 0 0026.25 12.29L245.74 384H408a72.08 72.08 0 0072-72V120a72.08 72.08 0 00-72-72zM160 248a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const chatboxEllipsesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbox Ellipses</title><path d='M408 64H104a56.16 56.16 0 00-56 56v192a56.16 56.16 0 0056 56h40v80l93.72-78.14a8 8 0 015.13-1.86H408a56.16 56.16 0 0056-56V120a56.16 56.16 0 00-56-56z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='160' cy='216' r='32'/><circle cx='256' cy='216' r='32'/><circle cx='352' cy='216' r='32'/></svg>\"\nexport const chatboxEllipsesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbox Ellipses</title><path d='M456 48H56a24 24 0 00-24 24v288a24 24 0 0024 24h72v80l117.74-80H456a24 24 0 0024-24V72a24 24 0 00-24-24zM160 248a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32zM456 80z'/></svg>\"\nexport const chatboxOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbox</title><path d='M408 64H104a56.16 56.16 0 00-56 56v192a56.16 56.16 0 0056 56h40v80l93.72-78.14a8 8 0 015.13-1.86H408a56.16 56.16 0 0056-56V120a56.16 56.16 0 00-56-56z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const chatboxSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbox</title><path d='M128 464v-80H56a24 24 0 01-24-24V72a24 24 0 0124-24h400a24 24 0 0124 24v288a24 24 0 01-24 24H245.74zM456 80z'/></svg>\"\nexport const chatbubble = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubble</title><path d='M76.83 480a25.69 25.69 0 01-25.57-25.74 29.13 29.13 0 011.2-7.63L70.88 380c.77-2.46-.1-4.94-1.23-6.9l-.22-.4c-.08-.13-.46-.66-.73-1.05s-.58-.81-.86-1.22l-.19-.27A215.66 215.66 0 0132 251.37c-.18-57.59 22.35-112 63.46-153.28C138 55.47 194.9 32 255.82 32A227.4 227.4 0 01398 81.84c39.45 31.75 66.87 76 77.21 124.68a213.5 213.5 0 014.78 45c0 58.93-22.64 114.28-63.76 155.87-41.48 42-97.18 65.06-156.83 65.06-21 0-47.87-5.36-60.77-9-15.52-4.34-30.23-10-31.85-10.6a15.12 15.12 0 00-5.37-1 14.75 14.75 0 00-5.8 1.15l-.85.33-67.48 24.38A29.44 29.44 0 0176.83 480zm-2-31.8zM87.48 380z'/></svg>\"\nexport const chatbubbleEllipses = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubble Ellipses</title><path d='M398 81.84A227.4 227.4 0 00255.82 32C194.9 32 138 55.47 95.46 98.09 54.35 139.33 31.82 193.78 32 251.37a215.66 215.66 0 0035.65 118.76l.19.27c.28.41.57.82.86 1.22s.65.92.73 1.05l.22.4c1.13 2 2 4.44 1.23 6.9l-18.42 66.66a29.13 29.13 0 00-1.2 7.63A25.69 25.69 0 0076.83 480a29.44 29.44 0 0010.45-2.29l67.49-24.36.85-.33a14.75 14.75 0 015.8-1.15 15.12 15.12 0 015.37 1c1.62.63 16.33 6.26 31.85 10.6 12.9 3.6 39.74 9 60.77 9 59.65 0 115.35-23.1 156.83-65.06C457.36 365.77 480 310.42 480 251.49a213.5 213.5 0 00-4.78-45c-10.34-48.62-37.76-92.9-77.22-124.65zM87.48 380zM160 288a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const chatbubbleEllipsesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubble Ellipses</title><path d='M87.48 380c1.2-4.38-1.43-10.47-3.94-14.86a42.63 42.63 0 00-2.54-3.8 199.81 199.81 0 01-33-110C47.64 139.09 140.72 48 255.82 48 356.2 48 440 117.54 459.57 209.85a199 199 0 014.43 41.64c0 112.41-89.49 204.93-204.59 204.93-18.31 0-43-4.6-56.47-8.37s-26.92-8.77-30.39-10.11a31.14 31.14 0 00-11.13-2.07 30.7 30.7 0 00-12.08 2.43L81.5 462.78a15.92 15.92 0 01-4.66 1.22 9.61 9.61 0 01-9.58-9.74 15.85 15.85 0 01.6-3.29z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='160' cy='256' r='32'/><circle cx='256' cy='256' r='32'/><circle cx='352' cy='256' r='32'/></svg>\"\nexport const chatbubbleEllipsesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubble Ellipses</title><path d='M475.22 206.52c-10.34-48.65-37.76-92.93-77.22-124.68A227.4 227.4 0 00255.82 32C194.9 32 138 55.47 95.46 98.09 54.35 139.33 31.82 193.78 32 251.37a215.66 215.66 0 0035.65 118.76l4.35 6.05L48 480l114.8-28.56s2.3.77 4 1.42 16.33 6.26 31.85 10.6c12.9 3.6 39.74 9 60.77 9 59.65 0 115.35-23.1 156.83-65.06C457.36 365.77 480 310.42 480 251.49a213.5 213.5 0 00-4.78-44.97zM160 288a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const chatbubbleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubble</title><path d='M87.49 380c1.19-4.38-1.44-10.47-3.95-14.86a44.86 44.86 0 00-2.54-3.8 199.81 199.81 0 01-33-110C47.65 139.09 140.73 48 255.83 48 356.21 48 440 117.54 459.58 209.85a199 199 0 014.42 41.64c0 112.41-89.49 204.93-204.59 204.93-18.3 0-43-4.6-56.47-8.37s-26.92-8.77-30.39-10.11a31.09 31.09 0 00-11.12-2.07 30.71 30.71 0 00-12.09 2.43l-67.83 24.48a16 16 0 01-4.67 1.22 9.6 9.6 0 01-9.57-9.74 15.85 15.85 0 01.6-3.29z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const chatbubbleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubble</title><path d='M475.22 206.52c-10.34-48.65-37.76-92.93-77.22-124.68A227.4 227.4 0 00255.82 32C194.9 32 138 55.47 95.46 98.09 54.35 139.33 31.82 193.78 32 251.37a215.66 215.66 0 0035.65 118.76l4.35 6.05L48 480l114.8-28.56s2.3.77 4 1.42 16.33 6.26 31.85 10.6c12.9 3.6 39.74 9 60.77 9 59.65 0 115.35-23.1 156.83-65.06C457.36 365.77 480 310.42 480 251.49a213.5 213.5 0 00-4.78-44.97z'/></svg>\"\nexport const chatbubbles = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubbles</title><path d='M60.44 389.17c0 .07 0 .2-.08.38.03-.12.05-.25.08-.38zM439.9 405.6a26.77 26.77 0 01-9.59-2l-56.78-20.13-.42-.17a9.88 9.88 0 00-3.91-.76 10.32 10.32 0 00-3.62.66c-1.38.52-13.81 5.19-26.85 8.77-7.07 1.94-31.68 8.27-51.43 8.27-50.48 0-97.68-19.4-132.89-54.63A183.38 183.38 0 01100.3 215.1a175.9 175.9 0 014.06-37.58c8.79-40.62 32.07-77.57 65.55-104A194.76 194.76 0 01290.3 32c52.21 0 100.86 20 137 56.18 34.16 34.27 52.88 79.33 52.73 126.87a177.86 177.86 0 01-30.3 99.15l-.19.28-.74 1c-.17.23-.34.45-.5.68l-.15.27a21.63 21.63 0 00-1.08 2.09l15.74 55.94a26.42 26.42 0 011.12 7.11 24 24 0 01-24.03 24.03z'/><path d='M299.87 425.39a15.74 15.74 0 00-10.29-8.1c-5.78-1.53-12.52-1.27-17.67-1.65a201.78 201.78 0 01-128.82-58.75A199.21 199.21 0 0186.4 244.16C85 234.42 85 232 85 232a16 16 0 00-28-10.58s-7.88 8.58-11.6 17.19a162.09 162.09 0 0011 150.06C59 393 59 395 58.42 399.5c-2.73 14.11-7.51 39-10 51.91a24 24 0 008 22.92l.46.39A24.34 24.34 0 0072 480a23.42 23.42 0 009-1.79l53.51-20.65a8.05 8.05 0 015.72 0c21.07 7.84 43 12 63.78 12a176 176 0 0074.91-16.66c5.46-2.56 14-5.34 19-11.12a15 15 0 001.95-16.39z'/></svg>\"\nexport const chatbubblesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubbles</title><path d='M431 320.6c-1-3.6 1.2-8.6 3.3-12.2a33.68 33.68 0 012.1-3.1A162 162 0 00464 215c.3-92.2-77.5-167-173.7-167-83.9 0-153.9 57.1-170.3 132.9a160.7 160.7 0 00-3.7 34.2c0 92.3 74.8 169.1 171 169.1 15.3 0 35.9-4.6 47.2-7.7s22.5-7.2 25.4-8.3a26.44 26.44 0 019.3-1.7 26 26 0 0110.1 2l56.7 20.1a13.52 13.52 0 003.9 1 8 8 0 008-8 12.85 12.85 0 00-.5-2.7z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M66.46 232a146.23 146.23 0 006.39 152.67c2.31 3.49 3.61 6.19 3.21 8s-11.93 61.87-11.93 61.87a8 8 0 002.71 7.68A8.17 8.17 0 0072 464a7.26 7.26 0 002.91-.6l56.21-22a15.7 15.7 0 0112 .2c18.94 7.38 39.88 12 60.83 12A159.21 159.21 0 00284 432.11' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const chatbubblesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chatbubbles</title><path d='M448 312.43c.77-1.11 1.51-2.26 2.27-3.34A174.55 174.55 0 00480 211.85C480.32 112.55 396.54 32 292.94 32c-90.36 0-165.74 61.49-183.4 143.12a172.81 172.81 0 00-4 36.83c0 99.4 80.56 182.11 184.16 182.11 16.47 0 38.66-4.95 50.83-8.29s24.23-7.75 27.35-8.94 8-2.41 11.89-1.29l77.42 22.38a4 4 0 005-4.86l-17.72-67.49c-1.23-5-1.39-5.94 3.53-13.14z'/><path d='M312.54 415.38a165.32 165.32 0 01-23.26 2.05c-42.43 0-82.5-11.2-115-32.2a184.09 184.09 0 01-53.09-49.32c-26.08-34.57-40.3-78.51-40.3-124.49 0-3.13.11-6.14.22-9.16a4.34 4.34 0 00-7.54-3.12 158.76 158.76 0 00-14.86 195.24c2.47 3.77 3.87 6.68 3.44 8.62l-14.09 72.26a4 4 0 005.22 4.53l68-24.24a16.85 16.85 0 0112.92.22c20.35 8 42.86 12.92 65.37 12.92a169.45 169.45 0 00116.63-46 4.29 4.29 0 00-3.66-7.31z'/></svg>\"\nexport const checkbox = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkbox</title><path d='M400 48H112a64.07 64.07 0 00-64 64v288a64.07 64.07 0 0064 64h288a64.07 64.07 0 0064-64V112a64.07 64.07 0 00-64-64zm-35.75 138.29l-134.4 160a16 16 0 01-12 5.71h-.27a16 16 0 01-11.89-5.3l-57.6-64a16 16 0 1123.78-21.4l45.29 50.32 122.59-145.91a16 16 0 0124.5 20.58z'/></svg>\"\nexport const checkboxOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkbox</title><path stroke-linecap='round' stroke-linejoin='round' d='M352 176L217.6 336 160 272' class='ionicon-fill-none ionicon-stroke-width'/><rect x='64' y='64' width='384' height='384' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const checkboxSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkbox</title><path d='M48 48v416h416V48zm170 312.38l-80.6-89.57 23.79-21.41 56 62.22L350 153.46 374.54 174z'/></svg>\"\nexport const checkmark = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark</title><path stroke-linecap='round' stroke-linejoin='round' d='M416 128L192 384l-96-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const checkmarkCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm108.25 138.29l-134.4 160a16 16 0 01-12 5.71h-.27a16 16 0 01-11.89-5.3l-57.6-64a16 16 0 1123.78-21.4l45.29 50.32 122.59-145.91a16 16 0 0124.5 20.58z'/></svg>\"\nexport const checkmarkCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M352 176L217.6 336 160 272' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const checkmarkCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-38 312.38l-80.6-89.57 23.79-21.41 56 62.22L350 153.46 374.54 174z'/></svg>\"\nexport const checkmarkDone = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Done</title><path stroke-linecap='round' stroke-linejoin='round' d='M464 128L240 384l-96-96M144 384l-96-96M368 128L232 284' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const checkmarkDoneCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Done Circle</title><path d='M258.9 48C141.92 46.42 46.42 141.92 48 258.9c1.56 112.19 92.91 203.54 205.1 205.1 117 1.6 212.48-93.9 210.88-210.88C462.44 140.91 371.09 49.56 258.9 48zm-16.79 192.47l51.55-59a16 16 0 0124.1 21.06l-51.55 59a16 16 0 11-24.1-21.06zm-38.86 90.85a16 16 0 01-22.62 0l-47.95-48a16 16 0 1122.64-22.62l48 48a16 16 0 01-.07 22.62zm176.8-128.79l-111.88 128a16 16 0 01-11.51 5.47h-.54a16 16 0 01-11.32-4.69l-47.94-48a16 16 0 1122.64-22.62l29.8 29.83a8 8 0 0011.68-.39l95-108.66a16 16 0 0124.1 21.06z'/></svg>\"\nexport const checkmarkDoneCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Done Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M368 192L256.13 320l-47.95-48M191.95 320L144 272M305.71 192l-51.55 59' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const checkmarkDoneCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Done Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm48.19 121.42l24.1 21.06-73.61 84.1-24.1-23.06zM191.93 342.63L121.37 272 144 249.37 214.57 320zm65 .79L185.55 272l22.64-22.62 47.16 47.21 111.13-127.17 24.1 21.06z'/></svg>\"\nexport const checkmarkDoneOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Done</title><path stroke-linecap='round' stroke-linejoin='round' d='M464 128L240 384l-96-96M144 384l-96-96M368 128L232 284' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const checkmarkDoneSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark Done</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='44' d='M465 127L241 384l-92-92M140 385l-93-93M363 127L236 273' class='ionicon-fill-none'/></svg>\"\nexport const checkmarkOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark</title><path stroke-linecap='round' stroke-linejoin='round' d='M416 128L192 384l-96-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const checkmarkSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Checkmark</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='44' d='M416 128L192 384l-96-96' class='ionicon-fill-none'/></svg>\"\nexport const chevronBack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Back</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M328 112L184 256l144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronBackCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Back Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm35.31 292.69a16 16 0 11-22.62 22.62l-96-96a16 16 0 010-22.62l96-96a16 16 0 0122.62 22.62L206.63 256z'/></svg>\"\nexport const chevronBackCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Back Circle</title><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M296 352l-96-96 96-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const chevronBackCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Back Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm62.63 304L296 374.63 177.37 256 296 137.37 318.63 160l-96 96z'/></svg>\"\nexport const chevronBackOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Back</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M328 112L184 256l144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronBackSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Back</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M328 112L184 256l144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronDown = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Down</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 184l144 144 144-144' class='ionicon-fill-none'/></svg>\"\nexport const chevronDownCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Down Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zm-100.69-28.69l-96 96a16 16 0 01-22.62 0l-96-96a16 16 0 0122.62-22.62L256 289.37l84.69-84.68a16 16 0 0122.62 22.62z'/></svg>\"\nexport const chevronDownCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Down Circle</title><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M352 216l-96 96-96-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const chevronDownCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Down Circle</title><path d='M256 464c114.87 0 208-93.13 208-208S370.87 48 256 48 48 141.13 48 256s93.13 208 208 208zm-96-270.63l96 96 96-96L374.63 216 256 334.63 137.37 216z'/></svg>\"\nexport const chevronDownOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Down</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 184l144 144 144-144' class='ionicon-fill-none'/></svg>\"\nexport const chevronDownSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Down</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M112 184l144 144 144-144' class='ionicon-fill-none'/></svg>\"\nexport const chevronForward = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Forward</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronForwardCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Forward Circle</title><path d='M48 256c0 114.87 93.13 208 208 208s208-93.13 208-208S370.87 48 256 48 48 141.13 48 256zm257.37 0l-84.68-84.69a16 16 0 0122.62-22.62l96 96a16 16 0 010 22.62l-96 96a16 16 0 01-22.62-22.62z'/></svg>\"\nexport const chevronForwardCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Forward Circle</title><path d='M64 256c0 106 86 192 192 192s192-86 192-192S362 64 256 64 64 150 64 256z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M216 352l96-96-96-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const chevronForwardCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Forward Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm-40 326.63L193.37 352l96-96-96-96L216 137.37 334.63 256z'/></svg>\"\nexport const chevronForwardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Forward</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronForwardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Forward</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M184 112l144 144-144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronUp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Up</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 328l144-144 144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronUpCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Up Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm107.31 259.31a16 16 0 01-22.62 0L256 222.63l-84.69 84.68a16 16 0 01-22.62-22.62l96-96a16 16 0 0122.62 0l96 96a16 16 0 010 22.62z'/></svg>\"\nexport const chevronUpCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Up Circle</title><path stroke-linecap='round' stroke-linejoin='round' d='M352 296l-96-96-96 96' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const chevronUpCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Up Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm96 270.63l-96-96-96 96L137.37 296 256 177.37 374.63 296z'/></svg>\"\nexport const chevronUpOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Up</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 328l144-144 144 144' class='ionicon-fill-none'/></svg>\"\nexport const chevronUpSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Chevron Up</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M112 328l144-144 144 144' class='ionicon-fill-none'/></svg>\"\nexport const clipboard = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Clipboard</title><path d='M368 48h-11.41a8 8 0 01-7.44-5.08A42.18 42.18 0 00309.87 16H202.13a42.18 42.18 0 00-39.28 26.92 8 8 0 01-7.44 5.08H144a64 64 0 00-64 64v320a64 64 0 0064 64h224a64 64 0 0064-64V112a64 64 0 00-64-64zm-48.13 64H192.13a16 16 0 010-32h127.74a16 16 0 010 32z'/></svg>\"\nexport const clipboardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Clipboard</title><path d='M336 64h32a48 48 0 0148 48v320a48 48 0 01-48 48H144a48 48 0 01-48-48V112a48 48 0 0148-48h32' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='176' y='32' width='160' height='64' rx='26.13' ry='26.13' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const clipboardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Clipboard</title><path d='M420 48h-68V28a12 12 0 00-12-12H172a12 12 0 00-12 12v20H92a12 12 0 00-12 12v424a12 12 0 0012 12h328a12 12 0 0012-12V60a12 12 0 00-12-12zm-84.13 64H176.13V80h159.74z'/></svg>\"\nexport const close = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Close</title><path d='M289.94 256l95-95A24 24 0 00351 127l-95 95-95-95a24 24 0 00-34 34l95 95-95 95a24 24 0 1034 34l95-95 95 95a24 24 0 0034-34z'/></svg>\"\nexport const closeCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Close Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm75.31 260.69a16 16 0 11-22.62 22.62L256 278.63l-52.69 52.68a16 16 0 01-22.62-22.62L233.37 256l-52.68-52.69a16 16 0 0122.62-22.62L256 233.37l52.69-52.68a16 16 0 0122.62 22.62L278.63 256z'/></svg>\"\nexport const closeCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Close Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M320 320L192 192M192 320l128-128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const closeCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Close Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm86.63 272L320 342.63l-64-64-64 64L169.37 320l64-64-64-64L192 169.37l64 64 64-64L342.63 192l-64 64z'/></svg>\"\nexport const closeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Close</title><path stroke-linecap='round' stroke-linejoin='round' d='M368 368L144 144M368 144L144 368' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const closeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Close</title><path d='M400 145.49L366.51 112 256 222.51 145.49 112 112 145.49 222.51 256 112 366.51 145.49 400 256 289.49 366.51 400 400 366.51 289.49 256 400 145.49z'/></svg>\"\nexport const cloud = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud</title><path d='M396 432H136c-36.44 0-70.36-12.57-95.51-35.41C14.38 372.88 0 340 0 304c0-36.58 13.39-68.12 38.72-91.22 18.11-16.53 42.22-28.25 69.18-33.87a16 16 0 0011.37-9.15 156.24 156.24 0 0142.05-56C187.76 91.69 220.5 80 256 80a153.57 153.57 0 01107.14 42.9c24.73 23.81 41.5 55.28 49.18 92a16 16 0 0012.12 12.39C470 237.42 512 270.43 512 328c0 33.39-12.24 60.78-35.41 79.23C456.23 423.43 428.37 432 396 432z'/></svg>\"\nexport const cloudCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm70 280H193.05c-31.53 0-57.56-25.58-57-57.11.53-31.74 23.68-49.95 51.35-54.3a7.92 7.92 0 006.16-5C202.07 189.22 223.63 168 256 168c33.17 0 61.85 22.49 70.14 60.21a17.75 17.75 0 0013.18 13.43C357.79 246.05 376 259.21 376 284c0 30.28-22.5 44-50 44z'/></svg>\"\nexport const cloudCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Circle</title><path d='M333.88 240.59a8 8 0 01-6.66-6.66C320.68 192.78 290.82 168 256 168c-32.37 0-53.93 21.22-62.48 43.58a7.92 7.92 0 01-6.16 5c-27.67 4.35-50.82 22.56-51.35 54.3-.52 31.53 25.51 57.11 57 57.11H326c27.5 0 50-13.72 50-44 0-27.22-22-40.41-42.12-43.4z'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm70 280H196c-33 0-60-23-60-56 0-34.21 26-53 56-56 7.28-23.9 29.5-48 64-48 36.5 0 67.55 27.23 72 72 21.49 1.12 48 14.09 48 44 0 30.28-22.5 44-50 44z'/></svg>\"\nexport const cloudDone = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Done</title><path d='M424.44 227.25a16 16 0 01-12.12-12.39c-7.68-36.68-24.45-68.15-49.18-92A153.57 153.57 0 00256 80c-35.5 0-68.24 11.69-94.68 33.8a156.24 156.24 0 00-42 56 16 16 0 01-11.37 9.15c-27 5.62-51.07 17.34-69.18 33.87C13.39 235.88 0 267.42 0 304c0 36 14.38 68.88 40.49 92.59C65.64 419.43 99.56 432 136 432h260c32.37 0 60.23-8.57 80.59-24.77C499.76 388.78 512 361.39 512 328c0-57.57-42-90.58-87.56-100.75zm-95.2-8.94l-107.8 128a16 16 0 01-12 5.69h-.27a16 16 0 01-11.88-5.28l-45.9-50.87c-5.77-6.39-5.82-16.33.3-22.4a16 16 0 0123.16.63l33.9 37.58 96-114a16 16 0 1124.48 20.62z'/></svg>\"\nexport const cloudDoneOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Done</title><path d='M400 240c-8.89-89.54-71-144-144-144-69 0-113.44 48.2-128 96-60 6-112 43.59-112 112 0 66 54 112 120 112h260c55 0 100-27.44 100-88 0-59.82-53-85.76-96-88z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M317 208L209.2 336 163 284.8' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudDoneSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Done</title><path d='M414.25 225.36c-6.52-41.18-24.05-76.4-51.11-102.46A153.57 153.57 0 00256 80c-35.5 0-68.24 11.69-94.68 33.8a156.42 156.42 0 00-45.22 63.61c-30.26 4.81-57.45 17.18-77.38 35.37C13.39 235.88 0 267.42 0 304c0 36 14.38 68.88 40.49 92.59C65.64 419.43 99.56 432 136 432h260c32.37 0 60.23-8.57 80.59-24.77C499.76 388.78 512 361.39 512 328c0-61.85-48.44-95.34-97.75-102.64zm-204.63 135l-69.22-76.7 23.76-21.44 44.62 49.46 106.29-126.2 24.47 20.61z'/></svg>\"\nexport const cloudDownload = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Download</title><path d='M472.7 189.5c-13.26-8.43-29.83-14.56-48.08-17.93A16 16 0 01412 159.28c-7.86-34.51-24.6-64.13-49.15-86.58C334.15 46.45 296.21 32 256 32c-35.35 0-68 11.08-94.37 32a150.13 150.13 0 00-41.95 52.83A16.05 16.05 0 01108 125.8c-27.13 4.9-50.53 14.68-68.41 28.7C13.7 174.83 0 203.56 0 237.6 0 305 55.93 352 136 352h104V224.45c0-8.61 6.62-16 15.23-16.43A16 16 0 01272 224v128h124c72.64 0 116-34.24 116-91.6 0-30.05-13.59-54.57-39.3-70.9zM240 425.42l-36.7-36.64a16 16 0 00-22.6 22.65l64 63.89a16 16 0 0022.6 0l64-63.89a16 16 0 00-22.6-22.65L272 425.42V352h-32z'/></svg>\"\nexport const cloudDownloadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Download</title><path d='M320 336h76c55 0 100-21.21 100-75.6s-53-73.47-96-75.6C391.11 99.74 329 48 256 48c-69 0-113.44 45.79-128 91.2-60 5.7-112 35.88-112 98.4S70 336 136 336h56M192 400.1l64 63.9 64-63.9M256 224v224.03' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudDownloadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Download</title><path d='M472.7 189.5c-15.76-10-36.21-16.79-58.59-19.54-6.65-39.1-24.22-72.52-51.27-97.26C334.15 46.45 296.21 32 256 32c-35.35 0-68 11.08-94.37 32a149.7 149.7 0 00-45.29 60.42c-30.67 4.32-57 14.61-76.71 30C13.7 174.83 0 203.56 0 237.6 0 305 55.92 352 136 352h104V208h32v144h124c72.64 0 116-34.24 116-91.6 0-30.05-13.59-54.57-39.3-70.9zM240 419.42L191.98 371l-22.61 23L256 480l86.63-86-22.61-23L272 419.42V352h-32v67.42z'/></svg>\"\nexport const cloudOffline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Offline</title><path d='M448 464a15.92 15.92 0 01-11.31-4.69l-384-384a16 16 0 0122.62-22.62l384 384A16 16 0 01448 464zM38.72 196.78C13.39 219.88 0 251.42 0 288c0 36 14.38 68.88 40.49 92.59C65.64 403.43 99.56 416 136 416h192.8a8 8 0 005.66-13.66L100.88 168.76a8 8 0 00-8-2C72 173.15 53.4 183.38 38.72 196.78zM476.59 391.23C499.76 372.78 512 345.39 512 312c0-57.57-42-90.58-87.56-100.75a16 16 0 01-12.12-12.39c-7.68-36.68-24.45-68.15-49.18-92A153.57 153.57 0 00256 64c-31.12 0-60.12 9-84.62 26.1a8 8 0 00-1.14 12.26L461.68 393.8a8 8 0 0010.2.93q2.43-1.68 4.71-3.5z'/></svg>\"\nexport const cloudOfflineOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Offline</title><path d='M93.72 183.25C49.49 198.05 16 233.1 16 288c0 66 54 112 120 112h184.37M467.82 377.74C485.24 363.3 496 341.61 496 312c0-59.82-53-85.76-96-88-8.89-89.54-71-144-144-144-26.16 0-48.79 6.93-67.6 18.14' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M448 448L64 64' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudOfflineSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Offline</title><path d='M41.37 64l22.628-22.628L470.627 448l-22.628 22.627zM38.72 212.78C13.39 235.88 0 267.42 0 304c0 36 14.38 68.88 40.49 92.59C65.64 419.43 99.56 432 136 432h228.12L110.51 178.39c-28.01 5.39-53.09 17.33-71.79 34.39zM476.59 407.23C499.76 388.78 512 361.39 512 328c0-61.85-48.44-95.34-97.75-102.64-6.52-41.18-24.05-76.4-51.11-102.46A153.57 153.57 0 00256 80c-30.47 0-58.9 8.62-83.07 25l302.82 302.86c.25-.21.57-.41.84-.63z'/></svg>\"\nexport const cloudOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud</title><path d='M400 240c-8.89-89.54-71-144-144-144-69 0-113.44 48.2-128 96-60 6-112 43.59-112 112 0 66 54 112 120 112h260c55 0 100-27.44 100-88 0-59.82-53-85.76-96-88z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud</title><path d='M396 432H136c-36.44 0-70.36-12.57-95.51-35.41C14.38 372.88 0 340 0 304c0-36.58 13.39-68.12 38.72-91.22 19.93-18.19 47.12-30.56 77.38-35.37a156.42 156.42 0 0145.22-63.61C187.76 91.69 220.5 80 256 80a153.57 153.57 0 01107.14 42.9c27.06 26.06 44.59 61.28 51.11 102.46C463.56 232.66 512 266.15 512 328c0 33.39-12.24 60.78-35.41 79.23C456.23 423.43 428.37 432 396 432z'/></svg>\"\nexport const cloudUpload = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Upload</title><path d='M473.66 210c-14-10.38-31.2-18-49.36-22.11a16.11 16.11 0 01-12.19-12.22c-7.8-34.75-24.59-64.55-49.27-87.13C334.15 62.25 296.21 47.79 256 47.79c-35.35 0-68 11.08-94.37 32.05a150.07 150.07 0 00-42.06 53 16 16 0 01-11.31 8.87c-26.75 5.4-50.9 16.87-69.34 33.12C13.46 197.33 0 227.24 0 261.39c0 34.52 14.49 66 40.79 88.76 25.12 21.69 58.94 33.64 95.21 33.64h104V230.42l-36.69 36.69a16 16 0 01-23.16-.56c-5.8-6.37-5.24-16.3.85-22.39l63.69-63.68a16 16 0 0122.62 0L331 244.14c6.28 6.29 6.64 16.6.39 22.91a16 16 0 01-22.68.06L272 230.42v153.37h124c31.34 0 59.91-8.8 80.45-24.77 23.26-18.1 35.55-44 35.55-74.83 0-29.94-13.26-55.61-38.34-74.19zM240 448.21a16 16 0 1032 0v-64.42h-32z'/></svg>\"\nexport const cloudUploadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Upload</title><path d='M320 367.79h76c55 0 100-29.21 100-83.6s-53-81.47-96-83.6c-8.89-85.06-71-136.8-144-136.8-69 0-113.44 45.79-128 91.2-60 5.7-112 43.88-112 106.4s54 106.4 120 106.4h56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M320 255.79l-64-64-64 64M256 448.21V207.79' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudUploadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloud Upload</title><path d='M473.66 210c-16.56-12.3-37.7-20.75-59.52-24-6.62-39.18-24.21-72.67-51.3-97.45-28.69-26.3-66.63-40.76-106.84-40.76-35.35 0-68 11.08-94.37 32.05a149.61 149.61 0 00-45.32 60.49c-29.94 4.6-57.12 16.68-77.39 34.55C13.46 197.33 0 227.24 0 261.39c0 34.52 14.49 66 40.79 88.76 25.12 21.69 58.94 33.64 95.21 33.64h104V230.42l-48 48-22.63-22.63L256 169.17l86.63 86.62L320 278.42l-48-48v153.37h124c31.34 0 59.91-8.8 80.45-24.77 23.26-18.1 35.55-44 35.55-74.83 0-29.94-13.26-55.61-38.34-74.19zM240 383.79h32v80.41h-32z'/></svg>\"\nexport const cloudy = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloudy</title><path d='M376 432H116c-32.37 0-60.23-8.57-80.59-24.77C12.24 388.78 0 361.39 0 328c0-57.57 42-90.58 87.56-100.75a16 16 0 0012.12-12.39c7.68-36.68 24.45-68.15 49.18-92A153.57 153.57 0 01256 80c35.5 0 68.24 11.69 94.68 33.8a156.24 156.24 0 0142.05 56 16 16 0 0011.37 9.16c27 5.61 51.07 17.33 69.18 33.85C498.61 235.88 512 267.42 512 304c0 36-14.38 68.88-40.49 92.59C446.36 419.43 412.44 432 376 432z'/></svg>\"\nexport const cloudyNight = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloudy Night</title><path d='M340 480H106c-29.5 0-54.92-7.83-73.53-22.64C11.23 440.44 0 415.35 0 384.8c0-29.44 12.09-54.25 35-71.74 12.1-9.26 27.2-16.17 43.33-20.05a16 16 0 0011.81-12.21c7.15-32.54 22.25-60.49 44.33-81.75A139.82 139.82 0 01232 160c32.33 0 62.15 10.65 86.24 30.79a142.22 142.22 0 0137.65 49.54 16.06 16.06 0 0011.12 9c24 5.22 45.42 15.78 61.62 30.56C451.77 301 464 329.82 464 363.2c0 32.85-13.13 62.87-37 84.52-22.89 20.82-53.8 32.28-87 32.28zM510.53 209.79a16.34 16.34 0 00-1.35-15.8 16 16 0 00-19.57-5.58c-10.7 4.65-24.48 7.17-39.92 7.28-55.3.4-101.38-45-101.38-100.31 0-15.75 2.48-29.84 7.18-40.76a16.3 16.3 0 00-1.85-16.33 16 16 0 00-19.1-5c-38.63 16.82-66.18 51.51-75.27 92.54a4 4 0 003.19 4.79 162.54 162.54 0 0176.31 35.59 172.58 172.58 0 0139.64 47.84 16.35 16.35 0 009.54 7.64c23.89 7.17 45.1 18.9 62.25 34.54q4.44 4.07 8.48 8.42a4 4 0 005.16.57 129.12 129.12 0 0046.69-55.43z'/></svg>\"\nexport const cloudyNightOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloudy Night</title><path d='M388.31 272c47.75 0 89.77-27.77 107.69-68.92-14.21 6.18-30.9 8.61-47.38 8.61A116.31 116.31 0 01332.31 95.38c0-16.48 2.43-33.17 8.61-47.38C299.77 65.92 272 107.94 272 155.69a116.31 116.31 0 003.44 28.18' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M90.61 306.85A16.07 16.07 0 00104 293.6C116.09 220.17 169.63 176 232 176c57.93 0 96.62 37.75 112.2 77.74a15.84 15.84 0 0012.2 9.87c50 8.15 91.6 41.54 91.6 99.59 0 59.4-48.6 100.8-108 100.8H106c-49.5 0-90-24.7-90-79.2 0-48.47 38.67-72.22 74.61-77.95z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudyNightSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloudy Night</title><path d='M340 480H106c-29.5 0-54.92-7.83-73.53-22.64C11.23 440.44 0 415.35 0 384.8c0-29.44 12.09-54.25 35-71.74 14.55-11.13 33.41-18.87 53.2-22 6.06-36.92 21.92-68.53 46.29-92A139.82 139.82 0 01232 160c32.33 0 62.15 10.65 86.24 30.79a142.41 142.41 0 0140.83 57.05c27.18 4.48 51.59 15.68 69.56 32.08C451.77 301 464 329.82 464 363.2c0 32.85-13.13 62.87-37 84.52-22.89 20.82-53.8 32.28-87 32.28zM381.55 219.93c26.5 6.93 50 19.32 68.65 36.34q3.89 3.56 7.47 7.34c25.41-18.4 45.47-44.92 54.33-71.38-16.24 7.07-35.31 9.85-54.15 9.85-73.42 0-115.93-42.51-115.93-115.93 0-18.84 2.78-37.91 9.85-54.15-40.41 13.53-81 53.19-92.52 98.13a162.61 162.61 0 0179.52 36.12 173 173 0 0142.78 53.68z'/></svg>\"\nexport const cloudyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloudy</title><path d='M100.18 241.19a15.93 15.93 0 0013.37-13.25C126.6 145.59 186.34 96 256 96c64.69 0 107.79 42.36 124.92 87a16.11 16.11 0 0012.53 10.18C449.36 202.06 496 239.21 496 304c0 66-54 112-120 112H116c-55 0-100-27.44-100-88 0-54.43 43.89-80.81 84.18-86.81z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cloudySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cloudy</title><path d='M376 432H116c-32.37 0-60.23-8.57-80.59-24.77C12.24 388.78 0 361.39 0 328c0-61.85 48.44-95.34 97.75-102.64 6.52-41.18 24-76.4 51.11-102.46A153.57 153.57 0 01256 80c35.5 0 68.24 11.69 94.68 33.8a156.42 156.42 0 0145.22 63.61c30.26 4.81 57.45 17.18 77.38 35.36C498.61 235.88 512 267.42 512 304c0 36-14.38 68.88-40.49 92.59C446.36 419.43 412.44 432 376 432z'/></svg>\"\nexport const code = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code</title><path d='M160 389a20.91 20.91 0 01-13.82-5.2l-128-112a21 21 0 010-31.6l128-112a21 21 0 0127.66 31.61L63.89 256l109.94 96.19A21 21 0 01160 389zM352 389a21 21 0 01-13.84-36.81L448.11 256l-109.94-96.19a21 21 0 0127.66-31.61l128 112a21 21 0 010 31.6l-128 112A20.89 20.89 0 01352 389z'/></svg>\"\nexport const codeDownload = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Download</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='42' d='M160 368L32 256l128-112M352 368l128-112-128-112M192 288.1l64 63.9 64-63.9M256 160v176.03' class='ionicon-fill-none'/></svg>\"\nexport const codeDownloadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Download</title><path stroke-linecap='round' stroke-linejoin='round' d='M160 368L32 256l128-112M352 368l128-112-128-112M192 288.1l64 63.9 64-63.9M256 160v176.03' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const codeDownloadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Download</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='42' d='M160 368L32 256l128-112M352 368l128-112-128-112M192 288.1l64 63.9 64-63.9M256 160v176.03' class='ionicon-fill-none'/></svg>\"\nexport const codeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code</title><path stroke-linecap='round' stroke-linejoin='round' d='M160 368L32 256l128-112M352 368l128-112-128-112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const codeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code</title><path d='M161.98 397.63L0 256l161.98-141.63 27.65 31.61L64 256l125.63 110.02-27.65 31.61zM350.02 397.63l-27.65-31.61L448 256 322.37 145.98l27.65-31.61L512 256 350.02 397.63z'/></svg>\"\nexport const codeSlash = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Slash</title><path d='M160 389a20.91 20.91 0 01-13.82-5.2l-128-112a21 21 0 010-31.6l128-112a21 21 0 0127.66 31.61L63.89 256l109.94 96.19A21 21 0 01160 389zM352 389a21 21 0 01-13.84-36.81L448.11 256l-109.94-96.19a21 21 0 0127.66-31.61l128 112a21 21 0 010 31.6l-128 112A20.89 20.89 0 01352 389zM208 437a21 21 0 01-20.12-27l96-320a21 21 0 1140.23 12l-96 320A21 21 0 01208 437z'/></svg>\"\nexport const codeSlashOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Slash</title><path stroke-linecap='round' stroke-linejoin='round' d='M160 368L32 256l128-112M352 368l128-112-128-112M304 96l-96 320' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const codeSlashSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Slash</title><path d='M161.98 397.63L0 256l161.98-141.63 27.65 31.61L64 256l125.63 110.02-27.65 31.61zM350.02 397.63l-27.65-31.61L448 256 322.37 145.98l27.65-31.61L512 256 350.02 397.63zM222.15 442L182 430.08 289.85 70 330 81.92 222.15 442z'/></svg>\"\nexport const codeWorking = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Working</title><circle cx='256' cy='256' r='26' stroke-miterlimit='10' stroke-width='10'/><circle cx='346' cy='256' r='26' stroke-miterlimit='10' stroke-width='10'/><circle cx='166' cy='256' r='26' stroke-miterlimit='10' stroke-width='10'/><path stroke-linecap='round' stroke-linejoin='round' stroke-width='42' d='M160 368L32 256l128-112M352 368l128-112-128-112' class='ionicon-fill-none'/></svg>\"\nexport const codeWorkingOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Working</title><circle cx='256' cy='256' r='26'/><circle cx='346' cy='256' r='26'/><circle cx='166' cy='256' r='26'/><path stroke-linecap='round' stroke-linejoin='round' d='M160 368L32 256l128-112M352 368l128-112-128-112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const codeWorkingSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Code Working</title><circle cx='256' cy='256' r='26' stroke-linecap='square' stroke-miterlimit='10' stroke-width='10'/><circle cx='346' cy='256' r='26' stroke-linecap='square' stroke-miterlimit='10' stroke-width='10'/><circle cx='166' cy='256' r='26' stroke-linecap='square' stroke-miterlimit='10' stroke-width='10'/><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='42' d='M160 368L32 256l128-112M352 368l128-112-128-112' class='ionicon-fill-none'/></svg>\"\nexport const cog = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cog</title><path d='M464 249.93a10.58 10.58 0 00-9.36-9.94L429 235.84a5.42 5.42 0 01-4.5-4.67c-.49-3.15-1-6.42-1.7-9.52a5.52 5.52 0 012.63-5.85l22.78-12.65a10.35 10.35 0 005-12.83l-3.95-10.9a10.32 10.32 0 00-12.13-6.51l-25.55 5a5.51 5.51 0 01-5.82-2.81c-1.49-2.79-3.11-5.63-4.8-8.42a5.6 5.6 0 01.44-6.5l17-19.64a10.42 10.42 0 00.39-13.76l-7.42-8.91a10.24 10.24 0 00-13.58-2l-22.37 13.43a5.39 5.39 0 01-6.39-.63c-2.47-2.17-5-4.26-7.37-6.19a5.45 5.45 0 01-1.72-6.21l9.26-24.4a10.35 10.35 0 00-4.31-13.07l-10.09-5.89a10.3 10.3 0 00-13.45 2.83L325 96.28a4.6 4.6 0 01-5.6 1.72c-.61-.25-5.77-2.36-9.78-3.7a5.42 5.42 0 01-3.74-5.23l.39-26.07a10.48 10.48 0 00-8.57-10.88l-11.45-2a10.45 10.45 0 00-11.75 7.17L266 82.1a5.46 5.46 0 01-5.36 3.65h-9.75a5.5 5.5 0 01-5.3-3.67l-8.46-24.67a10.46 10.46 0 00-11.77-7.25l-11.47 2a10.46 10.46 0 00-8.56 10.79l.4 26.16a5.45 5.45 0 01-3.86 5.25c-2.29.89-7.26 2.79-9.52 3.63-2 .72-4.18-.07-5.94-2.1l-16.26-20A10.3 10.3 0 00156.69 73l-10.06 5.83A10.36 10.36 0 00142.31 92l9.25 24.34a5.54 5.54 0 01-1.7 6.23c-2.43 2-4.92 4-7.4 6.22a5.38 5.38 0 01-6.35.64L114 115.74a10.4 10.4 0 00-13.61 2L93 126.63a10.31 10.31 0 00.37 13.75L110.45 160a5.42 5.42 0 01.45 6.45c-1.71 2.72-3.34 5.58-4.82 8.44a5.53 5.53 0 01-5.86 2.82l-25.51-4.93a10.34 10.34 0 00-12.14 6.51l-4 10.88a10.38 10.38 0 005 12.85l22.78 12.65a5.39 5.39 0 012.65 5.92l-.24 1.27c-.52 2.79-1 5.43-1.46 8.24a5.48 5.48 0 01-4.46 4.64l-25.69 4.15A10.42 10.42 0 0048 250.16v11.58A10.26 10.26 0 0057.16 272l25.68 4.14a5.41 5.41 0 014.5 4.67c.49 3.16 1 6.42 1.7 9.52a5.52 5.52 0 01-2.63 5.85l-22.77 12.67a10.35 10.35 0 00-5 12.83l4 10.9a10.33 10.33 0 0012.13 6.51l25.55-4.95a5.49 5.49 0 015.82 2.81c1.5 2.8 3.11 5.63 4.8 8.42a5.58 5.58 0 01-.44 6.5l-17 19.63a10.41 10.41 0 00-.5 13.77l7.41 8.91a10.23 10.23 0 0013.58 2l22.37-13.43a5.39 5.39 0 016.39.63c2.48 2.17 5 4.26 7.37 6.19a5.47 5.47 0 011.73 6.21l-9.27 24.4a10.35 10.35 0 004.31 13.07l10.11 5.84a10.3 10.3 0 0013.45-2.82L187 415.92c1.4-1.73 3.6-2.5 5.23-1.84 3.48 1.44 5.81 2.25 9.94 3.63a5.44 5.44 0 013.75 5.23l-.4 26.05a10.5 10.5 0 008.57 10.88l11.45 2a10.43 10.43 0 0011.75-7.17l8.5-24.77a5.45 5.45 0 015.36-3.65h9.75a5.49 5.49 0 015.3 3.67l8.47 24.67a10.48 10.48 0 0010 7.41 9.74 9.74 0 001.78-.16l11.47-2a10.46 10.46 0 008.56-10.79l-.4-26.16a5.43 5.43 0 013.75-5.2c3.84-1.29 6.54-2.33 8.91-3.25l.6-.23c3.1-1.07 4.6.23 5.47 1.31l16.75 20.63A10.3 10.3 0 00355 439l10.07-5.83a10.35 10.35 0 004.31-13.1l-9.24-24.34a5.52 5.52 0 011.69-6.23c2.43-2 4.92-4 7.4-6.22a5.39 5.39 0 016.38-.62l22.39 13.4a10.39 10.39 0 0013.61-2l7.4-8.9a10.31 10.31 0 00-.37-13.75l-17.06-19.67a5.42 5.42 0 01-.45-6.45c1.71-2.71 3.34-5.57 4.82-8.44a5.55 5.55 0 015.86-2.82l25.48 4.97a10.34 10.34 0 0012.14-6.51l3.95-10.88a10.37 10.37 0 00-5-12.84l-22.8-12.67a5.4 5.4 0 01-2.61-5.89l.24-1.27c.52-2.79 1-5.43 1.46-8.24a5.48 5.48 0 014.46-4.64l25.69-4.14a10.43 10.43 0 009.18-10.28v-11.71zm-282.45 94a15.8 15.8 0 01-25.47 2.66 135.06 135.06 0 01.42-181.65 15.81 15.81 0 0125.5 2.77l45.65 80.35a15.85 15.85 0 010 15.74zM256 391.11a134.75 134.75 0 01-28.31-3 15.81 15.81 0 01-10.23-23.36l46-80a15.79 15.79 0 0113.7-7.93h92.14a15.8 15.8 0 0115.1 20.53c-17.49 54.32-68.4 93.76-128.4 93.76zm7.51-163.9L218 147.07a15.81 15.81 0 0110.31-23.3 134 134 0 0127.69-2.88c60 0 110.91 39.44 128.37 93.79a15.8 15.8 0 01-15.1 20.53h-92a15.78 15.78 0 01-13.76-8z'/></svg>\"\nexport const cogOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cog</title><path d='M456.7 242.27l-26.08-4.2a8 8 0 01-6.6-6.82c-.5-3.2-1-6.41-1.7-9.51a8.08 8.08 0 013.9-8.62l23.09-12.82a8.05 8.05 0 003.9-9.92l-4-11a7.94 7.94 0 00-9.4-5l-25.89 5a8 8 0 01-8.59-4.11q-2.25-4.2-4.8-8.41a8.16 8.16 0 01.7-9.52l17.29-19.94a8 8 0 00.3-10.62l-7.49-9a7.88 7.88 0 00-10.5-1.51l-22.69 13.63a8 8 0 01-9.39-.9c-2.4-2.11-4.9-4.21-7.4-6.22a8 8 0 01-2.5-9.11l9.4-24.75A8 8 0 00365 78.77l-10.2-5.91a8 8 0 00-10.39 2.21l-16.64 20.84a7.15 7.15 0 01-8.5 2.5s-5.6-2.3-9.8-3.71A8 8 0 01304 87l.4-26.45a8.07 8.07 0 00-6.6-8.42l-11.59-2a8.07 8.07 0 00-9.1 5.61l-8.6 25.05a8 8 0 01-7.79 5.41h-9.8a8.07 8.07 0 01-7.79-5.41l-8.6-25.05a8.07 8.07 0 00-9.1-5.61l-11.59 2a8.07 8.07 0 00-6.6 8.42l.4 26.45a8 8 0 01-5.49 7.71c-2.3.9-7.3 2.81-9.7 3.71-2.8 1-6.1.2-8.8-2.91l-16.51-20.34A8 8 0 00156.75 73l-10.2 5.91a7.94 7.94 0 00-3.3 10.09l9.4 24.75a8.06 8.06 0 01-2.5 9.11c-2.5 2-5 4.11-7.4 6.22a8 8 0 01-9.39.9L111 116.14a8 8 0 00-10.5 1.51l-7.49 9a8 8 0 00.3 10.62l17.29 19.94a8 8 0 01.7 9.52q-2.55 4-4.8 8.41a8.11 8.11 0 01-8.59 4.11l-25.89-5a8 8 0 00-9.4 5l-4 11a8.05 8.05 0 003.9 9.92L85.58 213a7.94 7.94 0 013.9 8.62c-.6 3.2-1.2 6.31-1.7 9.51a8.08 8.08 0 01-6.6 6.82l-26.08 4.2a8.09 8.09 0 00-7.1 7.92v11.72a7.86 7.86 0 007.1 7.92l26.08 4.2a8 8 0 016.6 6.82c.5 3.2 1 6.41 1.7 9.51a8.08 8.08 0 01-3.9 8.62L62.49 311.7a8.05 8.05 0 00-3.9 9.92l4 11a7.94 7.94 0 009.4 5l25.89-5a8 8 0 018.59 4.11q2.25 4.2 4.8 8.41a8.16 8.16 0 01-.7 9.52l-17.29 19.96a8 8 0 00-.3 10.62l7.49 9a7.88 7.88 0 0010.5 1.51l22.69-13.63a8 8 0 019.39.9c2.4 2.11 4.9 4.21 7.4 6.22a8 8 0 012.5 9.11l-9.4 24.75a8 8 0 003.3 10.12l10.2 5.91a8 8 0 0010.39-2.21l16.79-20.64c2.1-2.6 5.5-3.7 8.2-2.6 3.4 1.4 5.7 2.2 9.9 3.61a8 8 0 015.49 7.71l-.4 26.45a8.07 8.07 0 006.6 8.42l11.59 2a8.07 8.07 0 009.1-5.61l8.6-25a8 8 0 017.79-5.41h9.8a8.07 8.07 0 017.79 5.41l8.6 25a8.07 8.07 0 009.1 5.61l11.59-2a8.07 8.07 0 006.6-8.42l-.4-26.45a8 8 0 015.49-7.71c4.2-1.41 7-2.51 9.6-3.51s5.8-1 8.3 2.1l17 20.94A8 8 0 00355 439l10.2-5.91a7.93 7.93 0 003.3-10.12l-9.4-24.75a8.08 8.08 0 012.5-9.12c2.5-2 5-4.1 7.4-6.21a8 8 0 019.39-.9L401 395.66a8 8 0 0010.5-1.51l7.49-9a8 8 0 00-.3-10.62l-17.29-19.94a8 8 0 01-.7-9.52q2.55-4.05 4.8-8.41a8.11 8.11 0 018.59-4.11l25.89 5a8 8 0 009.4-5l4-11a8.05 8.05 0 00-3.9-9.92l-23.09-12.82a7.94 7.94 0 01-3.9-8.62c.6-3.2 1.2-6.31 1.7-9.51a8.08 8.08 0 016.6-6.82l26.08-4.2a8.09 8.09 0 007.1-7.92V250a8.25 8.25 0 00-7.27-7.73zM256 112a143.82 143.82 0 01139.38 108.12A16 16 0 01379.85 240H274.61a16 16 0 01-13.91-8.09l-52.1-91.71a16 16 0 019.85-23.39A146.94 146.94 0 01256 112zM112 256a144 144 0 0143.65-103.41 16 16 0 0125.17 3.47L233.06 248a16 16 0 010 15.87l-52.67 91.7a16 16 0 01-25.18 3.36A143.94 143.94 0 01112 256zm144 144a146.9 146.9 0 01-38.19-4.95 16 16 0 01-9.76-23.44l52.58-91.55a16 16 0 0113.88-8H379.9a16 16 0 0115.52 19.88A143.84 143.84 0 01256 400z'/></svg>\"\nexport const cogSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cog</title><path d='M464 249.93a10.58 10.58 0 00-9.36-9.94L429 235.84a5.42 5.42 0 01-4.5-4.67c-.49-3.15-1-6.42-1.7-9.52a5.52 5.52 0 012.63-5.85l22.78-12.65a10.35 10.35 0 005-12.83l-3.95-10.9a10.32 10.32 0 00-12.13-6.51l-25.55 5a5.5 5.5 0 01-5.82-2.81c-1.49-2.79-3.11-5.63-4.8-8.42a5.6 5.6 0 01.44-6.5l17-19.63a10.44 10.44 0 00.39-13.77l-7.42-8.91a10.24 10.24 0 00-13.58-2l-22.37 13.43a5.39 5.39 0 01-6.39-.63c-2.47-2.17-4.95-4.26-7.37-6.19a5.45 5.45 0 01-1.72-6.21l9.26-24.4a10.35 10.35 0 00-4.31-13.07l-10.08-5.85a10.31 10.31 0 00-13.46 2.83L325 96.28a4.58 4.58 0 01-5.6 1.72c-.62-.25-5.77-2.36-9.78-3.7a5.42 5.42 0 01-3.74-5.23l.39-26.07a10.48 10.48 0 00-8.57-10.88l-11.45-2a10.45 10.45 0 00-11.75 7.17L266 82.1a5.42 5.42 0 01-5.36 3.65h-9.75a5.53 5.53 0 01-5.3-3.67l-8.46-24.67a10.46 10.46 0 00-11.77-7.25l-11.46 2a10.46 10.46 0 00-8.57 10.79l.4 26.16a5.45 5.45 0 01-3.86 5.25c-2.28.89-7.26 2.78-9.51 3.63-2 .72-4.19-.07-6-2.1l-16.26-20A10.3 10.3 0 00156.69 73l-10.06 5.83A10.36 10.36 0 00142.31 92l9.25 24.34a5.54 5.54 0 01-1.7 6.23c-2.43 2-4.92 4-7.4 6.22a5.38 5.38 0 01-6.35.64L114 115.74a10.39 10.39 0 00-13.61 2l-7.4 8.9a10.32 10.32 0 00.37 13.76l17.09 19.6a5.42 5.42 0 01.45 6.45c-1.71 2.72-3.34 5.58-4.82 8.44a5.53 5.53 0 01-5.86 2.82l-25.51-4.93a10.34 10.34 0 00-12.14 6.51l-4 10.88a10.37 10.37 0 005 12.85l22.78 12.65a5.39 5.39 0 012.65 5.92l-.23 1.24c-.53 2.8-1 5.45-1.47 8.27a5.48 5.48 0 01-4.46 4.64l-25.7 4.15A10.42 10.42 0 0048 250.16v11.58A10.26 10.26 0 0057.16 272l25.68 4.14a5.41 5.41 0 014.5 4.67c.49 3.16 1 6.42 1.7 9.52a5.52 5.52 0 01-2.63 5.85l-22.77 12.67a10.35 10.35 0 00-5 12.83l4 10.9a10.33 10.33 0 0012.13 6.51l25.55-4.95a5.5 5.5 0 015.82 2.81c1.5 2.8 3.12 5.64 4.8 8.42a5.58 5.58 0 01-.44 6.5l-17 19.64a10.41 10.41 0 00-.5 13.76l7.41 8.91a10.24 10.24 0 0013.58 2l22.37-13.43a5.39 5.39 0 016.39.63c2.48 2.17 5 4.26 7.37 6.19a5.45 5.45 0 011.72 6.21l-9.26 24.4a10.35 10.35 0 004.31 13.07l10.11 5.84a10.3 10.3 0 0013.45-2.82L187 415.92c1.39-1.73 3.6-2.5 5.24-1.84 3.47 1.44 5.8 2.25 9.93 3.63a5.44 5.44 0 013.75 5.23l-.4 26.05a10.5 10.5 0 008.57 10.88l11.45 2a10.44 10.44 0 0011.75-7.17l8.5-24.77a5.48 5.48 0 015.36-3.65h9.75a5.52 5.52 0 015.3 3.67l8.47 24.67a10.48 10.48 0 0010 7.41 9.74 9.74 0 001.78-.16l11.47-2a10.46 10.46 0 008.56-10.79l-.4-26.16a5.43 5.43 0 013.75-5.2c3.84-1.29 6.53-2.33 8.91-3.24l.6-.24c3.06-1.06 4.53.14 5.47 1.31l16.75 20.63A10.3 10.3 0 00355 439l10.07-5.83a10.35 10.35 0 004.31-13.1l-9.24-24.34a5.52 5.52 0 011.69-6.23c2.43-2 4.92-4 7.4-6.22a5.39 5.39 0 016.38-.62l22.39 13.4a10.39 10.39 0 0013.61-2l7.4-8.9a10.31 10.31 0 00-.37-13.75l-17.06-19.67a5.42 5.42 0 01-.45-6.45c1.71-2.71 3.34-5.57 4.82-8.44a5.56 5.56 0 015.86-2.82l25.48 4.97a10.34 10.34 0 0012.14-6.51l3.95-10.88a10.36 10.36 0 00-5-12.84l-22.8-12.67a5.4 5.4 0 01-2.61-5.89l.23-1.25c.53-2.8 1-5.44 1.47-8.26a5.48 5.48 0 014.46-4.64l25.7-4.14a10.43 10.43 0 009.17-10.28v-11.71zM171.59 361.27a135.12 135.12 0 01.5-210.94l60 105.61zM256 391.11a133.75 133.75 0 01-48.49-9.05L268 276.79h121.22C379.21 341.45 323.29 391.11 256 391.11zm12.06-155.9l-59.95-105.5a133.87 133.87 0 0147.89-8.82c67.29 0 123.21 49.66 133.22 114.32z'/></svg>\"\nexport const colorFill = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Fill</title><path d='M416 480c-35.29 0-64-29.11-64-64.88 0-33.29 28.67-65.4 44.08-82.64 1.87-2.1 3.49-3.91 4.68-5.31a19.94 19.94 0 0130.55 0c1.13 1.31 2.63 3 4.36 4.93 15.5 17.3 44.33 49.51 44.33 83.05 0 35.74-28.71 64.85-64 64.85zM398.23 276.64L166.89 47.22a52.1 52.1 0 00-73.6 0l-4.51 4.51a53.2 53.2 0 00-15.89 37.33A51.66 51.66 0 0088.14 126l41.51 41.5L45 252a44.52 44.52 0 00-13 32 42.81 42.81 0 0013.5 30.84l131.24 126a44 44 0 0061.08-.18l124.11-120.28a15.6 15.6 0 018.23-4.29 69.21 69.21 0 0111.93-.86h.3a22.53 22.53 0 0015.84-38.59zM152.29 144.85l-41.53-41.52a20 20 0 010-28.34l5.16-5.15a20.07 20.07 0 0128.39 0L186 111.21z'/></svg>\"\nexport const colorFillOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Fill</title><path d='M419.1 337.45a3.94 3.94 0 00-6.1 0c-10.5 12.4-45 46.55-45 77.66 0 27 21.5 48.89 48 48.89h0c26.5 0 48-22 48-48.89 0-31.11-34.3-65.26-44.9-77.66zM387 287.9L155.61 58.36a36 36 0 00-51 0l-5.15 5.15a36 36 0 000 51l52.89 52.89 57-57L56.33 263.2a28 28 0 00.3 40l131.2 126a28.05 28.05 0 0038.9-.1c37.8-36.6 118.3-114.5 126.7-122.9 5.8-5.8 18.2-7.1 28.7-7.1h.3a6.53 6.53 0 004.57-11.2z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const colorFillSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Fill</title><path d='M416 320s-64 48-64 99.84c0 33.28 28.67 60.16 64 60.16s64-27 64-60.16C480 368 416 320 416 320zM144 32l-76 76 70 70L32 280l176 184 152.8-148.3L416 304zm24 116l-39.6-41 15.88-15.89L184 132z'/></svg>\"\nexport const colorFilter = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Filter</title><path d='M253.72 202.53a4 4 0 004.56 0 151.88 151.88 0 01128.44-20.41 4 4 0 005.15-4C388.8 105.86 329 48 256 48s-132.8 57.86-135.87 130.15a4 4 0 005.15 4 151.88 151.88 0 01128.44 20.41zM405.31 212.56a152.53 152.53 0 01-83.08 108.23 4 4 0 00-2.28 3.69c0 1.17.05 2.34.05 3.52a151.58 151.58 0 01-47.15 109.94 4 4 0 00.64 6.31A135.24 135.24 0 00344 464c72.07 0 134.1-60.28 136-132.34a136.07 136.07 0 00-68.76-121.87 4 4 0 00-5.93 2.77z'/><path d='M390.57 203.67a4 4 0 00-2.69-4.4 135.84 135.84 0 00-114.4 12.49 4 4 0 00-.64 6.29 151.92 151.92 0 0144.47 81.4 4 4 0 005.94 2.72 136.29 136.29 0 0067.32-98.5zM192 328c0-1.18 0-2.35.05-3.52a4 4 0 00-2.28-3.69 152.53 152.53 0 01-83.08-108.23 4 4 0 00-5.88-2.77 136.07 136.07 0 00-68.76 121.87C34 403.72 96 464 168.05 464a135.24 135.24 0 0070.46-19.75 4 4 0 00.64-6.31A151.58 151.58 0 01192 328z'/><path d='M168 192a135.34 135.34 0 00-43.88 7.27 4 4 0 00-2.69 4.4 136.29 136.29 0 0067.32 98.5 4 4 0 005.94-2.72 151.92 151.92 0 0144.47-81.4 4 4 0 00-.64-6.29A135.18 135.18 0 00168 192zM256 336a151.44 151.44 0 01-42.72-6.12 4 4 0 00-5.15 4 135.69 135.69 0 0045.18 95.4 4 4 0 005.38 0 135.69 135.69 0 0045.18-95.4 4 4 0 00-5.15-4A151.44 151.44 0 01256 336zM302.57 308.33a135.94 135.94 0 00-43.87-81.58 4.06 4.06 0 00-5.4 0 135.94 135.94 0 00-43.87 81.58 4 4 0 002.69 4.4 136.06 136.06 0 0087.76 0 4 4 0 002.69-4.4z'/></svg>\"\nexport const colorFilterOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Filter</title><circle cx='256' cy='184' r='120' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='344' cy='328' r='120' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='168' cy='328' r='120' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const colorFilterSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Filter</title><path d='M256 185a167.85 167.85 0 01134.9-18.28C382.36 99.83 325.12 48 256 48S129.64 99.83 121.1 166.67A167.85 167.85 0 01256 185zM336 331.73a167.51 167.51 0 01-52.37 118.08A135 135 0 00344 464c75 0 136-61 136-136a136 136 0 00-59.06-112.08A168.53 168.53 0 01336 331.73zM283.58 206.19a167.87 167.87 0 0149.36 89.89 136.14 136.14 0 0058.06-95.7 135.87 135.87 0 00-107.43 5.81zM176.05 331.73a168.53 168.53 0 01-85-115.81A136 136 0 0032 328c0 75 61 136 136 136a135 135 0 0060.42-14.19 167.51 167.51 0 01-52.37-118.08zM179.06 296.08a167.87 167.87 0 0149.36-89.89A135.87 135.87 0 00121 200.38a136.14 136.14 0 0058.06 95.7zM302.9 345.33a168.22 168.22 0 01-93.8 0A135.9 135.9 0 00256 431.6a135.9 135.9 0 0046.9-86.27zM209 311.62a136 136 0 0094 0 135.93 135.93 0 00-47-87.22 135.93 135.93 0 00-47 87.22z'/></svg>\"\nexport const colorPalette = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Palette</title><path d='M441 336.2l-.06-.05c-9.93-9.18-22.78-11.34-32.16-12.92l-.69-.12c-9.05-1.49-10.48-2.5-14.58-6.17-2.44-2.17-5.35-5.65-5.35-9.94s2.91-7.77 5.34-9.94l30.28-26.87c25.92-22.91 40.2-53.66 40.2-86.59s-14.25-63.68-40.2-86.6c-35.89-31.59-85-49-138.37-49C223.72 48 162 71.37 116 112.11c-43.87 38.77-68 90.71-68 146.24s24.16 107.47 68 146.23c21.75 19.24 47.49 34.18 76.52 44.42a266.17 266.17 0 0086.87 15h1.81c61 0 119.09-20.57 159.39-56.4 9.7-8.56 15.15-20.83 15.34-34.56.21-14.17-5.37-27.95-14.93-36.84zM112 208a32 32 0 1132 32 32 32 0 01-32-32zm40 135a32 32 0 1132-32 32 32 0 01-32 32zm40-199a32 32 0 1132 32 32 32 0 01-32-32zm64 271a48 48 0 1148-48 48 48 0 01-48 48zm72-239a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const colorPaletteOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Palette</title><path d='M430.11 347.9c-6.6-6.1-16.3-7.6-24.6-9-11.5-1.9-15.9-4-22.6-10-14.3-12.7-14.3-31.1 0-43.8l30.3-26.9c46.4-41 46.4-108.2 0-149.2-34.2-30.1-80.1-45-127.8-45-55.7 0-113.9 20.3-158.8 60.1-83.5 73.8-83.5 194.7 0 268.5 41.5 36.7 97.5 55 152.9 55.4h1.7c55.4 0 110-17.9 148.8-52.4 14.4-12.7 11.99-36.6.1-47.7z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='144' cy='208' r='32'/><circle cx='152' cy='311' r='32'/><circle cx='224' cy='144' r='32'/><circle cx='256' cy='367' r='48'/><circle cx='328' cy='144' r='32'/></svg>\"\nexport const colorPaletteSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Palette</title><path d='M416 352c-12.6-.84-21-4-28-12-14-16-14-36 5.49-52.48l32.82-29.14c50.27-44.41 50.27-117.21 0-161.63C389.26 64.14 339.54 48 287.86 48c-60.34 0-123.39 22-172 65.11-90.46 80-90.46 210.92 0 290.87 45 39.76 105.63 59.59 165.64 60h1.84c60 0 119.07-19.5 161.2-56.77C464 390 464 385 444.62 355.56 440 348 431 353 416 352zM112 208a32 32 0 1132 32 32 32 0 01-32-32zm40 135a32 32 0 1132-32 32 32 0 01-32 32zm40-199a32 32 0 1132 32 32 32 0 01-32-32zm64 271a48 48 0 1148-48 48 48 0 01-48 48zm72-239a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const colorWand = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Wand</title><path d='M96 208H48c-8.8 0-16-7.2-16-16s7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16zM124.1 140.1c-4.2 0-8.3-1.7-11.3-4.7l-33.9-33.9c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l33.9 33.9c6.3 6.2 6.3 16.4 0 22.6-3 3-7 4.7-11.3 4.7zM192 112c-8.8 0-16-7.2-16-16V48c0-8.8 7.2-16 16-16s16 7.2 16 16v48c0 8.8-7.2 16-16 16zM259.9 140.1c-8.8 0-16-7.2-16-16 0-4.2 1.7-8.3 4.7-11.3l33.9-33.9c6.2-6.2 16.4-6.2 22.6 0 6.2 6.2 6.2 16.4 0 22.6l-33.9 33.9c-3 3-7.1 4.7-11.3 4.7zM90.2 309.8c-8.8 0-16-7.2-16-16 0-4.2 1.7-8.3 4.7-11.3l33.9-33.9c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-33.9 33.9c-3 3-7.1 4.7-11.3 4.7zM234.2 167c-18.4-18.7-48.5-19-67.2-.7s-19 48.5-.7 67.2l.7.7 39.5 39.5c3.1 3.1 8.2 3.1 11.3 0l55.9-55.9c3.1-3.1 3.1-8.2 0-11.3L234.2 167zM457 389.8L307.6 240.4c-3.1-3.1-8.2-3.1-11.3 0l-55.9 55.9c-3.1 3.1-3.1 8.2 0 11.3L389.8 457c18.4 18.7 48.5 19 67.2.7 18.7-18.4 19-48.5.7-67.2-.2-.2-.4-.5-.7-.7z'/></svg>\"\nexport const colorWandOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Wand</title><rect stroke-miterlimit='10' x='280.48' y='122.9' width='63.03' height='378.2' rx='31.52' transform='rotate(-45 312.002 311.994)' class='ionicon-fill-none ionicon-stroke-width'/><path d='M178.38 178.38a31.64 31.64 0 000 44.75L223.25 268 268 223.25l-44.87-44.87a31.64 31.64 0 00-44.75 0z'/><path stroke-miterlimit='10' stroke-linecap='round' d='M48 192h48M90.18 90.18l33.94 33.94M192 48v48M293.82 90.18l-33.94 33.94M124.12 259.88l-33.94 33.94' class='ionicon-stroke-width'/></svg>\"\nexport const colorWandSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Color Wand</title><path d='M133.441 200.647l67.197-67.196 78.142 78.142-67.196 67.196zM301.41 234.21l-67.19 67.2L412 480l68-68-178.59-177.79zM32 176h80v32H32zM67.624 90.25l22.627-22.628 56.569 56.569-22.627 22.627zM176 32h32v80h-32zM237.32 124.195l56.569-56.569 22.627 22.627-56.569 56.569zM67.62 293.887l56.569-56.569 22.627 22.627-56.569 56.569z'/></svg>\"\nexport const compass = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Compass</title><circle cx='256' cy='256' r='24'/><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm105.07 113.33l-46.88 117.2a64 64 0 01-35.66 35.66l-117.2 46.88a8 8 0 01-10.4-10.4l46.88-117.2a64 64 0 0135.66-35.66l117.2-46.88a8 8 0 0110.4 10.4z'/></svg>\"\nexport const compassOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Compass</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M350.67 150.93l-117.2 46.88a64 64 0 00-35.66 35.66l-46.88 117.2a8 8 0 0010.4 10.4l117.2-46.88a64 64 0 0035.66-35.66l46.88-117.2a8 8 0 00-10.4-10.4zM256 280a24 24 0 1124-24 24 24 0 01-24 24z'/></svg>\"\nexport const compassSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Compass</title><circle cx='256' cy='256' r='24'/><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm48 256l-160 64 64-160 160-64z'/></svg>\"\nexport const construct = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Construct</title><path d='M503.58 126.2a16.85 16.85 0 00-27.07-4.55l-51.15 51.15a11.15 11.15 0 01-15.66 0l-22.48-22.48a11.17 11.17 0 010-15.67l50.88-50.89a16.85 16.85 0 00-5.27-27.4c-39.71-17-89.08-7.45-120 23.29-26.81 26.61-34.83 68-22 113.7a11 11 0 01-3.16 11.1L114.77 365.1a56.76 56.76 0 1080.14 80.18L357 272.08a11 11 0 0110.9-3.17c45 12 86 4 112.43-22 15.2-15 25.81-36.17 29.89-59.71 3.83-22.2 1.41-44.44-6.64-61z'/><path d='M437.33 378.41c-13.94-11.59-43.72-38.4-74.07-66.22l-66.07 70.61c28.24 30 53.8 57.85 65 70.88l.07.08A30 30 0 00383.72 464h1.1a30.11 30.11 0 0021-8.62l.07-.07 33.43-33.37a29.46 29.46 0 00-2-43.53zM118.54 214.55a20.48 20.48 0 00-3-10.76 2.76 2.76 0 012.62-4.22h.06c.84.09 5.33.74 11.7 4.61 4.73 2.87 18.23 12.08 41.73 35.54a34.23 34.23 0 007.22 22.12l66.23-61.55a33.73 33.73 0 00-21.6-9.2 2.65 2.65 0 01-.21-.26l-.65-.69-24.54-33.84a28.45 28.45 0 01-4-26.11 35.23 35.23 0 0111.78-16.35c5.69-4.41 18.53-9.72 29.44-10.62a52.92 52.92 0 0115.19.94 65.57 65.57 0 017.06 2.13 15.46 15.46 0 002.15.63 16 16 0 0016.38-25.06c-.26-.35-1.32-1.79-2.89-3.73a91.85 91.85 0 00-9.6-10.36c-8.15-7.36-29.27-19.77-57-19.77a123.13 123.13 0 00-46.3 9c-38.37 15.45-63.47 36.58-75.01 47.79l-.09.09A222.14 222.14 0 0063.7 129.5a27 27 0 00-4.7 11.77 7.33 7.33 0 01-7.71 6.17H50.2a20.65 20.65 0 00-14.59 5.9L6.16 182.05l-.32.32a20.89 20.89 0 00-.24 28.72c.19.2.37.39.57.58L53.67 258a21 21 0 0014.65 6 20.65 20.65 0 0014.59-5.9l29.46-28.79a20.51 20.51 0 006.17-14.76z'/></svg>\"\nexport const constructOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Construct</title><path d='M436.67 184.11a27.17 27.17 0 01-38.3 0l-22.48-22.49a27.15 27.15 0 010-38.29l50.89-50.89a.85.85 0 00-.26-1.38C393.68 57 351.09 64.15 324.05 91c-25.88 25.69-27.35 64.27-17.87 98a27 27 0 01-7.67 27.14l-173 160.76a40.76 40.76 0 1057.57 57.54l162.15-173.3a27 27 0 0126.77-7.7c33.46 8.94 71.49 7.26 97.07-17.94 27.49-27.08 33.42-74.94 20.1-102.33a.85.85 0 00-1.36-.22z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M224 284c-17.48-17-25.49-24.91-31-30.29a18.24 18.24 0 01-3.33-21.35 20.76 20.76 0 013.5-4.62l15.68-15.29a18.66 18.66 0 015.63-3.87 18.11 18.11 0 0120 3.62c5.45 5.29 15.43 15 33.41 32.52M317.07 291.3c40.95 38.1 90.62 83.27 110 99.41a13.46 13.46 0 01.94 19.92L394.63 444a14 14 0 01-20.29-.76c-16.53-19.18-61.09-67.11-99.27-107' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M17.34 193.5l29.41-28.74a4.71 4.71 0 013.41-1.35 4.85 4.85 0 013.41 1.35h0a9.86 9.86 0 008.19 2.77c3.83-.42 7.92-1.6 10.57-4.12 6-5.8-.94-17.23 4.34-24.54a207 207 0 0119.78-22.6c6-5.88 29.84-28.32 69.9-44.45A107.31 107.31 0 01206.67 64c22.59 0 40 10 46.26 15.67a89.54 89.54 0 0110.28 11.64 78.92 78.92 0 00-9.21-2.77 68.82 68.82 0 00-20-1.26c-13.33 1.09-29.41 7.26-38 14-13.9 11-19.87 25.72-20.81 44.71-.68 14.12 2.72 22.1 36.1 55.49a6.6 6.6 0 01-.34 9.16l-18.22 18a6.88 6.88 0 01-9.54.09c-21.94-21.94-36.65-33.09-45-38.16s-15.07-6.5-18.3-6.85a30.85 30.85 0 00-18.27 3.87 11.39 11.39 0 00-2.64 2 14.14 14.14 0 00.42 20.08l1.71 1.6a4.63 4.63 0 010 6.64L71.73 246.6a4.71 4.71 0 01-3.41 1.4 4.86 4.86 0 01-3.41-1.35l-47.57-46.43a4.88 4.88 0 010-6.72z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const constructSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Construct</title><path d='M497.14 111.38l-81.09 80.84-48.58-48.41L448.56 63c-45.22-22-108.65-22.09-146.2 15.35-35.32 35.2-39.73 90.61-22.54 134.2L99.57 391.37a12 12 0 000 17l52.27 52.11a12 12 0 0017 0l180-180.5c43.16 16.21 98 11.64 132.74-23 37.5-37.45 37.42-100.34 15.56-145.6z'/><path d='M365.45 308.62l-71.83 72 75.53 79.92a10.88 10.88 0 0015.65.21l60-60.46a11 11 0 00-.24-15.69zM119 212c0-4.87-4-9.33-7.45-12.78l-.25-.24-1.54-1.47a1.06 1.06 0 01-.26-.8 16.16 16.16 0 019.52-2c1.27.13 5.91.9 12.4 4.91 3.38 2.09 32.63 30.23 43.93 40.7a11 11 0 00.14 15.35l7.43 7.86 65.66-65.17-8.25-7.84a10.87 10.87 0 00-15.31-.06c-23-24.68-29-35.45-31-42.45-4.42-15.47 4.14-28 14-36 5.84-4.62 17.88-8.08 29-9a52.72 52.72 0 0111.61.6c3.47.5 6.3 1.14 7.39 1.4a68.51 68.51 0 0111 4l12-19a88.38 88.38 0 00-13.4-17.7 115.05 115.05 0 00-5.19-5.1c-7.78-7.15-28-19.2-54.59-19.2a117.38 117.38 0 00-44.77 8.82c-37.44 15.34-61.88 36.25-73.11 47.35l-.07.07A219.55 219.55 0 0067 128.56c-5.35 7.53-4.77 15.84-4.38 21.34 0 .32 0 .67.07 1a18.41 18.41 0 00-10.78-3.5A18 18 0 0039 152.73L2 189.62a6.79 6.79 0 000 9.6L65 262a6.72 6.72 0 009.5 0l37.06-37c3.44-3.44 7.44-8.14 7.44-13z'/></svg>\"\nexport const contract = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Contract</title><path stroke-linecap='round' stroke-linejoin='round' d='M304 416V304h112M314.2 314.23L432 432M208 96v112H96M197.8 197.77L80 80M416 208H304V96M314.23 197.8L432 80M96 304h112v112M197.77 314.2L80 432' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const contractOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Contract</title><path stroke-linecap='round' stroke-linejoin='round' d='M304 416V304h112M314.2 314.23L432 432M208 96v112H96M197.8 197.77L80 80M416 208H304V96M314.23 197.8L432 80M96 304h112v112M197.77 314.2L80 432' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const contractSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Contract</title><path stroke-linecap='square' stroke-miterlimit='10' d='M304 416V304h112M314.2 314.23L432 432M208 96v112H96M197.8 197.77L80 80M416 208H304V96M314.23 197.8L432 80M96 304h112v112M197.77 314.2L80 432' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const contrast = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Contrast</title><path d='M256 32A224 224 0 0097.61 414.39 224 224 0 10414.39 97.61 222.53 222.53 0 00256 32zM64 256c0-105.87 86.13-192 192-192v384c-105.87 0-192-86.13-192-192z'/></svg>\"\nexport const contrastOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Contrast</title><circle cx='256' cy='256' r='208' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 464c-114.88 0-208-93.12-208-208S141.12 48 256 48z'/></svg>\"\nexport const contrastSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Contrast</title><path d='M256 32C132.29 32 32 132.29 32 256s100.29 224 224 224 224-100.29 224-224S379.71 32 256 32zM128.72 383.28A180 180 0 01256 76v360a178.82 178.82 0 01-127.28-52.72z'/></svg>\"\nexport const copy = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Copy</title><path d='M408 480H184a72 72 0 01-72-72V184a72 72 0 0172-72h224a72 72 0 0172 72v224a72 72 0 01-72 72z'/><path d='M160 80h235.88A72.12 72.12 0 00328 32H104a72 72 0 00-72 72v224a72.12 72.12 0 0048 67.88V160a80 80 0 0180-80z'/></svg>\"\nexport const copyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Copy</title><rect x='128' y='128' width='336' height='336' rx='57' ry='57' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M383.5 128l.5-24a56.16 56.16 0 00-56-56H112a64.19 64.19 0 00-64 64v216a56.16 56.16 0 0056 56h24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const copySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Copy</title><path d='M456 480H136a24 24 0 01-24-24V128a16 16 0 0116-16h328a24 24 0 0124 24v320a24 24 0 01-24 24z'/><path d='M112 80h288V56a24 24 0 00-24-24H60a28 28 0 00-28 28v316a24 24 0 0024 24h24V112a32 32 0 0132-32z'/></svg>\"\nexport const create = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Create</title><path d='M459.94 53.25a16.06 16.06 0 00-23.22-.56L424.35 65a8 8 0 000 11.31l11.34 11.32a8 8 0 0011.34 0l12.06-12c6.1-6.09 6.67-16.01.85-22.38zM399.34 90L218.82 270.2a9 9 0 00-2.31 3.93L208.16 299a3.91 3.91 0 004.86 4.86l24.85-8.35a9 9 0 003.93-2.31L422 112.66a9 9 0 000-12.66l-9.95-10a9 9 0 00-12.71 0z'/><path d='M386.34 193.66L264.45 315.79A41.08 41.08 0 01247.58 326l-25.9 8.67a35.92 35.92 0 01-44.33-44.33l8.67-25.9a41.08 41.08 0 0110.19-16.87l122.13-121.91a8 8 0 00-5.65-13.66H104a56 56 0 00-56 56v240a56 56 0 0056 56h240a56 56 0 0056-56V199.31a8 8 0 00-13.66-5.65z'/></svg>\"\nexport const createOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Create</title><path d='M384 224v184a40 40 0 01-40 40H104a40 40 0 01-40-40V168a40 40 0 0140-40h167.48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M459.94 53.25a16.06 16.06 0 00-23.22-.56L424.35 65a8 8 0 000 11.31l11.34 11.32a8 8 0 0011.34 0l12.06-12c6.1-6.09 6.67-16.01.85-22.38zM399.34 90L218.82 270.2a9 9 0 00-2.31 3.93L208.16 299a3.91 3.91 0 004.86 4.86l24.85-8.35a9 9 0 003.93-2.31L422 112.66a9 9 0 000-12.66l-9.95-10a9 9 0 00-12.71 0z'/></svg>\"\nexport const createSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Create</title><path d='M464.37 49.2a22.07 22.07 0 00-31.88-.76l-18.31 18.25 31.18 31.1 18-17.91a22.16 22.16 0 001.01-30.68zM252.76 336H176V259.24l9.4-9.38L323.54 112H48v352h352V188.46L262.14 326.6l-9.38 9.4zM400 143.16l32.79-32.86-31.09-31.09L368.85 112H400v31.16z'/><path d='M208 304h31.49L400 143.16V112h-31.15L208 272.51V304z'/></svg>\"\nexport const crop = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Crop</title><path d='M458 346H192a26 26 0 01-26-26V54a22 22 0 00-44 0v68H54a22 22 0 000 44h68v154a70.08 70.08 0 0070 70h154v68a22 22 0 0044 0v-68h68a22 22 0 000-44z'/><path d='M214 166h106a26 26 0 0126 26v106a22 22 0 0044 0V192a70.08 70.08 0 00-70-70H214a22 22 0 000 44z'/></svg>\"\nexport const cropOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Crop</title><path d='M144 48v272a48 48 0 0048 48h272' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M368 304V192a48 48 0 00-48-48H208M368 368v96M144 144H48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cropSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Crop</title><path d='M166 346V32h-44v90H32v44h90v224h224v90h44v-90h90v-44H166z'/><path d='M346 320h44V122H192v44h154v154z'/></svg>\"\nexport const cube = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cube</title><path d='M440.9 136.3a4 4 0 000-6.91L288.16 40.65a64.14 64.14 0 00-64.33 0L71.12 129.39a4 4 0 000 6.91L254 243.88a4 4 0 004.06 0zM54 163.51a4 4 0 00-6 3.49v173.89a48 48 0 0023.84 41.39L234 479.51a4 4 0 006-3.46V274.3a4 4 0 00-2-3.46zM272 275v201a4 4 0 006 3.46l162.15-97.23A48 48 0 00464 340.89V167a4 4 0 00-6-3.45l-184 108a4 4 0 00-2 3.45z'/></svg>\"\nexport const cubeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cube</title><path d='M448 341.37V170.61A32 32 0 00432.11 143l-152-88.46a47.94 47.94 0 00-48.24 0L79.89 143A32 32 0 0064 170.61v170.76A32 32 0 0079.89 369l152 88.46a48 48 0 0048.24 0l152-88.46A32 32 0 00448 341.37z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M69 153.99l187 110 187-110M256 463.99v-200' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cubeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cube</title><path d='M48 170v196.92L240 480V284L48 170zM272 480l192-113.08V170L272 284zm176-122.36zM448 144L256 32 64 144l192 112 192-112z'/></svg>\"\nexport const cut = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cut</title><path d='M103.48 224a71.64 71.64 0 0044.76-15.66l41.5 16.89 6.82-12.63a39.15 39.15 0 014.32-6.37l14.22-14.42-41.17-24.94A72 72 0 10103.48 224zm0-112a40 40 0 11-40 40 40 40 0 0140-40z'/><path d='M480 169l-5.52-12.58c-4.48-10.42-14.74-16-32.78-17.85-10.12-1-26.95-1.24-49.69 3.81-20 4.45-122.14 28.2-164.95 58.62-20.25 14.39-24.06 33.67-27.06 49.16-2.78 14.14-5 25.31-18 35-15 11.14-27.27 16.38-33.58 18.6a71.74 71.74 0 1024.79 38zm-224.52 87a16 16 0 1116-16 16 16 0 01-16 16zm-152 144a40 40 0 1140-40 40 40 0 01-40 40z'/><path d='M343.79 259.87l-83.74 48.18 27.63 13.08 3.62 1.74C310 331.92 359.74 356 410.53 359c3.89.23 7.47.34 10.78.34C442 359.31 453 354 459.75 350L480 336z'/></svg>\"\nexport const cutOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cut</title><circle cx='104' cy='152' r='56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='104' cy='360' r='56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M157 175l-11 15 37 15s3.46-6.42 7-10z' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M154.17 334.43L460 162c-2.5-6.7-28-12-64-4-29.12 6.47-121.16 29.05-159.16 56.05C205.85 236.06 227 272 192 298c-25.61 19-44.43 22.82-44.43 22.82zM344.47 278.24L295 306.67c14.23 6.74 65.54 33.27 117 36.33 14.92.89 30 .39 39-6z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='240' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const cutSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Cut</title><path d='M480 128h-48l-198.94 70.46-59.13-31.59a72.16 72.16 0 10-25.69 41.47l52.2 31.72L192 277l-43.64 26.76a71.74 71.74 0 1024.79 38L480 160zm-376.52 64a40 40 0 1140-40 40 40 0 01-40 40zm0 208a40 40 0 1140-40 40 40 0 01-40 40zm152-144a16 16 0 1116-16 16 16 0 01-16 16z'/><path d='M343.79 259.87l-83.74 48.18L432 368h47.99l.01-32-136.21-76.13z'/></svg>\"\nexport const desktop = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Desktop</title><path d='M16 352a48.05 48.05 0 0048 48h133.88l-4 32H144a16 16 0 000 32h224a16 16 0 000-32h-49.88l-4-32H448a48.05 48.05 0 0048-48v-48H16zm240-16a16 16 0 11-16 16 16 16 0 0116-16zM496 96a48.05 48.05 0 00-48-48H64a48.05 48.05 0 00-48 48v192h480z'/></svg>\"\nexport const desktopOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Desktop</title><rect x='32' y='64' width='448' height='320' rx='32' ry='32' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M304 448l-8-64h-80l-8 64h96z' class='ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M368 448H144' class='ionicon-fill-none ionicon-stroke-width'/><path d='M32 304v48a32.09 32.09 0 0032 32h384a32.09 32.09 0 0032-32v-48zm224 64a16 16 0 1116-16 16 16 0 01-16 16z'/></svg>\"\nexport const desktopSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Desktop</title><path d='M480 48H32a16 16 0 00-16 16v320a16 16 0 0016 16h168v32h-72v32h256v-32h-72v-32h168a16 16 0 0016-16V64a16 16 0 00-16-16zm-20 36v216H52V84zM240.13 354.08a16 16 0 1113.79 13.79 16 16 0 01-13.79-13.79z'/></svg>\"\nexport const diamond = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Diamond</title><path d='M121.72 32a4 4 0 00-3.72 5.56l2.3 5.43 40.7 94.9a4 4 0 006.88.82L243 38.4a4 4 0 00-3.2-6.4zM419.93 58.06l-41.28 96.37a4 4 0 003.68 5.57h101a4 4 0 003.4-6.11L427 57.53a4 4 0 00-7.07.53zM85 57.57l-59.71 96.32a4 4 0 003.4 6.11h101a4 4 0 003.67-5.58L92 58.1a4 4 0 00-7-.53zM393.27 32H267.82a1.94 1.94 0 00-1.56 3.11l79.92 106.46a1.94 1.94 0 003.34-.4L391.6 43l3.4-8.34a1.92 1.92 0 00-1.7-2.66zM239 448l-89.43-253.49A3.78 3.78 0 00146 192H25.7a3.72 3.72 0 00-2.95 6l216 279.81a5.06 5.06 0 006.39 1.37 5 5 0 002.39-6.08zM486.3 192H366a3.75 3.75 0 00-3.54 2.51l-98.2 278.16a5.21 5.21 0 002.42 6.31 5.22 5.22 0 006.61-1.39L489.25 198a3.72 3.72 0 00-2.95-6zM259.2 78.93l56 74.67a4 4 0 01-3.2 6.4H200a4 4 0 01-3.2-6.4l56-74.67a4 4 0 016.4 0zm-7 310.31l-67.7-191.91a4 4 0 013.77-5.33h135.46a4 4 0 013.77 5.33l-67.73 191.91a4 4 0 01-7.54 0z'/></svg>\"\nexport const diamondOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Diamond</title><path d='M35.42 188.21l207.75 269.46a16.17 16.17 0 0025.66 0l207.75-269.46a16.52 16.52 0 00.95-18.75L407.06 55.71A16.22 16.22 0 00393.27 48H118.73a16.22 16.22 0 00-13.79 7.71L34.47 169.46a16.52 16.52 0 00.95 18.75zM48 176h416' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M400 64l-48 112-96-128M112 64l48 112 96-128M256 448l-96-272M256 448l96-272' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const diamondSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Diamond</title><path d='M396.31 32H264l84.19 112.26L396.31 32zM115.69 32l48.12 112.26L248 32H115.69zM256 74.67L192 160h128l-64-85.33zM422.95 51.06L376.26 160H488L422.95 51.06zM89.05 51.06L23 160h112.74L89.05 51.06zM146.68 192H24l222.8 288h.53L146.68 192zM365.32 192L264.67 480h.53L488 192H365.32zM329.39 192H182.61L256 400l73.39-208z'/></svg>\"\nexport const dice = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Dice</title><path d='M440.88 129.37L288.16 40.62a64.14 64.14 0 00-64.33 0L71.12 129.37a4 4 0 000 6.9L254 243.85a4 4 0 004.06 0L440.9 136.27a4 4 0 00-.02-6.9zM256 152c-13.25 0-24-7.16-24-16s10.75-16 24-16 24 7.16 24 16-10.75 16-24 16zM238 270.81L54 163.48a4 4 0 00-6 3.46v173.92a48 48 0 0023.84 41.39L234 479.48a4 4 0 006-3.46V274.27a4 4 0 00-2-3.46zM96 368c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm96-32c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zM458 163.51L274 271.56a4 4 0 00-2 3.45V476a4 4 0 006 3.46l162.15-97.23A48 48 0 00464 340.86V167a4 4 0 00-6-3.49zM320 424c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm0-88c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm96 32c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm0-88c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24z'/></svg>\"\nexport const diceOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Dice</title><path stroke-linecap='round' stroke-linejoin='round' d='M448 341.37V170.61A32 32 0 00432.11 143l-152-88.46a47.94 47.94 0 00-48.24 0L79.89 143A32 32 0 0064 170.61v170.76A32 32 0 0079.89 369l152 88.46a48 48 0 0048.24 0l152-88.46A32 32 0 00448 341.37z' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M69 153.99l187 110 187-110M256 463.99v-200' class='ionicon-fill-none ionicon-stroke-width'/><ellipse cx='256' cy='152' rx='24' ry='16'/><ellipse cx='208' cy='296' rx='16' ry='24'/><ellipse cx='112' cy='328' rx='16' ry='24'/><ellipse cx='304' cy='296' rx='16' ry='24'/><ellipse cx='400' cy='240' rx='16' ry='24'/><ellipse cx='304' cy='384' rx='16' ry='24'/><ellipse cx='400' cy='328' rx='16' ry='24'/></svg>\"\nexport const diceSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Dice</title><path d='M48 366.92L240 480V284L48 170zM192 288c8.84 0 16 10.75 16 24s-7.16 24-16 24-16-10.75-16-24 7.16-24 16-24zm-96 32c8.84 0 16 10.75 16 24s-7.16 24-16 24-16-10.75-16-24 7.16-24 16-24zM272 284v196l192-113.08V170zm48 140c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm0-88c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm96 32c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm0-88c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24zm32 77.64zM256 32L64 144l192 112 192-112zm0 120c-13.25 0-24-7.16-24-16s10.75-16 24-16 24 7.16 24 16-10.75 16-24 16z'/></svg>\"\nexport const disc = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Disc</title><path d='M256 176a80 80 0 1080 80 80.09 80.09 0 00-80-80zm0 112a32 32 0 1132-32 32 32 0 01-32 32z'/><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM256 368a112 112 0 11112-112 112.12 112.12 0 01-112 112z'/></svg>\"\nexport const discOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Disc</title><circle cx='256' cy='256' r='208' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='96' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='32'/></svg>\"\nexport const discSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Disc</title><circle cx='256' cy='256' r='32'/><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM256 336a80 80 0 1180-80 80.09 80.09 0 01-80 80z'/></svg>\"\nexport const document = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document</title><path d='M428 224H288a48 48 0 01-48-48V36a4 4 0 00-4-4h-92a64 64 0 00-64 64v320a64 64 0 0064 64h224a64 64 0 0064-64V228a4 4 0 00-4-4z'/><path d='M419.22 188.59L275.41 44.78a2 2 0 00-3.41 1.41V176a16 16 0 0016 16h129.81a2 2 0 001.41-3.41z'/></svg>\"\nexport const documentAttach = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Attach</title><path d='M460 240H320a48 48 0 01-48-48V52a4 4 0 00-4-4h-53.25a65.42 65.42 0 00-6.5-9.81C196.72 23.88 179.59 16 160 16c-37.68 0-64 29.61-64 72v144c0 25 20.34 40 40 40a39.57 39.57 0 0040-40V80a16 16 0 00-32 0v152a7.75 7.75 0 01-8 8c-2.23 0-8-1.44-8-8V88c0-19.34 8.41-40 32-40 29.69 0 32 30.15 32 39.38v138.75c0 17.45-5.47 33.23-15.41 44.46C166.5 282 152.47 288 136 288s-30.5-6-40.59-17.41C85.47 259.36 80 243.58 80 226.13V144a16 16 0 00-32 0v82.13c0 51.51 33.19 89.63 80 93.53V432a64 64 0 0064 64h208a64 64 0 0064-64V244a4 4 0 00-4-4z'/><path d='M320 208h129.81a2 2 0 001.41-3.41L307.41 60.78a2 2 0 00-3.41 1.41V192a16 16 0 0016 16z'/></svg>\"\nexport const documentAttachOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Attach</title><path d='M208 64h66.75a32 32 0 0122.62 9.37l141.26 141.26a32 32 0 019.37 22.62V432a48 48 0 01-48 48H192a48 48 0 01-48-48V304' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M288 72v120a32 32 0 0032 32h120' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 80v152a23.69 23.69 0 01-24 24c-12 0-24-9.1-24-24V88c0-30.59 16.57-56 48-56s48 24.8 48 55.38v138.75c0 43-27.82 77.87-72 77.87s-72-34.86-72-77.87V144' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const documentAttachSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Attach</title><path d='M280 240a8 8 0 01-8-8V48h-57.25a65.42 65.42 0 00-6.5-9.81C196.72 23.88 179.59 16 160 16c-37.68 0-64 29.61-64 72v144c0 25 20.34 40 40 40a39.57 39.57 0 0040-40V80h-32v152a7.75 7.75 0 01-8 8c-2.23 0-8-1.44-8-8V88c0-19.34 8.41-40 32-40 29.69 0 32 30.15 32 39.38v138.75c0 17.45-5.47 33.23-15.41 44.46C166.5 282 152.47 288 136 288s-30.5-6-40.59-17.41C85.47 259.36 80 243.58 80 226.13V144H48v82.13c0 51.51 33.19 89.63 80 93.53V468a12 12 0 0012 12h312a12 12 0 0012-12V240z'/><path d='M308 208h146.31a2 2 0 001.42-3.41L307.41 56.27a2 2 0 00-3.41 1.42V204a4 4 0 004 4z'/></svg>\"\nexport const documentLock = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Lock</title><path d='M288 192h129.81a2 2 0 001.41-3.41L275.41 44.78a2 2 0 00-3.41 1.41V176a16 16 0 0016 16zM256 272c-8.82 0-16 6.28-16 14v18h32v-18c0-7.72-7.18-14-16-14z'/><path d='M428 224H288a48 48 0 01-48-48V36a4 4 0 00-4-4h-92a64 64 0 00-64 64v320a64 64 0 0064 64h224a64 64 0 0064-64V228a4 4 0 00-4-4zm-92 160a32 32 0 01-32 32h-96a32 32 0 01-32-32v-48a32 32 0 0132-32v-18c0-25.36 21.53-46 48-46s48 20.64 48 46v18a32 32 0 0132 32z'/></svg>\"\nexport const documentLockOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Lock</title><path d='M288 304v-18c0-16.63-14.26-30-32-30s-32 13.37-32 30v18' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M304 416h-96a32 32 0 01-32-32v-48a32 32 0 0132-32h96a32 32 0 0132 32v48a32 32 0 01-32 32z'/><path d='M416 221.25V416a48 48 0 01-48 48H144a48 48 0 01-48-48V96a48 48 0 0148-48h98.75a32 32 0 0122.62 9.37l141.26 141.26a32 32 0 019.37 22.62z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 50.88V176a32 32 0 0032 32h125.12' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const documentLockSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Lock</title><path d='M276 192h146.31a2 2 0 001.42-3.41L275.41 40.27a2 2 0 00-3.41 1.42V188a4 4 0 004 4zM256 272c-8.82 0-16 6.28-16 14v18h32v-18c0-7.72-7.18-14-16-14z'/><path d='M248 224a8 8 0 01-8-8V32H92a12 12 0 00-12 12v424a12 12 0 0012 12h328a12 12 0 0012-12V224zm88 175.91A16.1 16.1 0 01319.91 416H192.09A16.1 16.1 0 01176 399.91V320c0-10 7-16 16-16h16v-18c0-25.36 21.53-46 48-46s48 20.64 48 46v18h16a15.8 15.8 0 0116 16z'/></svg>\"\nexport const documentOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document</title><path d='M416 221.25V416a48 48 0 01-48 48H144a48 48 0 01-48-48V96a48 48 0 0148-48h98.75a32 32 0 0122.62 9.37l141.26 141.26a32 32 0 019.37 22.62z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 56v120a32 32 0 0032 32h120' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const documentSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document</title><path d='M240 216V32H92a12 12 0 00-12 12v424a12 12 0 0012 12h328a12 12 0 0012-12V224H248a8 8 0 01-8-8z'/><path d='M272 41.69V188a4 4 0 004 4h146.31a2 2 0 001.42-3.41L275.41 40.27a2 2 0 00-3.41 1.42z'/></svg>\"\nexport const documentText = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Text</title><path d='M428 224H288a48 48 0 01-48-48V36a4 4 0 00-4-4h-92a64 64 0 00-64 64v320a64 64 0 0064 64h224a64 64 0 0064-64V228a4 4 0 00-4-4zm-92 160H176a16 16 0 010-32h160a16 16 0 010 32zm0-80H176a16 16 0 010-32h160a16 16 0 010 32z'/><path d='M419.22 188.59L275.41 44.78a2 2 0 00-3.41 1.41V176a16 16 0 0016 16h129.81a2 2 0 001.41-3.41z'/></svg>\"\nexport const documentTextOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Text</title><path d='M416 221.25V416a48 48 0 01-48 48H144a48 48 0 01-48-48V96a48 48 0 0148-48h98.75a32 32 0 0122.62 9.37l141.26 141.26a32 32 0 019.37 22.62z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 56v120a32 32 0 0032 32h120M176 288h160M176 368h160' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const documentTextSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Document Text</title><path d='M272 41.69V188a4 4 0 004 4h146.31a2 2 0 001.42-3.41L275.41 40.27a2 2 0 00-3.41 1.42z'/><path d='M248 224a8 8 0 01-8-8V32H92a12 12 0 00-12 12v424a12 12 0 0012 12h328a12 12 0 0012-12V224zm104 160H160v-32h192zm0-80H160v-32h192z'/></svg>\"\nexport const documents = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Documents</title><path d='M298.39 248a4 4 0 002.86-6.8l-78.4-79.72a4 4 0 00-6.85 2.81V236a12 12 0 0012 12z'/><path d='M197 267a43.67 43.67 0 01-13-31v-92h-72a64.19 64.19 0 00-64 64v224a64 64 0 0064 64h144a64 64 0 0064-64V280h-92a43.61 43.61 0 01-31-13zM372 120h70.39a4 4 0 002.86-6.8l-78.4-79.72a4 4 0 00-6.85 2.81V108a12 12 0 0012 12z'/><path d='M372 152a44.34 44.34 0 01-44-44V16H220a60.07 60.07 0 00-60 60v36h42.12A40.81 40.81 0 01231 124.14l109.16 111a41.11 41.11 0 0111.83 29V400h53.05c32.51 0 58.95-26.92 58.95-60V152z'/></svg>\"\nexport const documentsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Documents</title><path d='M336 264.13V436c0 24.3-19.05 44-42.95 44H107c-23.95 0-43-19.7-43-44V172a44.26 44.26 0 0144-44h94.12a24.55 24.55 0 0117.49 7.36l109.15 111a25.4 25.4 0 017.24 17.77z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M200 128v108a28.34 28.34 0 0028 28h108' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M176 128V76a44.26 44.26 0 0144-44h94a24.83 24.83 0 0117.61 7.36l109.15 111A25.09 25.09 0 01448 168v172c0 24.3-19.05 44-42.95 44H344' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M312 32v108a28.34 28.34 0 0028 28h108' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const documentsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Documents</title><path d='M307.94 248L216 154.52V242a6 6 0 006 6z'/><path d='M184 268V144H60a12 12 0 00-12 12v328a12 12 0 0012 12h248a12 12 0 0012-12V280H196a12 12 0 01-12-12zM366 120h85.94L360 26.52V114a6 6 0 006 6z'/><path d='M340 152a12 12 0 01-12-12V16H172a12 12 0 00-12 12v84h42.12A40.81 40.81 0 01231 124.14l109.16 111a41.11 41.11 0 0111.83 29V400H452a12 12 0 0012-12V152z'/></svg>\"\nexport const download = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Download</title><path d='M376 160H272v153.37l52.69-52.68a16 16 0 0122.62 22.62l-80 80a16 16 0 01-22.62 0l-80-80a16 16 0 0122.62-22.62L240 313.37V160H136a56.06 56.06 0 00-56 56v208a56.06 56.06 0 0056 56h240a56.06 56.06 0 0056-56V216a56.06 56.06 0 00-56-56zM272 48a16 16 0 00-32 0v112h32z'/></svg>\"\nexport const downloadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Download</title><path d='M336 176h40a40 40 0 0140 40v208a40 40 0 01-40 40H136a40 40 0 01-40-40V216a40 40 0 0140-40h40' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M176 272l80 80 80-80M256 48v288' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const downloadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Download</title><path d='M272 160v147.37l64-64L358.63 266 256 368.63 153.37 266 176 243.37l64 64V160H92a12 12 0 00-12 12v296a12 12 0 0012 12h328a12 12 0 0012-12V172a12 12 0 00-12-12zM240 32h32v128h-32z'/></svg>\"\nexport const duplicate = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Duplicate</title><path d='M408 112H184a72 72 0 00-72 72v224a72 72 0 0072 72h224a72 72 0 0072-72V184a72 72 0 00-72-72zm-32.45 200H312v63.55c0 8.61-6.62 16-15.23 16.43A16 16 0 01280 376v-64h-63.55c-8.61 0-16-6.62-16.43-15.23A16 16 0 01216 280h64v-63.55c0-8.61 6.62-16 15.23-16.43A16 16 0 01312 216v64h64a16 16 0 0116 16.77c-.42 8.61-7.84 15.23-16.45 15.23z'/><path d='M395.88 80A72.12 72.12 0 00328 32H104a72 72 0 00-72 72v224a72.12 72.12 0 0048 67.88V160a80 80 0 0180-80z'/></svg>\"\nexport const duplicateOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Duplicate</title><rect x='128' y='128' width='336' height='336' rx='57' ry='57' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M383.5 128l.5-24a56.16 56.16 0 00-56-56H112a64.19 64.19 0 00-64 64v216a56.16 56.16 0 0056 56h24M296 216v160M376 296H216' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const duplicateSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Duplicate</title><path d='M112 80h288V56a24 24 0 00-24-24H66a34 34 0 00-34 34v310a24 24 0 0024 24h24V112a32 32 0 0132-32z'/><path d='M456 112H136a24 24 0 00-24 24v320a24 24 0 0024 24h320a24 24 0 0024-24V136a24 24 0 00-24-24zm-64 200h-80v80h-32v-80h-80v-32h80v-80h32v80h80z'/></svg>\"\nexport const ear = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ear</title><path d='M256 16C159 16 80 95 80 192v206.57a97.59 97.59 0 0028 68.49A94.51 94.51 0 00176 496c36.86 0 67.18-15.62 90.12-46.42 4.48-6 9.55-14.74 15.42-24.85 15.32-26.37 36.29-62.47 63.17-80.74 25.77-17.51 47.23-39.54 62-63.72C423.51 252.94 432 223.24 432 192c0-97-78.95-176-176-176zm96 184a16 16 0 01-16-16c0-39.7-35.89-72-80-72s-80 32.3-80 72v30.42c27.19-7.84 58.4-6.72 64.28-6.42a48 48 0 0138.6 75.9c-.3.41-.61.81-.95 1.2-16.55 19-36 45.48-38.46 55a16 16 0 01-30.94-8.14c5.51-20.94 36.93-58.2 44.66-67.15A16 16 0 00239.82 240h-.88c-16.6-.89-45.89.8-62.94 8.31V304a16 16 0 01-32 0V184c0-57.35 50.24-104 112-104s112 46.65 112 104a16 16 0 01-16 16z'/></svg>\"\nexport const earOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ear</title><path d='M335.72 330.76C381.73 299.5 416 251.34 416 192a160 160 0 00-320 0v206.57c0 44.26 35.74 81.43 80 81.43h0c44.26 0 66.83-25.94 77.29-40 14.77-19.81 41.71-81.56 82.43-109.24z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 304V184c0-48.4 43.2-88 96-88h0c52.8 0 96 39.6 96 88' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 239c25-18 79.82-15 79.82-15 26 0 41.17 29.42 26 50.6 0 0-36.86 42.4-41.86 61.4' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const earSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ear</title><path d='M380.48 68.09C347.09 34.5 302.88 16 256 16 159 16 80 95 80 192v206.57a97.59 97.59 0 0028 68.49A94.49 94.49 0 00176 496c19.93 0 41.06-7.69 62.8-22.87a181.46 181.46 0 0025.88-21.86C327.37 390.16 432 288.06 432 192c0-46.49-18.29-90.49-51.52-123.91zM368 200h-32v-16c0-39.7-35.89-72-80-72s-80 32.3-80 72v30.41c27.5-7.84 59.89-6.62 64.26-6.41a48 48 0 0138.62 75.9c-.3.41-.61.81-.95 1.2-16.55 19-36 45.49-38.46 55l-4.07 15.47-30.94-8.14 4.07-15.47c5.51-20.94 36.93-58.2 44.66-67.15A16 16 0 00239.82 240h-.88c-10.67-.58-42.66-.25-62.12 8l-.82.35V320h-32V184c0-57.35 50.24-104 112-104s112 46.65 112 104z'/></svg>\"\nexport const earth = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Earth</title><path d='M414.39 97.74A224 224 0 1097.61 414.52 224 224 0 10414.39 97.74zM64 256.13a191.63 191.63 0 016.7-50.31c7.34 15.8 18 29.45 25.25 45.66 9.37 20.84 34.53 15.06 45.64 33.32 9.86 16.21-.67 36.71 6.71 53.67 5.36 12.31 18 15 26.72 24 8.91 9.08 8.72 21.52 10.08 33.36a305.36 305.36 0 007.45 41.27c0 .1 0 .21.08.31C117.8 411.13 64 339.8 64 256.13zm192 192a193.12 193.12 0 01-32-2.68c.11-2.71.16-5.24.43-7 2.43-15.9 10.39-31.45 21.13-43.35 10.61-11.74 25.15-19.68 34.11-33 8.78-13 11.41-30.5 7.79-45.69-5.33-22.44-35.82-29.93-52.26-42.1-9.45-7-17.86-17.82-30.27-18.7-5.72-.4-10.51.83-16.18-.63-5.2-1.35-9.28-4.15-14.82-3.42-10.35 1.36-16.88 12.42-28 10.92-10.55-1.41-21.42-13.76-23.82-23.81-3.08-12.92 7.14-17.11 18.09-18.26 4.57-.48 9.7-1 14.09.68 5.78 2.14 8.51 7.8 13.7 10.66 9.73 5.34 11.7-3.19 10.21-11.83-2.23-12.94-4.83-18.21 6.71-27.12 8-6.14 14.84-10.58 13.56-21.61-.76-6.48-4.31-9.41-1-15.86 2.51-4.91 9.4-9.34 13.89-12.27 11.59-7.56 49.65-7 34.1-28.16-4.57-6.21-13-17.31-21-18.83-10-1.89-14.44 9.27-21.41 14.19-7.2 5.09-21.22 10.87-28.43 3-9.7-10.59 6.43-14.06 10-21.46 1.65-3.45 0-8.24-2.78-12.75q5.41-2.28 11-4.23a15.6 15.6 0 008 3c6.69.44 13-3.18 18.84 1.38 6.48 5 11.15 11.32 19.75 12.88 8.32 1.51 17.13-3.34 19.19-11.86 1.25-5.18 0-10.65-1.2-16a190.83 190.83 0 01105 32.21c-2-.76-4.39-.67-7.34.7-6.07 2.82-14.67 10-15.38 17.12-.81 8.08 11.11 9.22 16.77 9.22 8.5 0 17.11-3.8 14.37-13.62-1.19-4.26-2.81-8.69-5.42-11.37a193.27 193.27 0 0118 14.14c-.09.09-.18.17-.27.27-5.76 6-12.45 10.75-16.39 18.05-2.78 5.14-5.91 7.58-11.54 8.91-3.1.73-6.64 1-9.24 3.08-7.24 5.7-3.12 19.4 3.74 23.51 8.67 5.19 21.53 2.75 28.07-4.66 5.11-5.8 8.12-15.87 17.31-15.86a15.4 15.4 0 0110.82 4.41c3.8 3.94 3.05 7.62 3.86 12.54 1.43 8.74 9.14 4 13.83-.41a192.12 192.12 0 019.24 18.77c-5.16 7.43-9.26 15.53-21.67 6.87-7.43-5.19-12-12.72-21.33-15.06-8.15-2-16.5.08-24.55 1.47-9.15 1.59-20 2.29-26.94 9.22-6.71 6.68-10.26 15.62-17.4 22.33-13.81 13-19.64 27.19-10.7 45.57 8.6 17.67 26.59 27.26 46 26 19.07-1.27 38.88-12.33 38.33 15.38-.2 9.81 1.85 16.6 4.86 25.71 2.79 8.4 2.6 16.54 3.24 25.21a158 158 0 004.74 30.07A191.75 191.75 0 01256 448.13z'/></svg>\"\nexport const earthOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Earth</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M445.57 172.14c-16.06.1-14.48 29.73-34.49 15.75-7.43-5.18-12-12.71-21.33-15-8.15-2-16.5.08-24.55 1.47-9.15 1.58-20 2.29-26.94 9.22-6.71 6.67-10.26 15.62-17.4 22.33-13.81 13-19.64 27.19-10.7 45.57 8.6 17.67 26.59 27.26 46 26 19.07-1.27 38.88-12.33 38.33 15.38-.2 9.8 1.85 16.6 4.86 25.71 2.79 8.4 2.6 16.54 3.24 25.21 1.18 16.2 4.16 34.36 12.2 48.67l15-21.16c1.85-2.62 5.72-6.29 6.64-9.38 1.63-5.47-1.58-14.87-1.95-21s-.19-12.34-1.13-18.47c-1.32-8.59-6.4-16.64-7.1-25.13-1.29-15.81 1.6-28.43-10.58-41.65-11.76-12.75-29-15.81-45.47-13.22-8.3 1.3-41.71 6.64-28.3-12.33 2.65-3.73 7.28-6.79 10.26-10.34 2.59-3.09 4.84-8.77 7.88-11.18s17-5.18 21-3.95 8.17 7 11.64 9.56a49.89 49.89 0 0021.81 9.36c13.66 2 42.22-5.94 42-23.46-.04-8.4-7.84-20.1-10.92-27.96zM287.45 316.3c-5.33-22.44-35.82-29.94-52.26-42.11-9.45-7-17.86-17.81-30.27-18.69-5.72-.41-10.51.83-16.18-.64-5.2-1.34-9.28-4.14-14.82-3.41-10.35 1.36-16.88 12.42-28 10.92-10.55-1.42-21.42-13.76-23.82-23.81-3.08-12.92 7.14-17.11 18.09-18.26 4.57-.48 9.7-1 14.09.67 5.78 2.15 8.51 7.81 13.7 10.67 9.73 5.33 11.7-3.19 10.21-11.83-2.23-12.94-4.83-18.22 6.71-27.12 8-6.14 14.84-10.58 13.56-21.61-.76-6.48-4.31-9.41-1-15.86 2.51-4.91 9.4-9.34 13.89-12.27 11.59-7.56 49.65-7 34.1-28.16-4.57-6.21-13-17.31-21-18.83-10-1.89-14.44 9.27-21.41 14.19-7.2 5.09-21.22 10.87-28.43 3-9.7-10.59 6.43-14.07 10-21.46s-8.27-21.36-14.61-24.9l-29.81 33.43a41.52 41.52 0 008.34 31.86c5.93 7.63 15.37 10.08 15.8 20.5.42 10-1.14 15.12-7.68 22.15-2.83 3-4.83 7.26-7.71 10.07-3.53 3.43-2.22 2.38-7.73 3.32-10.36 1.75-19.18 4.45-29.19 7.21C95.34 199.94 93.8 172.69 86.2 162l-25 20.19c-.27 3.31 4.1 9.4 5.29 13 6.83 20.57 20.61 36.48 29.51 56.16 9.37 20.84 34.53 15.06 45.64 33.32 9.86 16.2-.67 36.71 6.71 53.67 5.36 12.31 18 15 26.72 24 8.91 9.09 8.72 21.53 10.08 33.36a305.22 305.22 0 007.45 41.28c1.21 4.69 2.32 10.89 5.53 14.76 2.2 2.66 9.75 4.95 6.7 5.83 4.26.7 11.85 4.68 15.4 1.76 4.68-3.84 3.43-15.66 4.24-21 2.43-15.9 10.39-31.45 21.13-43.35 10.61-11.74 25.15-19.69 34.11-33 8.73-12.98 11.36-30.49 7.74-45.68zm-33.39 26.32c-6 10.71-19.36 17.88-27.95 26.39-2.33 2.31-7.29 10.31-10.21 8.58-2.09-1.24-2.8-11.62-3.57-14a61.17 61.17 0 00-21.71-29.95c-3.13-2.37-10.89-5.45-12.68-8.7-2-3.53-.2-11.86-.13-15.7.11-5.6-2.44-14.91-1.06-20 1.6-5.87-1.48-2.33 3.77-3.49 2.77-.62 14.21 1.39 17.66 2.11 5.48 1.14 8.5 4.55 12.82 8 11.36 9.11 23.87 16.16 36.6 23.14 9.86 5.46 12.76 12.37 6.46 23.62zM184.46 67.09c4.74 4.63 9.2 10.11 16.27 10.57 6.69.45 13-3.17 18.84 1.38 6.48 5 11.15 11.33 19.75 12.89 8.32 1.51 17.13-3.35 19.19-11.86 2-8.11-2.31-16.93-2.57-25.07 0-1.13.61-6.15-.17-7-.58-.64-5.42.08-6.16.1q-8.13.24-16.22 1.12a207.1 207.1 0 00-57.18 14.65c2.43 1.68 5.48 2.35 8.25 3.22zM356.4 123.27c8.49 0 17.11-3.8 14.37-13.62-2.3-8.23-6.22-17.16-15.76-12.72-6.07 2.82-14.67 10-15.38 17.12-.81 8.08 11.11 9.22 16.77 9.22zM349.62 166.24c8.67 5.19 21.53 2.75 28.07-4.66 5.11-5.8 8.12-15.87 17.31-15.86a15.4 15.4 0 0110.82 4.41c3.8 3.93 3.05 7.62 3.86 12.54 1.81 11.05 13.66.63 16.75-3.65 2-2.79 4.71-6.93 3.8-10.56-.84-3.39-4.8-7-6.56-10.11-5.14-9-9.37-19.47-17.07-26.74-7.41-7-16.52-6.19-23.55 1.08-5.76 6-12.45 10.75-16.39 18.05-2.78 5.13-5.91 7.58-11.54 8.91-3.1.73-6.64 1-9.24 3.08-7.24 5.7-3.12 19.39 3.74 23.51z'/></svg>\"\nexport const earthSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Earth</title><path d='M267 474l-.8-.13a.85.85 0 00.8.13zM448.9 187.78a5.51 5.51 0 00-10.67-.63A5.52 5.52 0 01433 191h-15.47a5.48 5.48 0 01-2.84-.79l-22.38-13.42a5.48 5.48 0 00-2.84-.79h-35.8a5.48 5.48 0 00-3.06.93l-44.15 29.43A5.52 5.52 0 00304 211v41.74a5.51 5.51 0 002.92 4.87l57.89 30.9a5.55 5.55 0 012.92 4.8l.27 23.49a5.53 5.53 0 002.85 4.75l23.26 12.87a5.54 5.54 0 012.85 4.83v48.6a5.52 5.52 0 009.17 4.14c9.38-8.26 22.83-20.32 24.62-23.08q4.44-6.87 8.33-14.07a207.39 207.39 0 0013.6-31c12.68-36.71 2.66-102.7-3.78-136.06zM286.4 302.8l-61.33-46a4 4 0 00-2.4-.8h-29.1a3.78 3.78 0 01-2.68-1.11l-13.72-13.72a4 4 0 00-2.83-1.17h-53.19a3.79 3.79 0 01-2.68-6.47l8.42-8.42a3.78 3.78 0 012.68-1.11h32.37a8 8 0 007.7-5.83l6.89-24.5a4 4 0 012-2.47L206 177.06a3.79 3.79 0 002.05-3.37v-12.5a3.82 3.82 0 01.68-2.17l14.6-21.02a3.75 3.75 0 011.78-1.38l20.43-7.67a3.79 3.79 0 002.46-3.55V114a3.8 3.8 0 00-1.69-3.16l-20.48-13.62A3.83 3.83 0 00222 97l-27.88 13.94a3.78 3.78 0 01-4-.41l-13.22-10.45a3.8 3.8 0 01.1-6l10.74-7.91a3.78 3.78 0 00-.09-6.16l-16.73-11.67a3.78 3.78 0 00-4-.22c-6.05 3.31-23.8 13.11-30.1 17.52a209.48 209.48 0 00-68.16 80c-1.82 3.76-4.07 7.59-4.29 11.72s-3.46 13.35-4.81 17.08a3.78 3.78 0 00.24 3.1l35.69 65.58a3.74 3.74 0 001.38 1.44l37.55 22.54a3.78 3.78 0 011.81 2.73l7.52 54.54a3.82 3.82 0 001.61 2.61l29.3 20.14a4 4 0 011.65 2.48l15.54 73.8a3.6 3.6 0 00.49 1.22c1.46 2.36 7.28 11 14.3 12.28-.65.18-1.23.59-1.88.78a47.63 47.63 0 015 1.16c2 .54 4 1 6 1.43 3.13.62 3.44 1.1 4.94-1.68 2-3.72 4.29-5 6-5.46a3.85 3.85 0 002.89-2.9l10.07-46.68a4 4 0 011.6-2.42l45-31.9a4 4 0 001.69-3.27V306a4 4 0 00-1.55-3.2z'/><path d='M262 48s-3.65.21-4.39.23q-8.13.24-16.22 1.12A207.45 207.45 0 00184.21 64c2.43 1.68-1.75 3.22-1.75 3.22L189 80h35l24 12 21-12zM354.23 120.06l16.11-14a4 4 0 00-.94-6.65l-18.81-8.73a4 4 0 00-5.3 1.9l-7.75 16.21a4 4 0 001.49 5.11l10.46 6.54a4 4 0 004.74-.38zM429.64 140.67l-5.83-9c-.09-.14-.17-.28-.25-.43-1.05-2.15-9.74-19.7-17-26.51-5.45-5.15-7-3.67-7.43-2.53a3.77 3.77 0 01-1.19 1.6l-28.84 23.31a4 4 0 01-2.51.89h-14.93a4 4 0 00-2.83 1.17l-12 12a4 4 0 000 5.66l12 12a4 4 0 002.83 1.17h75.17a4 4 0 004-4.17l-.55-13.15a4 4 0 00-.64-2.01z'/><path d='M256 72a184 184 0 11-130.1 53.9A182.77 182.77 0 01256 72m0-40C132.3 32 32 132.3 32 256s100.3 224 224 224 224-100.3 224-224S379.7 32 256 32z'/></svg>\"\nexport const easel = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Easel</title><rect x='80' y='112' width='352' height='208' rx='12' ry='12'/><path d='M432 64H272V48a16 16 0 00-32 0v16H80a48.05 48.05 0 00-48 48v208a48.05 48.05 0 0048 48h42.79l-26.17 91.6a16 16 0 1030.76 8.8L156.07 368H240v48a16 16 0 0032 0v-48h83.93l28.69 100.4a16 16 0 1030.76-8.8L389.21 368H432a48.05 48.05 0 0048-48V112a48.05 48.05 0 00-48-48zm16 256a16 16 0 01-16 16H80a16 16 0 01-16-16V112a16 16 0 0116-16h352a16 16 0 0116 16z'/></svg>\"\nexport const easelOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Easel</title><rect x='48' y='80' width='416' height='272' rx='32' ry='32' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 416v-64M256 80V48M400 464l-32-112M112 464l32-112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const easelSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Easel</title><path d='M468 64H278V32h-44v32H44a12 12 0 00-12 12v280a12 12 0 0012 12h78.19L89.93 470.46l36.53 9.61L161.74 368H234v64h44v-64h71.84l31 111.7 36.83-8.57L389.05 368H468a12 12 0 0012-12V76a12 12 0 00-12-12zm-26 266H70V102h372z'/><path d='M88 120h336v192H88z'/></svg>\"\nexport const egg = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Egg</title><path d='M256 480c-52.57 0-96.72-17.54-127.7-50.73C96.7 395.4 80 346.05 80 286.55 80 230.5 101.48 168 138.93 115 175.65 63 219.41 32 256 32s80.35 31 117.07 83C410.52 168 432 230.5 432 286.55c0 59.5-16.7 108.85-48.3 142.72C352.72 462.46 308.57 480 256 480z'/></svg>\"\nexport const eggOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Egg</title><path d='M256 48C192 48 96 171.69 96 286.55S160 464 256 464s160-62.59 160-177.45S320 48 256 48z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const eggSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Egg</title><path d='M418.39 381.05c-8.08 21.68-19.76 40.1-34.72 54.75-14.38 14.07-32.1 24.95-52.67 32.34C309.08 476 283.85 480 256 480s-53.08-4-75-11.86c-20.57-7.39-38.29-18.27-52.67-32.34-15-14.65-26.64-33.07-34.72-54.75C84.58 356.82 80 328.53 80 296.94c0-30.28 6.68-62.57 19.86-96A371 371 0 01151 111.42C195.78 53.56 241 32 256 32s62.67 22.4 105 79.42c18.33 24.71 38.87 58.34 51.17 89.54 13.18 33.41 19.86 65.7 19.86 96-.03 31.57-4.61 59.86-13.64 84.09z'/></svg>\"\nexport const ellipse = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipse</title><path d='M256 464c-114.69 0-208-93.31-208-208S141.31 48 256 48s208 93.31 208 208-93.31 208-208 208z'/></svg>\"\nexport const ellipseOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipse</title><circle cx='256' cy='256' r='192' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ellipseSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipse</title><path d='M256 464c-114.69 0-208-93.31-208-208S141.31 48 256 48s208 93.31 208 208-93.31 208-208 208z'/></svg>\"\nexport const ellipsisHorizontal = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Horizontal</title><circle cx='256' cy='256' r='48'/><circle cx='416' cy='256' r='48'/><circle cx='96' cy='256' r='48'/></svg>\"\nexport const ellipsisHorizontalCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Horizontal Circle</title><circle cx='256' cy='256' r='26'/><circle cx='346' cy='256' r='26'/><circle cx='166' cy='256' r='26'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ellipsisHorizontalCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Horizontal Circle</title><circle cx='256' cy='256' r='26'/><circle cx='346' cy='256' r='26'/><circle cx='166' cy='256' r='26'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ellipsisHorizontalCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Horizontal Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm-90 234a26 26 0 1126-26 26 26 0 01-26 26zm90 0a26 26 0 1126-26 26 26 0 01-26 26zm90 0a26 26 0 1126-26 26 26 0 01-26 26z'/></svg>\"\nexport const ellipsisHorizontalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Horizontal</title><circle cx='256' cy='256' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='416' cy='256' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='96' cy='256' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ellipsisHorizontalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Horizontal</title><circle cx='256' cy='256' r='48'/><circle cx='416' cy='256' r='48'/><circle cx='96' cy='256' r='48'/></svg>\"\nexport const ellipsisVertical = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Vertical</title><circle cx='256' cy='256' r='48'/><circle cx='256' cy='416' r='48'/><circle cx='256' cy='96' r='48'/></svg>\"\nexport const ellipsisVerticalCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Vertical Circle</title><circle cx='256' cy='256' r='26'/><circle cx='256' cy='346' r='26'/><circle cx='256' cy='166' r='26'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ellipsisVerticalCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Vertical Circle</title><circle cx='256' cy='256' r='26'/><circle cx='256' cy='346' r='26'/><circle cx='256' cy='166' r='26'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ellipsisVerticalCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Vertical Circle</title><path d='M464 256c0-114.87-93.13-208-208-208S48 141.13 48 256s93.13 208 208 208 208-93.13 208-208zm-234-90a26 26 0 1126 26 26 26 0 01-26-26zm0 90a26 26 0 1126 26 26 26 0 01-26-26zm0 90a26 26 0 1126 26 26 26 0 01-26-26z'/></svg>\"\nexport const ellipsisVerticalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Vertical</title><circle cx='256' cy='256' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='416' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='96' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ellipsisVerticalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ellipsis Vertical</title><circle cx='256' cy='256' r='48'/><circle cx='256' cy='416' r='48'/><circle cx='256' cy='96' r='48'/></svg>\"\nexport const enter = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Enter</title><path d='M160 136v104h153.37l-52.68-52.69a16 16 0 0122.62-22.62l80 80a16 16 0 010 22.62l-80 80a16 16 0 01-22.62-22.62L313.37 272H160v104a56.06 56.06 0 0056 56h208a56.06 56.06 0 0056-56V136a56.06 56.06 0 00-56-56H216a56.06 56.06 0 00-56 56zM48 240a16 16 0 000 32h112v-32z'/></svg>\"\nexport const enterOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Enter</title><path d='M176 176v-40a40 40 0 0140-40h208a40 40 0 0140 40v240a40 40 0 01-40 40H216a40 40 0 01-40-40v-40' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M272 336l80-80-80-80M48 256h288' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const enterSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Enter</title><path d='M160 240h147.37l-64-64L266 153.37 368.63 256 266 358.63 243.37 336l64-64H160v148a12 12 0 0012 12h296a12 12 0 0012-12V92a12 12 0 00-12-12H172a12 12 0 00-12 12zM32 240h128v32H32z'/></svg>\"\nexport const exit = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Exit</title><path d='M336 376V272H191a16 16 0 010-32h145V136a56.06 56.06 0 00-56-56H88a56.06 56.06 0 00-56 56v240a56.06 56.06 0 0056 56h192a56.06 56.06 0 0056-56zM425.37 272l-52.68 52.69a16 16 0 0022.62 22.62l80-80a16 16 0 000-22.62l-80-80a16 16 0 00-22.62 22.62L425.37 240H336v32z'/></svg>\"\nexport const exitOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Exit</title><path d='M320 176v-40a40 40 0 00-40-40H88a40 40 0 00-40 40v240a40 40 0 0040 40h192a40 40 0 0040-40v-40M384 176l80 80-80 80M191 256h273' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const exitSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Exit</title><path d='M335.69 272h-161v-32h161V92a12 12 0 00-12-12h-280a12 12 0 00-12 12v328a12 12 0 0012 12h280a12 12 0 0012-12zM419.06 272l-64 64 22.63 22.63L480.31 256 377.69 153.37 355.06 176l64 64h-83.37v32h83.37z'/></svg>\"\nexport const expand = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Expand</title><path stroke-linecap='round' stroke-linejoin='round' d='M432 320v112H320M421.8 421.77L304 304M80 192V80h112M90.2 90.23L208 208M320 80h112v112M421.77 90.2L304 208M192 432H80V320M90.23 421.8L208 304' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const expandOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Expand</title><path stroke-linecap='round' stroke-linejoin='round' d='M432 320v112H320M421.8 421.77L304 304M80 192V80h112M90.2 90.23L208 208M320 80h112v112M421.77 90.2L304 208M192 432H80V320M90.23 421.8L208 304' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const expandSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Expand</title><path stroke-linecap='square' stroke-miterlimit='10' d='M432 320v112H320M421.8 421.77L304 304M80 192V80h112M90.2 90.23L208 208M320 80h112v112M421.77 90.2L304 208M192 432H80V320M90.23 421.8L208 304' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const extensionPuzzle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Extension Puzzle</title><path d='M345.14 480H274a18 18 0 01-18-18v-27.71a31.32 31.32 0 00-9.71-22.77c-7.78-7.59-19.08-11.8-30.89-11.51-21.36.5-39.4 19.3-39.4 41.06V462a18 18 0 01-18 18H87.62A55.62 55.62 0 0132 424.38V354a18 18 0 0118-18h27.71c9.16 0 18.07-3.92 25.09-11a42.06 42.06 0 0012.2-29.92C114.7 273.89 97.26 256 76.91 256H50a18 18 0 01-18-18v-70.38A55.62 55.62 0 0187.62 112h55.24a8 8 0 008-8v-6.48A65.53 65.53 0 01217.54 32c35.49.62 64.36 30.38 64.36 66.33V104a8 8 0 008 8h55.24A54.86 54.86 0 01400 166.86v55.24a8 8 0 008 8h5.66c36.58 0 66.34 29 66.34 64.64 0 36.61-29.39 66.4-65.52 66.4H408a8 8 0 00-8 8v56A54.86 54.86 0 01345.14 480z'/></svg>\"\nexport const extensionPuzzleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Extension Puzzle</title><path stroke-linecap='round' stroke-linejoin='round' d='M413.66 246.1H386a2 2 0 01-2-2v-77.24A38.86 38.86 0 00345.14 128H267.9a2 2 0 01-2-2V98.34c0-27.14-21.5-49.86-48.64-50.33a49.53 49.53 0 00-50.4 49.51V126a2 2 0 01-2 2H87.62A39.74 39.74 0 0048 167.62V238a2 2 0 002 2h26.91c29.37 0 53.68 25.48 54.09 54.85.42 29.87-23.51 57.15-53.29 57.15H50a2 2 0 00-2 2v70.38A39.74 39.74 0 0087.62 464H158a2 2 0 002-2v-20.93c0-30.28 24.75-56.35 55-57.06 30.1-.7 57 20.31 57 50.28V462a2 2 0 002 2h71.14A38.86 38.86 0 00384 425.14v-78a2 2 0 012-2h28.48c27.63 0 49.52-22.67 49.52-50.4s-23.2-48.64-50.34-48.64z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const extensionPuzzleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Extension Puzzle</title><path d='M345.14 480H256v-45.71a31.3 31.3 0 00-9.59-22.65c-7.67-7.56-18.83-11.81-30.57-11.64a44.38 44.38 0 00-28.45 10.67c-5.2 4.6-11.39 12.56-11.39 24.42V480H87.62A55.68 55.68 0 0132 424.38V336h45.71c9.16 0 18.07-3.92 25.09-11a42.06 42.06 0 0012.2-29.92C114.7 273.89 97.26 256 76.91 256H32v-89.34a53.77 53.77 0 0116.53-39A55.88 55.88 0 0187.62 112h63.24V97.52A65.53 65.53 0 01217.54 32c35.49.62 64.36 30.38 64.36 66.33V112h63.24A54.28 54.28 0 01400 166.86v63.24h13.66c36.58 0 66.34 29 66.34 64.64 0 36.61-29.39 66.4-65.52 66.4H400v63.24c0 30.67-24.61 55.62-54.86 55.62z'/></svg>\"\nexport const eye = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eye</title><circle cx='256' cy='256' r='64'/><path d='M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96c-42.52 0-84.33 12.15-124.27 36.11-40.73 24.43-77.63 60.12-109.68 106.07a31.92 31.92 0 00-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416c46.71 0 93.81-14.43 136.2-41.72 38.46-24.77 72.72-59.66 99.08-100.92a32.2 32.2 0 00-.1-34.76zM256 352a96 96 0 1196-96 96.11 96.11 0 01-96 96z'/></svg>\"\nexport const eyeOff = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eye Off</title><path d='M432 448a15.92 15.92 0 01-11.31-4.69l-352-352a16 16 0 0122.62-22.62l352 352A16 16 0 01432 448zM248 315.85l-51.79-51.79a2 2 0 00-3.39 1.69 64.11 64.11 0 0053.49 53.49 2 2 0 001.69-3.39zM264 196.15L315.87 248a2 2 0 003.4-1.69 64.13 64.13 0 00-53.55-53.55 2 2 0 00-1.72 3.39z'/><path d='M491 273.36a32.2 32.2 0 00-.1-34.76c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.68 96a226.54 226.54 0 00-71.82 11.79 4 4 0 00-1.56 6.63l47.24 47.24a4 4 0 003.82 1.05 96 96 0 01116 116 4 4 0 001.05 3.81l67.95 68a4 4 0 005.4.24 343.81 343.81 0 0067.24-77.4zM256 352a96 96 0 01-93.3-118.63 4 4 0 00-1.05-3.81l-66.84-66.87a4 4 0 00-5.41-.23c-24.39 20.81-47 46.13-67.67 75.72a31.92 31.92 0 00-.64 35.54c26.41 41.33 60.39 76.14 98.28 100.65C162.06 402 207.92 416 255.68 416a238.22 238.22 0 0072.64-11.55 4 4 0 001.61-6.64l-47.47-47.46a4 4 0 00-3.81-1.05A96 96 0 01256 352z'/></svg>\"\nexport const eyeOffOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eye Off</title><path d='M432 448a15.92 15.92 0 01-11.31-4.69l-352-352a16 16 0 0122.62-22.62l352 352A16 16 0 01432 448zM255.66 384c-41.49 0-81.5-12.28-118.92-36.5-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 00.14-2.94L93.5 161.38a2 2 0 00-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 00-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0075.8-12.58 2 2 0 00.77-3.31l-21.58-21.58a4 4 0 00-3.83-1 204.8 204.8 0 01-51.16 6.47zM490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 00-74.89 12.83 2 2 0 00-.75 3.31l21.55 21.55a4 4 0 003.88 1 192.82 192.82 0 0150.21-6.69c40.69 0 80.58 12.43 118.55 37 34.71 22.4 65.74 53.88 89.76 91a.13.13 0 010 .16 310.72 310.72 0 01-64.12 72.73 2 2 0 00-.15 2.95l19.9 19.89a2 2 0 002.7.13 343.49 343.49 0 0068.64-78.48 32.2 32.2 0 00-.1-34.78z'/><path d='M256 160a95.88 95.88 0 00-21.37 2.4 2 2 0 00-1 3.38l112.59 112.56a2 2 0 003.38-1A96 96 0 00256 160zM165.78 233.66a2 2 0 00-3.38 1 96 96 0 00115 115 2 2 0 001-3.38z'/></svg>\"\nexport const eyeOffSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eye Off</title><path d='M63.998 86.004l21.998-21.998L448 426.01l-21.998 21.998zM259.34 192.09l60.57 60.57a64.07 64.07 0 00-60.57-60.57zM252.66 319.91l-60.57-60.57a64.07 64.07 0 0060.57 60.57z'/><path d='M256 352a96 96 0 01-92.6-121.34l-69.07-69.08C66.12 187.42 39.24 221.14 16 256c26.42 44 62.56 89.24 100.2 115.18C159.38 400.92 206.33 416 255.76 416A233.47 233.47 0 00335 402.2l-53.61-53.6A95.84 95.84 0 01256 352zM256 160a96 96 0 0192.6 121.34L419.26 352c29.15-26.25 56.07-61.56 76.74-96-26.38-43.43-62.9-88.56-101.18-114.82C351.1 111.2 304.31 96 255.76 96a222.92 222.92 0 00-78.21 14.29l53.11 53.11A95.84 95.84 0 01256 160z'/></svg>\"\nexport const eyeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eye</title><path d='M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 00-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 000-17.47C428.89 172.28 347.8 112 255.66 112z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='80' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const eyeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eye</title><circle cx='256' cy='256' r='64'/><path d='M394.82 141.18C351.1 111.2 304.31 96 255.76 96c-43.69 0-86.28 13-126.59 38.48C88.52 160.23 48.67 207 16 256c26.42 44 62.56 89.24 100.2 115.18C159.38 400.92 206.33 416 255.76 416c49 0 95.85-15.07 139.3-44.79C433.31 345 469.71 299.82 496 256c-26.38-43.43-62.9-88.56-101.18-114.82zM256 352a96 96 0 1196-96 96.11 96.11 0 01-96 96z'/></svg>\"\nexport const eyedrop = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eyedrop</title><path d='M461.05 51a65 65 0 00-45.71-19h-.76a61.81 61.81 0 00-44.36 19.25 12.81 12.81 0 00-1.07 1.25l-54 69.76c-5.62 7.1-12.74 8.68-16.78 4.64l-1.9-1.9a48 48 0 00-67.92 67.92l9.91 9.91a2 2 0 010 2.83L58.7 385.38C54 390.05 46.9 399.85 38.85 431c-4.06 15.71-6.51 29.66-6.61 30.24A16 16 0 0048 480a15.68 15.68 0 002.64-.22c.58-.1 14.44-2.43 30.13-6.44 31.07-7.94 41.05-15.24 45.85-20l179.77-179.79a2 2 0 012.82 0l9.92 9.92a48 48 0 0067.92-67.93l-1.59-1.54c-5-5-2.52-12.11 4.32-17.14l69.75-53.94a17.82 17.82 0 001.47-1.32 63.2 63.2 0 0019-45A63.88 63.88 0 00461.05 51zM250.78 283.9c-2.92 2.92-16.18 7.92-23.39.71s-2.24-20.42.69-23.35l33-33a2 2 0 012.83 0l19.84 19.83a2 2 0 010 2.83z'/></svg>\"\nexport const eyedropOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eyedrop</title><path d='M262.51 204.22L70 396.69C57.56 409.15 48 464 48 464s54.38-9.09 67.31-22L307.8 249.51' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='211.72' y='172.19' width='192.15' height='64.05' rx='32.03' ry='32.03' transform='rotate(45 307.788 204.2)' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M289.91 141s20.57 8.57 37.22-8.08l54.67-70.63c18.5-19.41 49.26-18.69 67.94 0h0c18.68 18.68 19.34 48.81 0 67.93l-70.68 54.67c-15.65 15.65-8.08 37.22-8.08 37.22M115.31 442s-26.48 17.34-44.56-.73-.75-44.58-.75-44.58' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const eyedropSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Eyedrop</title><path d='M480 96.22a63.84 63.84 0 00-18.95-45.61 65 65 0 00-45.71-19h-.76a61.78 61.78 0 00-44.22 19.09l-74.88 74.88-33.88-33.86-34.07 33.91-33.85 34 44 44L32 409.37V480h70.63l205.7-205.71L352 317.94l11.31-11.19c.11-.1 10.42-10.31 22.79-22.68l33.85-34-33.89-33.89L461 141.23a63.18 63.18 0 0019-45.01zM245 292.35L219.65 267l40.68-40.69 25.38 25.38z'/></svg>\"\nexport const fastFood = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fast Food</title><path d='M368 128h.09M479.55 96h-91.06l8.92-35.66 38.32-13.05c8.15-2.77 13-11.43 10.65-19.71a16 16 0 00-20.54-10.73l-47 16a16 16 0 00-10.36 11.27L355.51 96H224.45c-8.61 0-16 6.62-16.43 15.23A16 16 0 00224 128h2.75l1 8.66A8.3 8.3 0 00236 144c39 0 73.66 10.9 100.12 31.52A121.9 121.9 0 01371 218.07a123.4 123.4 0 0110.12 29.51 7.83 7.83 0 003.29 4.88 72 72 0 0126.38 86.43 7.92 7.92 0 00-.15 5.53A96 96 0 01416 376c0 22.34-7.6 43.63-21.4 59.95a80.12 80.12 0 01-28.78 21.67 8 8 0 00-4.21 4.37 108.19 108.19 0 01-17.37 29.86 2.5 2.5 0 001.9 4.11h49.21a48.22 48.22 0 0047.85-44.14L477.4 128h2.6a16 16 0 0016-16.77c-.42-8.61-7.84-15.23-16.45-15.23z'/><path d='M108.69 320a23.87 23.87 0 0117 7l15.51 15.51a4 4 0 005.66 0L162.34 327a23.87 23.87 0 0117-7h196.58a8 8 0 008.08-7.92V312a40.07 40.07 0 00-32-39.2c-.82-29.69-13-54.54-35.51-72C295.67 184.56 267.85 176 236 176h-72c-68.22 0-114.43 38.77-116 96.8A40.07 40.07 0 0016 312a8 8 0 008 8zM185.94 352a8 8 0 00-5.66 2.34l-22.14 22.15a20 20 0 01-28.28 0l-22.14-22.15a8 8 0 00-5.66-2.34h-69.4a15.93 15.93 0 00-15.76 13.17A65.22 65.22 0 0016 376c0 30.59 21.13 55.51 47.26 56 2.43 15.12 8.31 28.78 17.16 39.47C93.51 487.28 112.54 496 134 496h132c21.46 0 40.49-8.72 53.58-24.55 8.85-10.69 14.73-24.35 17.16-39.47 26.13-.47 47.26-25.39 47.26-56a65.22 65.22 0 00-.9-10.83A15.93 15.93 0 00367.34 352z'/></svg>\"\nexport const fastFoodOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fast Food</title><path d='M322 416c0 35.35-20.65 64-56 64H134c-35.35 0-56-28.65-56-64M336 336c17.67 0 32 17.91 32 40h0c0 22.09-14.33 40-32 40H64c-17.67 0-32-17.91-32-40h0c0-22.09 14.33-40 32-40' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M344 336H179.31a8 8 0 00-5.65 2.34l-26.83 26.83a4 4 0 01-5.66 0l-26.83-26.83a8 8 0 00-5.65-2.34H56a24 24 0 01-24-24h0a24 24 0 0124-24h288a24 24 0 0124 24h0a24 24 0 01-24 24zM64 276v-.22c0-55 45-83.78 100-83.78h72c55 0 100 29 100 84v-.22M241 112l7.44 63.97' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 480h139.31a32 32 0 0031.91-29.61L463 112' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M368 112l16-64 47-16' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M224 112h256' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const fastFoodSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fast Food</title><path d='M384 352H184.36l-41 35-41-35H16v24c0 30.59 21.13 55.51 47.26 56 2.43 15.12 8.31 28.78 17.16 39.47C93.51 487.28 112.54 496 134 496h132c21.46 0 40.49-8.72 53.58-24.55 8.85-10.69 14.73-24.35 17.16-39.47 13.88-.25 26.35-7.4 35-18.63A61.26 61.26 0 00384 376zM105 320l38.33 28.19L182 320h202v-8a40.07 40.07 0 00-32-39.2c-.82-29.69-13-54.54-35.51-72C295.67 184.56 267.85 176 236 176h-72c-68.22 0-114.43 38.77-116 96.8A40.07 40.07 0 0016 312v8h89z'/><path d='M463.08 96h-74.59l8.92-35.66L442 45l-10-29-62 20-14.49 60H208v32h18.75l1.86 16H236c39 0 73.66 10.9 100.12 31.52A121.9 121.9 0 01371 218.07a124.16 124.16 0 0110.73 32.65 72 72 0 0127.89 90.9A96 96 0 01416 376c0 22.34-7.6 43.63-21.4 59.95a80 80 0 01-31.83 22.95 109.21 109.21 0 01-18.53 33c-1.18 1.42-2.39 2.81-3.63 4.15H416c16 0 23-8 25-23l36.4-345H496V96z'/></svg>\"\nexport const female = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Female</title><path d='M430 190c0-95.94-78.06-174-174-174S82 94.06 82 190c0 88.49 66.4 161.77 152 172.61V394h-36a22 22 0 000 44h36v36a22 22 0 0044 0v-36h36a22 22 0 000-44h-36v-31.39c85.6-10.84 152-84.12 152-172.61zm-304 0c0-71.68 58.32-130 130-130s130 58.32 130 130-58.32 130-130 130-130-58.32-130-130z'/></svg>\"\nexport const femaleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Female</title><circle cx='256' cy='184' r='152' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 336v144M314 416H198' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const femaleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Female</title><path d='M430 190c0-95.94-78.06-174-174-174S82 94.06 82 190c0 88.49 66.4 161.77 152 172.61V394h-58v44h58v58h44v-58h58v-44h-58v-31.39c85.6-10.84 152-84.12 152-172.61zm-304 0c0-71.68 58.32-130 130-130s130 58.32 130 130-58.32 130-130 130-130-58.32-130-130z'/></svg>\"\nexport const fileTray = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray</title><path d='M479.66 268.7l-32-151.81C441.48 83.77 417.68 64 384 64H128c-16.8 0-31 4.69-42.1 13.94s-18.37 22.31-21.58 38.89l-32 151.87A16.65 16.65 0 0032 272v112a64 64 0 0064 64h320a64 64 0 0064-64V272a16.65 16.65 0 00-.34-3.3zm-384-145.4v-.28c3.55-18.43 13.81-27 32.29-27H384c18.61 0 28.87 8.55 32.27 26.91 0 .13.05.26.07.39l26.93 127.88a4 4 0 01-3.92 4.82H320a15.92 15.92 0 00-16 15.82 48 48 0 11-96 0A15.92 15.92 0 00192 256H72.65a4 4 0 01-3.92-4.82z'/></svg>\"\nexport const fileTrayFull = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray Full</title><path d='M479.66 268.7l-32-151.81C441.48 83.77 417.68 64 384 64H128c-16.8 0-31 4.69-42.1 13.94s-18.37 22.31-21.58 38.89l-32 151.87A16.65 16.65 0 0032 272v112a64 64 0 0064 64h320a64 64 0 0064-64V272a16.65 16.65 0 00-.34-3.3zm-384-145.4v-.28c3.55-18.43 13.81-27 32.29-27H384c18.61 0 28.87 8.55 32.27 26.91 0 .13.05.26.07.39l26.93 127.88a4 4 0 01-3.92 4.82H320a15.92 15.92 0 00-16 15.82 48 48 0 11-96 0A15.92 15.92 0 00192 256H72.65a4 4 0 01-3.92-4.82z'/><path d='M368 160H144a16 16 0 010-32h224a16 16 0 010 32zM384 224H128a16 16 0 010-32h256a16 16 0 010 32z'/></svg>\"\nexport const fileTrayFullOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray Full</title><path d='M384 80H128c-26 0-43 14-48 40L48 272v112a48.14 48.14 0 0048 48h320a48.14 48.14 0 0048-48V272l-32-152c-5-27-23-40-48-40z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M48 272h144M320 272h144M192 272a64 64 0 00128 0M144 144h224M128 208h256' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const fileTrayFullSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray Full</title><path d='M128 128h256v38H128zM112 192h288v38H112z'/><path d='M448 64H64L32 256v192h448V256zm-12 192H320a64 64 0 01-128 0H76l22-150h316z'/></svg>\"\nexport const fileTrayOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray</title><path d='M384 80H128c-26 0-43 14-48 40L48 272v112a48.14 48.14 0 0048 48h320a48.14 48.14 0 0048-48V272l-32-152c-5-27-23-40-48-40z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M48 272h144M320 272h144M192 272a64 64 0 00128 0' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const fileTraySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray</title><path d='M448 64H64L32 256v192h448V256zm-12 192H320a64 64 0 01-128 0H76l22-150h316z'/></svg>\"\nexport const fileTrayStacked = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray Stacked</title><path d='M464 352H320a16 16 0 00-16 16 48 48 0 01-96 0 16 16 0 00-16-16H48a16 16 0 00-16 16v64a64.07 64.07 0 0064 64h320a64.07 64.07 0 0064-64v-64a16 16 0 00-16-16zM479.46 187.88L447.61 68.45C441.27 35.59 417.54 16 384 16H128c-16.8 0-31 4.69-42.1 13.94S67.66 52 64.4 68.4L32.54 187.88A15.9 15.9 0 0032 192v48c0 35.29 28.71 80 64 80h320c35.29 0 64-44.71 64-80v-48a15.9 15.9 0 00-.54-4.12zM440.57 176H320a15.92 15.92 0 00-16 15.82 48 48 0 11-96 0A15.92 15.92 0 00192 176H71.43a2 2 0 01-1.93-2.52L95.71 75c3.55-18.41 13.81-27 32.29-27h256c18.59 0 28.84 8.53 32.25 26.85l26.25 98.63a2 2 0 01-1.93 2.52z'/></svg>\"\nexport const fileTrayStackedOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray Stacked</title><path d='M48 336v96a48.14 48.14 0 0048 48h320a48.14 48.14 0 0048-48v-96' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M48 336h144M320 336h144M192 336a64 64 0 00128 0' class='ionicon-fill-none ionicon-stroke-width'/><path d='M384 32H128c-26 0-43 14-48 40L48 192v96a48.14 48.14 0 0048 48h320a48.14 48.14 0 0048-48v-96L432 72c-5-27-23-40-48-40z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M48 192h144M320 192h144M192 192a64 64 0 00128 0' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const fileTrayStackedSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>File Tray Stacked</title><path d='M448 16H64L32 176v144h448V176zm-12 160H320a64 64 0 01-128 0H76L98 58h316zM320 352a64 64 0 01-128 0H32v144h448V352z'/></svg>\"\nexport const film = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Film</title><path d='M436 80H76a44.05 44.05 0 00-44 44v264a44.05 44.05 0 0044 44h360a44.05 44.05 0 0044-44V124a44.05 44.05 0 00-44-44zM112 388a12 12 0 01-12 12H76a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12zm0-80a12 12 0 01-12 12H76a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12zm0-80a12 12 0 01-12 12H76a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12zm0-80a12 12 0 01-12 12H76a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12zm241.68 124H158.32a16 16 0 010-32h195.36a16 16 0 110 32zM448 388a12 12 0 01-12 12h-24a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12zm0-80a12 12 0 01-12 12h-24a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12zm0-80a12 12 0 01-12 12h-24a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12zm0-80a12 12 0 01-12 12h-24a12 12 0 01-12-12v-24a12 12 0 0112-12h24a12 12 0 0112 12z'/></svg>\"\nexport const filmOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Film</title><rect x='48' y='96' width='416' height='320' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='384' y='336' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='384' y='256' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='384' y='176' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='384' y='96' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='48' y='336' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='48' y='256' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='48' y='176' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='48' y='96' width='80' height='80' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='128' y='96' width='256' height='160' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='128' y='256' width='256' height='160' rx='28' ry='28' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const filmSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Film</title><path d='M480 80H32v352h448zM112 352v48H64v-48zm0-80v48H64v-48zm0-80v48H64v-48zm0-80v48H64v-48zm256 160H144v-32h224zm80 80v48h-48v-48zm0-80v48h-48v-48zm0-80v48h-48v-48zm0-80v48h-48v-48z'/></svg>\"\nexport const filter = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Filter</title><path d='M472 168H40a24 24 0 010-48h432a24 24 0 010 48zM392 280H120a24 24 0 010-48h272a24 24 0 010 48zM296 392h-80a24 24 0 010-48h80a24 24 0 010 48z'/></svg>\"\nexport const filterCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Filter Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm32 304h-64a16 16 0 010-32h64a16 16 0 010 32zm48-64H176a16 16 0 010-32h160a16 16 0 010 32zm32-64H144a16 16 0 010-32h224a16 16 0 010 32z'/></svg>\"\nexport const filterCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Filter Circle</title><path stroke-miterlimit='10' d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M144 208h224M176 272h160M224 336h64' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const filterCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Filter Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm48 304h-96v-32h96zm48-64H160v-32h192zm32-64H128v-32h256z'/></svg>\"\nexport const filterOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Filter</title><path stroke-linecap='round' stroke-linejoin='round' d='M32 144h448M112 256h288M208 368h96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const filterSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Filter</title><path d='M16 120h480v48H16zM96 232h320v48H96zM192 344h128v48H192z'/></svg>\"\nexport const fingerPrint = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Finger Print</title><path d='M63.28 202a15.29 15.29 0 01-7.7-2 14.84 14.84 0 01-5.52-20.46C69.34 147.36 128 72.25 256 72.25c55.47 0 104.12 14.57 144.53 43.29 33.26 23.57 51.9 50.25 60.78 63.1a14.79 14.79 0 01-4 20.79 15.52 15.52 0 01-21.24-4C420 172.32 371 102 256 102c-112.25 0-163 64.71-179.53 92.46A15 15 0 0163.28 202z'/><path d='M320.49 496a15.31 15.31 0 01-3.79-.43c-92.85-23-127.52-115.82-128.93-119.68l-.22-.85c-.76-2.68-19.39-66.33 9.21-103.61 13.11-17 33.05-25.72 59.38-25.72 24.48 0 42.14 7.61 54.28 23.36 10 12.86 14 28.72 17.87 44 8.13 31.82 14 48.53 47.79 50.25 14.84.75 24.59-7.93 30.12-15.32 14.95-20.15 17.55-53 6.28-82C398 228.57 346.61 158 256 158c-38.68 0-74.22 12.43-102.72 35.79-23.59 19.35-42.28 46.67-51.28 74.75-16.69 52.28 5.2 134.46 5.41 135.21A14.83 14.83 0 0196.54 422a15.39 15.39 0 01-18.74-10.6c-1-3.75-24.38-91.4-5.1-151.82 21-65.47 85.81-131.47 183.33-131.47 45.07 0 87.65 15.32 123.19 44.25 27.52 22.5 50 52.72 61.76 82.93 14.95 38.57 10.94 81.86-10.19 110.14-14.08 18.86-34.13 28.72-56.34 27.65-57.86-2.9-68.26-43.29-75.84-72.75-7.8-30.22-12.79-44.79-42.58-44.79-16.36 0-27.85 4.5-35 13.82-9.75 12.75-10.51 32.68-9.43 47.14a152.44 152.44 0 005.1 29.79c2.38 6 33.37 82 107.59 100.39a14.88 14.88 0 0111 18.11 15.36 15.36 0 01-14.8 11.21z'/><path d='M201.31 489.14a15.5 15.5 0 01-11.16-4.71c-37.16-39-58.18-82.61-66.09-137.14V347c-4.44-36.1 2.06-87.21 33.91-122.35 23.51-25.93 56.56-39.11 98.06-39.11 49.08 0 87.65 22.82 111.7 65.89 17.45 31.29 20.91 62.47 21 63.75a15.07 15.07 0 01-13.65 16.4 15.26 15.26 0 01-16.79-13.29A154 154 0 00340.43 265c-18.64-32.89-47-49.61-84.51-49.61-32.4 0-57.75 9.75-75.19 29-25.14 27.75-30 70.5-26.55 98.78 6.93 48.22 25.46 86.58 58.18 120.86a14.7 14.7 0 01-.76 21.11 15.44 15.44 0 01-10.29 4z'/><path d='M372.5 446.18c-32.5 0-60.13-9-82.24-26.89-44.42-35.79-49.4-94.08-49.62-96.54a15.27 15.27 0 0130.45-2.36c.11.86 4.55 48.54 38.79 76 20.26 16.18 47.34 22.6 80.71 18.85a15.2 15.2 0 0116.91 13.18 14.92 14.92 0 01-13.44 16.5 187 187 0 01-21.56 1.26zM398.18 48.79C385.5 40.54 340.54 16 256 16c-88.74 0-133.81 27.11-143.78 34a11.59 11.59 0 00-1.84 1.4.36.36 0 01-.22.1 14.87 14.87 0 00-5.09 11.15 15.06 15.06 0 0015.31 14.85 15.56 15.56 0 008.88-2.79c.43-.32 39.22-28.82 126.77-28.82S382.58 74.29 383 74.5a15.25 15.25 0 009.21 3 15.06 15.06 0 0015.29-14.89 14.9 14.9 0 00-9.32-13.82z'/></svg>\"\nexport const fingerPrintOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Finger Print</title><path d='M390.42 75.28a10.45 10.45 0 01-5.32-1.44C340.72 50.08 302.35 40 256.35 40c-45.77 0-89.23 11.28-128.76 33.84C122 77 115.11 74.8 111.87 69a12.4 12.4 0 014.63-16.32A281.81 281.81 0 01256.35 16c49.23 0 92.23 11.28 139.39 36.48a12 12 0 014.85 16.08 11.3 11.3 0 01-10.17 6.72zm-330.79 126a11.73 11.73 0 01-6.7-2.16 12.26 12.26 0 01-2.78-16.8c22.89-33.6 52-60 86.69-78.48 72.58-38.84 165.51-39.12 238.32-.24 34.68 18.48 63.8 44.64 86.69 78a12.29 12.29 0 01-2.78 16.8 11.26 11.26 0 01-16.18-2.88c-20.8-30.24-47.15-54-78.36-70.56-66.34-35.28-151.18-35.28-217.29.24-31.44 16.8-57.79 40.8-78.59 71a10 10 0 01-9.02 5.08zM204.1 491a10.66 10.66 0 01-8.09-3.6C175.9 466.48 165 453 149.55 424c-16-29.52-24.27-65.52-24.27-104.16 0-71.28 58.71-129.36 130.84-129.36S387 248.56 387 319.84a11.56 11.56 0 11-23.11 0c0-58.08-48.32-105.36-107.72-105.36S148.4 261.76 148.4 319.84c0 34.56 7.39 66.48 21.49 92.4 14.8 27.6 25 39.36 42.77 58.08a12.67 12.67 0 010 17 12.44 12.44 0 01-8.56 3.68zm165.75-44.4c-27.51 0-51.78-7.2-71.66-21.36a129.1 129.1 0 01-55-105.36 11.57 11.57 0 1123.12 0 104.28 104.28 0 0044.84 85.44c16.41 11.52 35.6 17 58.72 17a147.41 147.41 0 0024-2.4c6.24-1.2 12.25 3.12 13.4 9.84a11.92 11.92 0 01-9.47 13.92 152.28 152.28 0 01-27.95 2.88zM323.38 496a13 13 0 01-3-.48c-36.76-10.56-60.8-24.72-86-50.4-32.37-33.36-50.16-77.76-50.16-125.28 0-38.88 31.9-70.56 71.19-70.56s71.2 31.68 71.2 70.56c0 25.68 21.5 46.56 48.08 46.56s48.08-20.88 48.08-46.56c0-90.48-75.13-163.92-167.59-163.92-65.65 0-125.75 37.92-152.79 96.72-9 19.44-13.64 42.24-13.64 67.2 0 18.72 1.61 48.24 15.48 86.64 2.32 6.24-.69 13.2-6.7 15.36a11.34 11.34 0 01-14.79-7 276.39 276.39 0 01-16.88-95c0-28.8 5.32-55 15.72-77.76 30.75-67 98.94-110.4 173.6-110.4 105.18 0 190.71 84.24 190.71 187.92 0 38.88-31.9 70.56-71.2 70.56s-71.2-31.68-71.2-70.56c.01-25.68-21.49-46.6-48.07-46.6s-48.08 20.88-48.08 46.56c0 41 15.26 79.44 43.23 108.24 22 22.56 43 35 75.59 44.4 6.24 1.68 9.71 8.4 8.09 14.64a11.39 11.39 0 01-10.87 9.16z'/></svg>\"\nexport const fingerPrintSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Finger Print</title><path d='M56.79 200.58l12.36 7.5 7.35-13.58C93.07 166.75 143.78 102 256 102c115 0 164 70.32 180.1 93.46l8.16 12.7L469.88 192l-8.54-13.36c-8.88-12.85-27.52-39.53-60.78-63.1C360.15 86.82 311.5 72.25 256 72.25c-128.07 0-186.69 75.11-206 107.25L42.63 192 54 198.86a14.09 14.09 0 001.63 1.1 12.57 12.57 0 001.16.62z'/><path d='M379.22 172.32c-35.54-28.93-78.12-44.25-123.22-44.25-97.52 0-162.31 66-183.33 131.47C53.42 320 76.82 407.61 77.8 411.36l4.38 13.81 29.93-6.43-4.74-15c-.21-.75-22.1-82.93-5.41-135.21 9-28.08 27.73-55.4 51.35-74.79C181.81 170.39 217.35 158 256 158c90.58 0 141.93 70.61 156.45 108.11 11.27 28.93 8.67 61.82-6.28 82-5.53 7.39-15.28 16.07-30.12 15.32-33.81-1.72-39.66-18.43-47.79-50.25-3.9-15.32-7.9-31.18-17.87-44-12.14-15.75-29.8-23.36-54.28-23.36-26.33 0-46.27 8.68-59.38 25.72-28.6 37.28-10 100.93-9.21 103.61l.22.85c1.41 3.86 36.08 96.65 128.93 119.68l14.77 3.21 8.09-28.71-15.27-3.43c-74.22-18.43-105.21-94.39-107.59-100.39a152.44 152.44 0 01-5.1-29.79c-1.08-14.46-.32-34.39 9.43-47.14 7.15-9.32 18.64-13.82 35-13.82 29.79 0 34.78 14.57 42.58 44.79 7.58 29.46 18 69.85 75.84 72.75 22.21 1.07 42.26-8.79 56.34-27.65 21.13-28.28 25.14-71.57 10.19-110.14-11.68-30.36-34.21-60.54-61.73-83.04z'/><path d='M154.18 343.21c-3.47-28.28 1.41-71 26.55-98.78 17.44-19.29 42.79-29 75.19-29 37.49 0 65.87 16.72 84.51 49.61a154 154 0 0117.88 53.25l1.43 14.69 30-2.2a112.63 112.63 0 00-1-15.6c-.11-1.28-3.57-32.46-21-63.75-24.06-43.11-62.63-65.93-111.74-65.93-41.5 0-74.55 13.18-98.06 39.11-31.85 35.14-38.35 86.25-33.91 122.35v.33c7.97 54.53 28.97 98.14 66.12 137.14l11.6 11.22 20.95-21.79-10.34-9.79c-32.72-34.28-51.25-72.64-58.18-120.86zM132.47 72.66c11.08-6.72 50.27-26.77 123.53-26.77 87.54 0 126.44 28.72 126.87 28.93l13.9 8.86L413 58.47l-13.22-8.56c-.52-.38-1.06-.76-1.6-1.12C385.5 40.54 340.54 16 256 16c-87.71 0-132.75 26.48-143.41 33.71L99 58.52l16.2 25.21z'/><path d='M390.59 415.21c-33.37 3.75-60.45-2.67-80.71-18.85-34.24-27.43-38.68-75.11-38.79-76l-1.23-14.88-30.53 2.23 1.31 15c.22 2.46 5.2 60.75 49.62 96.54 22.11 17.89 49.74 26.89 82.24 26.89a187 187 0 0021.56-1.29l16.59-2.09-6.1-29.71z'/></svg>\"\nexport const fish = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fish</title><path d='M512 256c0-16.54-14.27-46.76-45.61-74a207.06 207.06 0 00-60.28-36.12 3.15 3.15 0 00-3.93 1.56c-.15.29-.3.57-.47.86l-9.59 15.9a183.24 183.24 0 00.07 183.78l.23.39 8.74 16a4 4 0 004.94 1.82C479.63 337.42 512 281.49 512 256zm-93.92-.14a16 16 0 1113.79-13.79 16 16 0 01-13.79 13.79z'/><path d='M335.45 256a214.8 214.8 0 0129.08-108l.12-.21 4.62-7.67a4 4 0 00-2.59-6 284.29 284.29 0 00-39.26-5.39 7.94 7.94 0 01-4.29-1.6c-19.28-14.66-57.5-40.3-96.46-46.89a16 16 0 00-18 20.18l10.62 37.17a4 4 0 01-2.42 4.84c-36.85 13.69-68.59 38.75-91.74 57.85a8 8 0 01-10.06.06q-4.72-3.75-9.69-7.39c-39.64-28.95-86.21-32.76-88.17-32.9a16 16 0 00-16.83 19.4c.42 1.93 9.19 40.69 31.7 71.61a8.09 8.09 0 010 9.55C9.57 291.52.8 330.29.38 332.22a16 16 0 0016.83 19.4c2-.14 48.53-4 88.12-32.88q4.85-3.56 9.47-7.22a8 8 0 0110.06.07c23.25 19.19 55.05 44.28 92 58a4 4 0 012.42 4.83l-10.66 37.18a16 16 0 0018 20.18c17.16-2.9 51.88-12.86 96.05-46.83a8.15 8.15 0 014.36-1.65 287.36 287.36 0 0039.22-5.3 4 4 0 002.69-5.83l-4.51-8.29A214.81 214.81 0 01335.45 256z'/></svg>\"\nexport const fishOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fish</title><path stroke-linejoin='round' d='M240 152c-50.71 12.21-94.15 52.31-120.3 73.43a261.14 261.14 0 00-23.81-19.58C59.53 179.29 16 176 16 176s11.37 51.53 41.36 79.83C27.37 284.14 16 335.67 16 335.67s43.53-3.29 79.89-29.85a259.18 259.18 0 0023.61-19.41c26.1 21.14 69.74 61.34 120.5 73.59l-16 56c39.43-6.67 78.86-35.51 94.72-48.25C448 362 496 279 496 256c0-22-48-106-176.89-111.73C303.52 131.78 263.76 102.72 224 96z' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='416' cy='239.99' r='16'/><path stroke-linecap='round' stroke-miterlimit='20' d='M378.37 356a199.22 199.22 0 010-200' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const fishSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fish</title><path d='M335.45 256a214.83 214.83 0 0129.08-108l7.62-13.26a280.69 280.69 0 00-48.64-7.15c-21.94-16.9-54.64-36.95-92.34-43.33L208 80l13.37 61.86c-41.67 14.14-78.43 42.86-102.76 62.62q-7.06-5.91-14.78-11.55c-39.71-29-82.6-31.8-84.4-31.9L0 160l2.67 19.31c.29 2 6.79 44.73 31.65 76.52C9.46 287.63 3 330.33 2.67 332.36L0 352l19.43-1.36c1.8-.1 44.69-2.89 84.4-31.9q7.58-5.53 14.56-11.37c24.37 19.83 61.14 48.6 102.86 62.74L208 432l23.17-4.22c37.49-6.34 70.08-26.4 92-43.32a284.27 284.27 0 0049.32-7.23l-7.91-13.18A214.92 214.92 0 01335.45 256z'/><path d='M499.59 221.75c-5.85-9.88-16.54-24.9-34.19-40.28a209.82 209.82 0 00-62-37L392.23 164a183.22 183.22 0 00-.09 183.87l11.75 19.57a209.26 209.26 0 0061.42-36.49C497.05 303.47 512 269 512 256c0-12.31-8-26.74-12.41-34.25zM416 256a16 16 0 1116-16 16 16 0 01-16 16z'/></svg>\"\nexport const fitness = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fitness</title><path d='M193.69 152.84a16 16 0 0129.64 2.56l36.4 121.36 30-59.92a16 16 0 0128.62 0L345.89 272h96.76A213.08 213.08 0 00464 176.65C463.37 114.54 413.54 64 352.92 64c-48.09 0-80 29.54-96.92 51-16.88-21.49-48.83-51-96.92-51C98.46 64 48.63 114.54 48 176.65A211.13 211.13 0 0056.93 240h93.18z'/><path d='M321.69 295.16L304 259.78l-33.69 67.38A16 16 0 01256 336q-.67 0-1.38-.06a16 16 0 01-14-11.34l-36.4-121.36-30 59.92A16 16 0 01160 272H69.35q14 29.29 37.27 57.66c18.77 22.88 52.8 59.46 131.39 112.81a31.84 31.84 0 0036 0c78.59-53.35 112.62-89.93 131.39-112.81a316.79 316.79 0 0019-25.66H336a16 16 0 01-14.31-8.84zM464 272h-21.35a260.11 260.11 0 01-18.25 32H464a16 16 0 000-32zM48 240a16 16 0 000 32h21.35a225.22 225.22 0 01-12.42-32z'/></svg>\"\nexport const fitnessOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fitness</title><path d='M352.92 80C288 80 256 144 256 144s-32-64-96.92-64c-52.76 0-94.54 44.14-95.08 96.81-1.1 109.33 86.73 187.08 183 252.42a16 16 0 0018 0c96.26-65.34 184.09-143.09 183-252.42-.54-52.67-42.32-96.81-95.08-96.81z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M48 256h112l48-96 48 160 48-96 32 64h128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const fitnessSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Fitness</title><path d='M480 272h-37.34a261.41 261.41 0 01-18.25 32H480zM32 240v32h37.34a225.1 225.1 0 01-12.4-32z'/><path d='M304 259.78l-51.73 103.46-48-160L169.89 272H69.34c10 20.92 23.5 41.41 40.63 61.68 40.12 47.46 94.25 79.75 137 108.32l9 6 9-6c42.78-28.57 96.91-60.86 137-108.32A322.78 322.78 0 00424.41 304h-98.3z'/><path d='M211.73 116.76l48 160L304 188.22 345.89 272h96.77A213.13 213.13 0 00464 176.65C463.37 114.54 413.54 64 352.92 64c-48.11 0-80.1 28-96.92 48.21C239.18 92 207.19 64 159.08 64 98.46 64 48.63 114.54 48 176.65A211.23 211.23 0 0056.94 240h93.17z'/></svg>\"\nexport const flag = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flag</title><path d='M80 480a16 16 0 01-16-16V68.13a24 24 0 0111.9-20.72C88 40.38 112.38 32 160 32c37.21 0 78.83 14.71 115.55 27.68C305.12 70.13 333.05 80 352 80a183.84 183.84 0 0071-14.5 18 18 0 0125 16.58v219.36a20 20 0 01-12 18.31c-8.71 3.81-40.51 16.25-84 16.25-24.14 0-54.38-7.14-86.39-14.71C229.63 312.79 192.43 304 160 304c-36.87 0-55.74 5.58-64 9.11V464a16 16 0 01-16 16z'/></svg>\"\nexport const flagOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flag</title><path d='M80 464V68.14a8 8 0 014-6.9C91.81 56.66 112.92 48 160 48c64 0 145 48 192 48a199.53 199.53 0 0077.23-15.77 2 2 0 012.77 1.85v219.36a4 4 0 01-2.39 3.65C421.37 308.7 392.33 320 352 320c-48 0-128-32-192-32s-80 16-80 16' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const flagSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flag</title><path d='M102 480H64V57.37l4.69-4.68C72.14 49.23 92.78 32 160 32c37.21 0 78.83 14.71 115.55 27.68C305.12 70.13 333.05 80 352 80c42.83 0 72.72-14.25 73-14.4l23-11.14v259.43l-8.84 4.42C437.71 319 403.19 336 352 336c-24.14 0-54.38-7.14-86.39-14.71C229.63 312.79 192.43 304 160 304c-36.87 0-49.74 5.58-58 9.11z'/></svg>\"\nexport const flame = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flame</title><path d='M394.23 197.56a300.43 300.43 0 00-53.37-90C301.2 61.65 249.05 32 208 32a16 16 0 00-15.48 20c13.87 53-14.88 97.07-45.31 143.72C122 234.36 96 274.27 96 320c0 88.22 71.78 160 160 160s160-71.78 160-160c0-43.3-7.32-84.49-21.77-122.44zm-105.9 221.13C278 429.69 265.05 432 256 432s-22-2.31-32.33-13.31S208 390.24 208 368c0-25.14 8.82-44.28 17.34-62.78 4.95-10.74 10-21.67 13-33.37a8 8 0 0112.49-4.51A126.48 126.48 0 01275 292c18.17 24 29 52.42 29 76 0 22.24-5.42 39.77-15.67 50.69z'/></svg>\"\nexport const flameOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flame</title><path d='M112 320c0-93 124-165 96-272 66 0 192 96 192 272a144 144 0 01-288 0z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M320 368c0 57.71-32 80-64 80s-64-22.29-64-80 40-86 32-128c42 0 96 70.29 96 128z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const flameSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flame</title><path d='M394.24 197.56a300.67 300.67 0 00-53.38-90C301.2 61.65 240 32 192 32c19 70-14.36 117.12-44.79 163.77C122 234.36 96 274.27 96 320c0 88.22 71.78 160 160 160s160-71.78 160-160c0-43.3-7.32-84.49-21.76-122.44zM288.33 418.69C278 429.69 265.05 432 256 432s-22-2.31-32.33-13.31S208 390.24 208 368c0-25.14 8.82-44.28 17.34-62.78 6.48-14.07 14.66-27.22 15.11-44.49 11.3 5.88 23.67 16.91 34.54 31.28 18.17 24 29 52.42 29 76 .01 22.23-5.41 39.76-15.66 50.68z'/></svg>\"\nexport const flash = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flash</title><path d='M194.82 496a18.36 18.36 0 01-18.1-21.53v-.11L204.83 320H96a16 16 0 01-12.44-26.06L302.73 23a18.45 18.45 0 0132.8 13.71c0 .3-.08.59-.13.89L307.19 192H416a16 16 0 0112.44 26.06L209.24 489a18.45 18.45 0 01-14.42 7z'/></svg>\"\nexport const flashOff = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flash Off</title><path d='M432 448a15.92 15.92 0 01-11.31-4.69l-352-352a16 16 0 0122.62-22.62l352 352A16 16 0 01432 448zM431.5 204a16 16 0 00-15.5-12H307.19L335.4 37.63c.05-.3.1-.59.13-.89A18.45 18.45 0 00302.73 23l-92.58 114.46a4 4 0 00.29 5.35l151 151a4 4 0 005.94-.31l60.8-75.16A16.37 16.37 0 00431.5 204zM301.57 369.19l-151-151a4 4 0 00-5.93.31L83.8 293.64A16.37 16.37 0 0080.5 308 16 16 0 0096 320h108.83l-28.09 154.36v.11a18.37 18.37 0 0032.5 14.53l92.61-114.46a4 4 0 00-.28-5.35z'/></svg>\"\nexport const flashOffOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flash Off</title><path d='M432 448a15.92 15.92 0 01-11.31-4.69l-352-352a16 16 0 0122.62-22.62l352 352A16 16 0 01432 448zM294.34 84.28l-22.08 120.84a16 16 0 006.17 15.71 16.49 16.49 0 009.93 3.17h94.12l-38.37 47.42a4 4 0 00.28 5.34l17.07 17.07a4 4 0 005.94-.31l60.8-75.16a16.37 16.37 0 003.3-14.36 16 16 0 00-15.5-12H307.19L335.4 37.63c.05-.3.1-.59.13-.89A18.45 18.45 0 00302.73 23l-92.58 114.46a4 4 0 00.28 5.35l17.07 17.06a4 4 0 005.94-.31zM217.78 427.57l22-120.71a16 16 0 00-6.19-15.7 16.54 16.54 0 00-9.92-3.16h-94.1l38.36-47.42a4 4 0 00-.28-5.34l-17.07-17.07a4 4 0 00-5.93.31L83.8 293.64A16.37 16.37 0 0080.5 308 16 16 0 0096 320h108.83l-28.09 154.36v.11a18.37 18.37 0 0032.5 14.53l92.61-114.46a4 4 0 00-.28-5.35l-17.07-17.06a4 4 0 00-5.94.31z'/></svg>\"\nexport const flashOffSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flash Off</title><path d='M63.998 86.004l21.998-21.998L448 426.01l-21.998 21.998zM80 304h144l-32 192 108.18-129.82-148.36-148.36L80 304zM432 208H288l32-192-108.18 129.82 148.36 148.36L432 208z'/></svg>\"\nexport const flashOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flash</title><path d='M315.27 33L96 304h128l-31.51 173.23a2.36 2.36 0 002.33 2.77h0a2.36 2.36 0 001.89-.95L416 208H288l31.66-173.25a2.45 2.45 0 00-2.44-2.75h0a2.42 2.42 0 00-1.95 1z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const flashSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flash</title><path d='M432 208H288l32-192L80 304h144l-32 192z'/></svg>\"\nexport const flashlight = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flashlight</title><path d='M462 216c9.35-9.35 15.14-19.09 17.19-28.95 2.7-12.95-1.29-25.55-11.22-35.48L360.43 44.05C346.29 29.92 322 24.07 296 50l-2 2a8 8 0 000 11.32L448.64 218a8 8 0 0011.36 0zM250.14 153.08l-.16 2.34c-.53 7.18-6.88 19.15-13.88 26.14L47.27 370.36c-11.12 11.11-16.46 25.57-15.05 40.7C33.49 424.58 40.16 438 51 448.83L63.17 461c12.61 12.6 27.78 19 42.49 19a50.4 50.4 0 0036-15.24l188.84-188.8c7.07-7.07 18.84-13.3 26.17-13.87 17.48-1.32 43.57-3.28 67.79-15.65a4 4 0 001-6.37L271.69 86.31a4 4 0 00-6.39 1c-12.12 22.99-13.82 46.91-15.16 65.77zm-9.95 146.83a20 20 0 110-25.25 20 20 0 010 25.25z'/></svg>\"\nexport const flashlightOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flashlight</title><path d='M456.64 162.86L349.12 55.36c-13.15-13.14-28.68-7.17-41.82 6l-11.95 12c-26.13 26.13-27.62 58.38-29.42 83.31-.89 12.24-9.78 27.55-18.51 36.28L58.58 381.67c-16.35 16.33-12.69 39.42 3.73 55.84l12.17 12.17c16.36 16.35 39.43 20.16 55.86 3.74l188.83-188.8c8.74-8.74 24-17.55 36.29-18.52 24.87-1.86 58.62-4.85 83.26-29.49l11.94-11.94c13.15-13.14 19.12-28.67 5.98-41.81z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='224.68' cy='287.28' r='20'/><path stroke-linecap='round' stroke-miterlimit='10' d='M289 81l142 142' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const flashlightSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flashlight</title><path d='M330 16l-42.68 42.7L453.3 224.68 496 182 330 16z'/><ellipse cx='224.68' cy='287.3' rx='20.03' ry='19.96' class='ionicon-fill-none'/><path d='M429.21 243.85L268 82.59 249.65 168 16 402l94 94 234.23-233.8zm-189 56.07a20 20 0 110-25.25 20 20 0 01-.02 25.25z'/></svg>\"\nexport const flask = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flask</title><path d='M452.32 365L327.4 167.12a48.07 48.07 0 01-7.4-25.64V64h15.56c8.61 0 16-6.62 16.43-15.23A16 16 0 00336 32H176.45c-8.61 0-16 6.62-16.43 15.23A16 16 0 00176 64h16v77.48a47.92 47.92 0 01-7.41 25.63L59.68 365a74 74 0 00-2.5 75.84C70.44 465.19 96.36 480 124.13 480h263.74c27.77 0 53.69-14.81 66.95-39.21a74 74 0 00-2.5-75.79zM211.66 184.2A79.94 79.94 0 00224 141.48V68a4 4 0 014-4h56a4 4 0 014 4v73.48a79.94 79.94 0 0012.35 42.72l57.8 91.53a8 8 0 01-6.78 12.27H160.63a8 8 0 01-6.77-12.27z'/></svg>\"\nexport const flaskOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flask</title><path stroke-linecap='round' stroke-miterlimit='10' d='M176 48h160M118 304h276M208 48v93.48a64.09 64.09 0 01-9.88 34.18L73.21 373.49C48.4 412.78 76.63 464 123.08 464h265.84c46.45 0 74.68-51.22 49.87-90.51L313.87 175.66a64.09 64.09 0 01-9.87-34.18V48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const flaskSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flask</title><path d='M469.11 382.76L325 153.92V74h32V32H155v42h32v79.92L42.89 382.76c-13 20.64-14.78 43.73-3 65.1S71.59 480 96 480h320c24.41 0 44.32-10.76 56.1-32.14s10.04-44.46-2.99-65.1zM224.39 173.39a29.76 29.76 0 004.62-16V74h54v84.59a25.85 25.85 0 004 13.82L356.82 283H155.18z'/></svg>\"\nexport const flower = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flower</title><circle cx='256' cy='256' r='48'/><path d='M475.93 303.91a67.49 67.49 0 00-44.34-115.53 5.2 5.2 0 01-4.58-3.21 5.21 5.21 0 011-5.51A67.83 67.83 0 00378 66.33h-.25A67.13 67.13 0 00332.35 84a5.21 5.21 0 01-5.52 1 5.23 5.23 0 01-3.22-4.58 67.68 67.68 0 00-135.23 0 5.2 5.2 0 01-3.21 4.58 5.21 5.21 0 01-5.52-1 67.11 67.11 0 00-45.44-17.69H134a67.91 67.91 0 00-50 113.34 5.21 5.21 0 011 5.51 5.2 5.2 0 01-4.58 3.21 67.71 67.71 0 000 135.23 5.23 5.23 0 014.58 3.23 5.22 5.22 0 01-1 5.52 67.54 67.54 0 0050.08 113h.25A67.38 67.38 0 00179.65 428a5.21 5.21 0 015.51-1 5.2 5.2 0 013.21 4.58 67.71 67.71 0 00135.23 0 5.23 5.23 0 013.22-4.58 5.21 5.21 0 015.51 1 67.38 67.38 0 0045.29 17.42h.25a67.48 67.48 0 0050.08-113 5.22 5.22 0 01-1-5.52 5.23 5.23 0 014.58-3.22 67.31 67.31 0 0044.4-19.77zM256 336a80 80 0 1180-80 80.09 80.09 0 01-80 80z'/></svg>\"\nexport const flowerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flower</title><path d='M215.08 156.92c-4.89-24-10.77-56.27-10.77-73.23A51.36 51.36 0 01256 32h0c28.55 0 51.69 23.69 51.69 51.69 0 16.5-5.85 48.95-10.77 73.23M215.08 355.08c-4.91 24.06-10.77 56.16-10.77 73.23A51.36 51.36 0 00256 480h0c28.55 0 51.69-23.69 51.69-51.69 0-16.54-5.85-48.93-10.77-73.23M355.08 215.08c24.06-4.91 56.16-10.77 73.23-10.77A51.36 51.36 0 01480 256h0c0 28.55-23.69 51.69-51.69 51.69-16.5 0-48.95-5.85-73.23-10.77M156.92 215.07c-24-4.89-56.25-10.76-73.23-10.76A51.36 51.36 0 0032 256h0c0 28.55 23.69 51.69 51.69 51.69 16.5 0 48.95-5.85 73.23-10.77' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M296.92 156.92c13.55-20.48 32.3-47.25 44.37-59.31a51.35 51.35 0 0173.1 0h0c20.19 20.19 19.8 53.3 0 73.1-11.66 11.67-38.67 30.67-59.31 44.37M156.92 296.92c-20.48 13.55-47.25 32.3-59.31 44.37a51.35 51.35 0 000 73.1h0c20.19 20.19 53.3 19.8 73.1 0 11.67-11.66 30.67-38.67 44.37-59.31M355.08 296.92c20.48 13.55 47.25 32.3 59.31 44.37a51.35 51.35 0 010 73.1h0c-20.19 20.19-53.3 19.8-73.1 0-11.69-11.69-30.66-38.65-44.37-59.31M215.08 156.92c-13.53-20.43-32.38-47.32-44.37-59.31a51.35 51.35 0 00-73.1 0h0c-20.19 20.19-19.8 53.3 0 73.1 11.61 11.61 38.7 30.68 59.31 44.37' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='64' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const flowerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Flower</title><circle cx='256' cy='256' r='43'/><path d='M475.93 303.91a67.49 67.49 0 00-47.62-115.6c-2.88 0-6.2.14-9.93.43 2.75-2.36 5.23-4.62 7.33-6.71A67.83 67.83 0 00378 66.33h-.25a67.27 67.27 0 00-47.82 20c-2.11 2.11-4.37 4.59-6.72 7.33.29-3.75.44-7.07.44-9.93a67.69 67.69 0 10-135.38 0c0 2.87.15 6.19.44 9.93-2.36-2.74-4.62-5.22-6.72-7.33a67.27 67.27 0 00-47.82-20H134A67.9 67.9 0 0086.29 182c2.1 2.09 4.58 4.35 7.34 6.72-3.74-.29-7.06-.44-9.94-.44a67.69 67.69 0 000 135.38c2.86 0 6.18-.15 9.93-.44-2.74 2.35-5.22 4.61-7.33 6.72a67.55 67.55 0 0047.82 115.42h.25A67.32 67.32 0 00182 425.71c2.09-2.1 4.35-4.58 6.71-7.33-.28 3.73-.43 7.05-.43 9.93a67.69 67.69 0 00135.38 0c0-2.87-.15-6.19-.44-9.94 2.36 2.75 4.62 5.24 6.72 7.34a67.32 67.32 0 0047.67 19.68h.25A67.5 67.5 0 00425.71 330c-2.11-2.11-4.59-4.37-7.33-6.72 3.75.29 7.07.44 9.93.44a67.27 67.27 0 0047.62-19.81zM256 341a85 85 0 1185-85 85.1 85.1 0 01-85 85z'/></svg>\"\nexport const folder = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Folder</title><path d='M496 152a56 56 0 00-56-56H220.11a23.89 23.89 0 01-13.31-4L179 73.41A55.77 55.77 0 00147.89 64H72a56 56 0 00-56 56v48a8 8 0 008 8h464a8 8 0 008-8zM16 392a56 56 0 0056 56h368a56 56 0 0056-56V216a8 8 0 00-8-8H24a8 8 0 00-8 8z'/></svg>\"\nexport const folderOpen = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Folder Open</title><path d='M408 96H252.11a23.89 23.89 0 01-13.31-4L211 73.41A55.77 55.77 0 00179.89 64H104a56.06 56.06 0 00-56 56v24h416c0-30.88-25.12-48-56-48zM423.75 448H88.25a56 56 0 01-55.93-55.15L16.18 228.11v-.28A48 48 0 0164 176h384.1a48 48 0 0147.8 51.83v.28l-16.22 164.74A56 56 0 01423.75 448zm56.15-221.45z'/></svg>\"\nexport const folderOpenOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Folder Open</title><path d='M64 192v-72a40 40 0 0140-40h75.89a40 40 0 0122.19 6.72l27.84 18.56a40 40 0 0022.19 6.72H408a40 40 0 0140 40v40' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M479.9 226.55L463.68 392a40 40 0 01-39.93 40H88.25a40 40 0 01-39.93-40L32.1 226.55A32 32 0 0164 192h384.1a32 32 0 0131.8 34.55z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const folderOpenSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Folder Open</title><path d='M16.08 189.4l28.58 233.87A28 28 0 0072.52 448h367a28 28 0 0027.86-24.73l28.54-233.87A12 12 0 00484 176H28a12 12 0 00-11.92 13.4zM464 124a28 28 0 00-28-28H244.84l-48-32H76a28 28 0 00-28 28v52h416z'/></svg>\"\nexport const folderOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Folder</title><path d='M440 432H72a40 40 0 01-40-40V120a40 40 0 0140-40h75.89a40 40 0 0122.19 6.72l27.84 18.56a40 40 0 0022.19 6.72H440a40 40 0 0140 40v240a40 40 0 01-40 40zM32 192h448' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const folderSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Folder</title><path d='M16 420a28 28 0 0028 28h424a28 28 0 0028-28V208H16zM496 124a28 28 0 00-28-28H212.84l-48-32H44a28 28 0 00-28 28v84h480z'/></svg>\"\nexport const football = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Football</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm143 304h-45.22a8 8 0 01-6.91-4l-16.14-27.68a8 8 0 01-.86-6l14.86-59.92a8 8 0 014.65-5.45l28.1-11.9a8 8 0 018.34 1.3l41.63 35.82a8 8 0 012.69 7.26 174.75 174.75 0 01-24.28 66.68A8 8 0 01399 352zM134.52 237.13l28.1 11.9a8 8 0 014.65 5.45l14.86 59.92a8 8 0 01-.86 6L165.13 348a8 8 0 01-6.91 4H113a8 8 0 01-6.82-3.81 174.75 174.75 0 01-24.28-66.68 8 8 0 012.69-7.26l41.63-35.82a8 8 0 018.3-1.3zm256.94-87.24l-18.07 51.38A8 8 0 01369 206l-29.58 12.53a8 8 0 01-8.26-1.24L274.9 170.1a8 8 0 01-2.9-6.1v-33.58a8 8 0 013.56-6.65l42.83-28.54a8 8 0 017.66-.67A176.92 176.92 0 01390 142a8 8 0 011.46 7.89zM193.6 95.23l42.84 28.54a8 8 0 013.56 6.65V164a8 8 0 01-2.86 6.13l-56.26 47.19a8 8 0 01-8.26 1.24L143 206a8 8 0 01-4.43-4.72L120.5 149.9a8 8 0 011.5-7.9 176.92 176.92 0 0164-47.48 8 8 0 017.6.71zm17.31 327.46L191.18 373a8 8 0 01.52-7l15.17-26a8 8 0 016.91-4h84.44a8 8 0 016.91 4l15.18 26a8 8 0 01.53 7l-19.59 49.67a8 8 0 01-5.69 4.87 176.58 176.58 0 01-79 0 8 8 0 01-5.65-4.85z'/></svg>\"\nexport const footballOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Football</title><circle cx='256' cy='256' r='192' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 175.15l-76.09 63.83L200 320h112l20.09-81.02L256 175.15zM332.09 238.98l52.87-22.4 25.78-73.26M447 269.97l-62.04-53.39M179.91 238.98l-52.87-22.4-25.78-73.26M65 269.97l62.04-53.39M256 175.15v-57.57l64-42.64M192 74.93l64 42.65M312 320l28 48-28 71M410.74 368H342M200 320l-28 48 28.37 71.5M101.63 368H172' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const footballSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Football</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm140.64 296.08h-46.77l-16.89-29 15-60.44L377.79 242l42.65 36.71a164.87 164.87 0 01-23.8 65.37zM134.21 242L164 254.67l15 60.44-16.89 29h-46.75a164.87 164.87 0 01-23.8-65.34zm249.07-92.47l-18.41 52.33-31.12 13.18L277 167.46v-35l43.86-29.22a166.87 166.87 0 0162.42 46.32zM191.14 103.2L235 132.42v35l-56.75 47.61-31.12-13.18-18.41-52.33a166.87 166.87 0 0162.42-46.32zm26.44 314.3l-20.1-50.66 16-27.51h85l16.06 27.53-20 50.6a166.23 166.23 0 01-77 0z'/></svg>\"\nexport const footsteps = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Footsteps</title><path d='M133.83 361.27c-22.61 0-41-8.17-54.79-24.39s-22.84-40.29-28.11-75.31c-7.76-51.61-.06-95.11 21.68-122.48 12.8-16.12 29.6-25.44 48.58-26.94 16.25-1.3 40.54 5.29 64 44 14.69 24.24 25.86 56.44 30.65 88.34 5.79 38.51 1.48 66.86-13.18 86.65-11.64 15.72-29.54 25.46-53.21 29a106.46 106.46 0 01-15.62 1.13zM173 496c-13.21 0-26.6-4.23-38.66-12.36a79.79 79.79 0 01-33.52-50.6c-2.85-14.66-1.14-26.31 5.22-35.64 10.33-15.15 28.87-18.56 48.49-22.18 2.07-.38 4.17-.76 6.3-1.17 4.52-.86 9.14-2 13.62-3.11 16.78-4.14 34.14-8.43 48.47 1.75 9.59 6.8 15 18.36 16.62 35.32 1.84 19.57-2.36 39.1-11.83 55-10.19 17.11-25.47 28.42-43 31.86A61 61 0 01173 496zM378.17 265.27a106.69 106.69 0 01-15.6-1.2c-23.66-3.5-41.56-13.25-53.2-29-14.66-19.79-19-48.13-13.18-86.65 4.79-31.93 15.93-64.1 30.55-88.25 23.34-38.57 47.66-45.26 64-44.08 18.92 1.38 35.69 10.57 48.51 26.6 21.89 27.37 29.65 71 21.86 122.84-5.27 35-14.2 58.95-28.11 75.31s-32.22 24.43-54.83 24.43zM339 400a61 61 0 01-11.68-1.13c-17.56-3.44-32.84-14.75-43-31.86-9.47-15.9-13.67-35.43-11.83-55 1.6-17 7-28.52 16.62-35.33 14.33-10.17 31.69-5.89 48.47-1.74 4.48 1.1 9.1 2.24 13.62 3.11l6.29 1.17c19.63 3.61 38.17 7 48.5 22.17 6.36 9.33 8.07 21 5.22 35.64a79.78 79.78 0 01-33.52 50.61C365.56 395.78 352.17 400 339 400z'/></svg>\"\nexport const footstepsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Footsteps</title><path d='M200 246.84c8.81 58.62-7.33 90.67-52.91 97.41-50.65 7.49-71.52-26.44-80.33-85.06-11.85-78.88 16-127.94 55.71-131.1 36.14-2.87 68.71 60.14 77.53 118.75zM223.65 409.53c3.13 33.28-14.86 64.34-42 69.66-27.4 5.36-58.71-16.37-65.09-49.19s17.75-34.56 47.32-40.21 55.99-20.4 59.77 19.74zM312 150.83c-8.81 58.62 7.33 90.67 52.9 97.41 50.66 7.49 71.52-26.44 80.33-85.06 11.86-78.89-16-128.22-55.7-131.1-36.4-2.64-68.71 60.13-77.53 118.75zM288.35 313.53c-3.13 33.27 14.86 64.34 42 69.66 27.4 5.36 58.71-16.37 65.09-49.19s-17.75-34.56-47.32-40.22-55.99-20.4-59.77 19.75z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const footstepsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Footsteps</title><path d='M130.54 358.31c-12.83 1.88-33.95 5.38-48-10.56S56.34 293.32 51 258.92c-7.88-50.7-.06-93.43 22-120.31 13-15.83 30.06-25 49.34-26.46 16.51-1.27 41.18 5.19 65 43.19 14.92 23.81 26.27 55.44 31.14 86.77 5.88 37.82 11.61 78.18-8.44 92.65-11.31 8.17-19.43 11-38.62 15.57-15.78 3.75-28.04 6.09-40.88 7.98zM107.72 390.84l108.89-22.46c9.2-1.9 16.58 3.16 20 18.32 11.22 49.76-4.86 109.3-55.22 109.3-47.69 0-79.47-54.36-84.66-83.58-2.37-13.25 1.01-19.53 10.99-21.58zM340.59 254.34c-19.19-4.55-27.31-7.4-38.62-15.57-20.05-14.47-14.32-54.83-8.44-92.65 4.87-31.33 16.22-63 31.14-86.77 23.8-38 48.47-44.46 65-43.19C408.93 17.63 426 26.78 439 42.61c22.08 26.88 29.9 69.61 22 120.31-5.35 34.4-17.46 72.76-31.59 88.83s-35.13 12.44-48 10.56-25.05-4.23-40.82-7.97zM404.28 294.84l-108.89-22.46c-9.2-1.9-16.58 3.16-20 18.32-11.21 49.76 4.87 109.3 55.23 109.3 47.69 0 79.47-54.36 84.66-83.58 2.36-13.25-1.02-19.53-11-21.58z'/></svg>\"\nexport const funnel = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Funnel</title><path d='M296 464a23.88 23.88 0 01-7.55-1.23L208.3 436.1a23.92 23.92 0 01-16.3-22.78V294.11a.44.44 0 00-.09-.13L23.26 97.54A30 30 0 0146.05 48H466a30 30 0 0122.79 49.54L320.09 294a.77.77 0 00-.09.13V440a23.93 23.93 0 01-24 24z'/></svg>\"\nexport const funnelOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Funnel</title><path d='M35.4 87.12l168.65 196.44A16.07 16.07 0 01208 294v119.32a7.93 7.93 0 005.39 7.59l80.15 26.67A7.94 7.94 0 00304 440V294a16.07 16.07 0 014-10.44L476.6 87.12A14 14 0 00466 64H46.05A14 14 0 0035.4 87.12z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const funnelSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Funnel</title><path d='M0 48l192 240v128l128 48V288L512 48H0z'/></svg>\"\nexport const gameController = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Game Controller</title><path d='M483.13 245.38C461.92 149.49 430 98.31 382.65 84.33A107.13 107.13 0 00352 80c-13.71 0-25.65 3.34-38.28 6.88C298.5 91.15 281.21 96 256 96s-42.51-4.84-57.76-9.11C185.6 83.34 173.67 80 160 80a115.74 115.74 0 00-31.73 4.32c-47.1 13.92-79 65.08-100.52 161C4.61 348.54 16 413.71 59.69 428.83a56.62 56.62 0 0018.64 3.22c29.93 0 53.93-24.93 70.33-45.34 18.53-23.1 40.22-34.82 107.34-34.82 59.95 0 84.76 8.13 106.19 34.82 13.47 16.78 26.2 28.52 38.9 35.91 16.89 9.82 33.77 12 50.16 6.37 25.82-8.81 40.62-32.1 44-69.24 2.57-28.48-1.39-65.89-12.12-114.37zM208 240h-32v32a16 16 0 01-32 0v-32h-32a16 16 0 010-32h32v-32a16 16 0 0132 0v32h32a16 16 0 010 32zm84 4a20 20 0 1120-20 20 20 0 01-20 20zm44 44a20 20 0 1120-19.95A20 20 0 01336 288zm0-88a20 20 0 1120-20 20 20 0 01-20 20zm44 44a20 20 0 1120-20 20 20 0 01-20 20z'/></svg>\"\nexport const gameControllerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Game Controller</title><path d='M467.51 248.83c-18.4-83.18-45.69-136.24-89.43-149.17A91.5 91.5 0 00352 96c-26.89 0-48.11 16-96 16s-69.15-16-96-16a99.09 99.09 0 00-27.2 3.66C89 112.59 61.94 165.7 43.33 248.83c-19 84.91-15.56 152 21.58 164.88 26 9 49.25-9.61 71.27-37 25-31.2 55.79-40.8 119.82-40.8s93.62 9.6 118.66 40.8c22 27.41 46.11 45.79 71.42 37.16 41.02-14.01 40.44-79.13 21.43-165.04z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='292' cy='224' r='20'/><path d='M336 288a20 20 0 1120-19.95A20 20 0 01336 288z'/><circle cx='336' cy='180' r='20'/><circle cx='380' cy='224' r='20'/><path stroke-linecap='round' stroke-linejoin='round' d='M160 176v96M208 224h-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gameControllerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Game Controller</title><path d='M478.07 356.88L439 151c-8.86-40.35-23-71-88-71H145c-66 0-79.14 30.65-88 71L18 356.88c-7 34.12 4.43 61.25 33.37 71.81S103 423 119.18 391.3l15.42-30.52a16 16 0 0114.28-8.78h198.28a16 16 0 0114.28 8.78l15.42 30.52c16.14 31.7 38.88 48 67.81 37.39S485 391 478.07 356.88zM224 240h-48v48h-32v-48H96v-32h48v-48h32v48h48zm68 4a20 20 0 1120-20 20 20 0 01-20 20zm44 44a20 20 0 1120-20 20 20 0 01-20 20zm0-88a20 20 0 1120-20 20 20 0 01-20 20zm44 44a20 20 0 1120-20 20 20 0 01-20 20z'/></svg>\"\nexport const gift = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Gift</title><path d='M200 144h40v-40a40 40 0 10-40 40zM352 104a40 40 0 00-80 0v40h40a40 40 0 0040-40z' class='ionicon-fill-none'/><path d='M80 416a64 64 0 0064 64h92a4 4 0 004-4V292a4 4 0 00-4-4H88a8 8 0 00-8 8zM240 252V144h32v108a4 4 0 004 4h140a47.93 47.93 0 0016-2.75A48.09 48.09 0 00464 208v-16a48 48 0 00-48-48h-40.54a2 2 0 01-1.7-3A72 72 0 00256 58.82 72 72 0 00138.24 141a2 2 0 01-1.7 3H96a48 48 0 00-48 48v16a48.09 48.09 0 0032 45.25A47.93 47.93 0 0096 256h140a4 4 0 004-4zm32-148a40 40 0 1140 40h-40zm-74.86-39.9A40 40 0 01240 104v40h-40a40 40 0 01-2.86-79.89zM276 480h92a64 64 0 0064-64V296a8 8 0 00-8-8H276a4 4 0 00-4 4v184a4 4 0 004 4z'/></svg>\"\nexport const giftOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Gift</title><path d='M256 104v56h56a56 56 0 10-56-56zM256 104v56h-56a56 56 0 1156-56z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><rect x='64' y='160' width='384' height='112' rx='32' ry='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M416 272v144a48 48 0 01-48 48H144a48 48 0 01-48-48V272M256 160v304' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const giftSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Gift</title><path d='M346 110a34 34 0 00-68 0v34h34a34 34 0 0034-34zM234 110a34 34 0 10-34 34h34z' class='ionicon-fill-none'/><path d='M234 144h44v112h164a22 22 0 0022-22v-68a22 22 0 00-22-22h-59.82A77.95 77.95 0 00256 55.79 78 78 0 00129.81 144H70a22 22 0 00-22 22v68a22 22 0 0022 22h164zm44-34a34 34 0 1134 34h-34zm-112 0a34 34 0 1168 0v34h-34a34 34 0 01-34-34zM278 480h132a22 22 0 0022-22V288H278zM80 458a22 22 0 0022 22h132V288H80z'/></svg>\"\nexport const gitBranch = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Branch</title><path d='M416 160a64 64 0 10-96.27 55.24c-2.29 29.08-20.08 37-75 48.42-17.76 3.68-35.93 7.45-52.71 13.93v-126.2a64 64 0 10-64 0v209.22a64 64 0 1064.42.24c2.39-18 16-24.33 65.26-34.52 27.43-5.67 55.78-11.54 79.78-26.95 29-18.58 44.53-46.78 46.36-83.89A64 64 0 00416 160zM160 64a32 32 0 11-32 32 32 32 0 0132-32zm0 384a32 32 0 1132-32 32 32 0 01-32 32zm192-256a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitBranchOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Branch</title><circle cx='160' cy='96' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='160' cy='416' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M160 368V144' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='352' cy='160' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M352 208c0 128-192 48-192 160' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gitBranchSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Branch</title><path d='M352 96a64 64 0 00-58.86 89.11l-101.14 88V151.39a64 64 0 10-64 0v209.22a64 64 0 1064 0V358l154.25-134.27c1.9.17 3.81.27 5.75.27a64 64 0 000-128zM160 64a32 32 0 11-32 32 32 32 0 0132-32zm0 384a32 32 0 1132-32 32 32 0 01-32 32zm192-256a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitCommit = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Commit</title><path d='M448 224h-68a128 128 0 00-247.9 0H64a32 32 0 000 64h68.05A128 128 0 00380 288h68a32 32 0 000-64zm-192 96a64 64 0 1164-64 64.07 64.07 0 01-64 64z'/></svg>\"\nexport const gitCommitOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Commit</title><circle cx='256' cy='256' r='96' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M160 256H48M464 256H352' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gitCommitSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Commit</title><path d='M480 224H380a128 128 0 00-247.9 0H32v64h100.05A128 128 0 00380 288h100zm-224 96a64 64 0 1164-64 64.07 64.07 0 01-64 64z'/></svg>\"\nexport const gitCompare = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Compare</title><path d='M218.31 340.69A16 16 0 00191 352v32h-20a28 28 0 01-28-28V152a64 64 0 10-64-1.16V356a92.1 92.1 0 0092 92h20v32a16 16 0 0027.31 11.31l64-64a16 16 0 000-22.62zM112 64a32 32 0 11-32 32 32 32 0 0132-32zM432 360.61V156a92.1 92.1 0 00-92-92h-20V32a16 16 0 00-27.31-11.31l-64 64a16 16 0 000 22.62l64 64A16 16 0 00320 160v-32h20a28 28 0 0128 28v204.61a64 64 0 1064 0zM400 448a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitCompareOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Compare</title><path stroke-linecap='round' stroke-linejoin='round' d='M304 160l-64-64 64-64M207 352l64 64-64 64' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='112' cy='96' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='400' cy='416' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 96h84a60 60 0 0160 60v212M255 416h-84a60 60 0 01-60-60V144' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gitCompareSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Compare</title><path d='M209 384h-37a28 28 0 01-28-28V152a64 64 0 10-64-1.16V356a92.1 92.1 0 0092 92h37v55.21L294.39 416 209 328.79zM113 64a32 32 0 11-32 32 32 32 0 0132-32zM432 360.61V156a92.1 92.1 0 00-92-92h-35V9.93L217.14 96 305 182.07V128h35a28 28 0 0128 28v204.61a64 64 0 1064 0zM400 448a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitMerge = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Merge</title><path d='M385 224a64 64 0 00-55.33 31.89c-42.23-1.21-85.19-12.72-116.21-31.33-32.2-19.32-49.71-44-52.15-73.35a64 64 0 10-64.31.18v209.22a64 64 0 1064 0v-94.46c44.76 34 107.28 52.38 168.56 53.76A64 64 0 10385 224zM129 64a32 32 0 11-32 32 32 32 0 0132-32zm0 384a32 32 0 1132-32 32 32 0 01-32 32zm256-128a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitMergeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Merge</title><circle cx='129' cy='96' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='129' cy='416' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M129 144v224' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='385' cy='288' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M129 144c0 96 112 144 208 144' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gitMergeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Merge</title><path d='M384 224a63.66 63.66 0 00-37.95 12.5L160 153.36v-2a64 64 0 10-64 0v209.25a64 64 0 1064 0V223.46l160.41 71.69A64 64 0 10384 224zM128 64a32 32 0 11-32 32 32 32 0 0132-32zm0 384a32 32 0 1132-32 32 32 0 01-32 32zm256-128a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitNetwork = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Network</title><path d='M448 96a64 64 0 10-96.31 55.21c-1.79 20.87-11.47 38.1-28.87 51.29C305.07 216 280.09 224 256 224s-49.07-8-66.82-21.5c-17.4-13.19-27.08-30.42-28.87-51.29a64 64 0 10-64.11.29c2.08 40.87 21.17 76.87 54.31 102C171.3 269.26 197 280.19 224 285.09v75.52a64 64 0 1064 0v-75.52c27-4.9 52.7-15.83 73.49-31.59 33.14-25.13 52.23-61.13 54.31-102A64 64 0 00448 96zM128 64a32 32 0 11-32 32 32 32 0 0132-32zm128 384a32 32 0 1132-32 32 32 0 01-32 32zm128-320a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitNetworkOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Network</title><circle cx='128' cy='96' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='416' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 256v112' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='96' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M128 144c0 74.67 68.92 112 128 112M384 144c0 74.67-68.92 112-128 112' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gitNetworkSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Network</title><path d='M384 32a64 64 0 00-57.67 91.73l-70.83 80.82-70.19-80.1A64 64 0 10128 160c1.1 0 2.2 0 3.29-.08L224 265.7v94.91a64 64 0 1064 0v-96.05l91.78-104.71c1.39.09 2.8.15 4.22.15a64 64 0 000-128zM96 96a32 32 0 1132 32 32 32 0 01-32-32zm160 352a32 32 0 1132-32 32 32 0 01-32 32zm128-320a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitPullRequest = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Pull Request</title><path d='M192 96a64 64 0 10-96 55.39v209.22a64 64 0 1064 0V151.39A64 64 0 00192 96zm-64-32a32 32 0 11-32 32 32 32 0 0132-32zm0 384a32 32 0 1132-32 32 32 0 01-32 32zM416 360.61V156a92.1 92.1 0 00-92-92h-20V32a16 16 0 00-27.31-11.31l-64 64a16 16 0 000 22.62l64 64A16 16 0 00304 160v-32h20a28 28 0 0128 28v204.61a64 64 0 1064 0zM384 448a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const gitPullRequestOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Pull Request</title><circle cx='128' cy='416' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M128 144v224M288 160l-64-64 64-64' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='128' cy='96' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='416' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M240 96h84a60 60 0 0160 60v212' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gitPullRequestSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Git Pull Request</title><path d='M192 96a64 64 0 10-97 54.81v209.8a64 64 0 1064 0V152a64.06 64.06 0 0033-56zm-64-32a32 32 0 11-32 32 32 32 0 0132-32zm-1 384a32 32 0 1132-32 32 32 0 01-32 32zM416 360.61V156a92.1 92.1 0 00-92-92h-35V9.93L201.14 96 289 182.07V128h35a28 28 0 0128 28v204.61a64 64 0 1064 0zM384 448a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const glasses = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Glasses</title><path d='M464 184h-10.9a78.72 78.72 0 00-16-7.18C419.5 171 396.26 168 368 168s-51.5 3-69.06 8.82c-14.06 4.69-20.25 9.86-22.25 11.87a47.94 47.94 0 00-41.36 0c-2-2-8.19-7.18-22.25-11.87C195.5 171 172.26 168 144 168s-51.5 3-69.06 8.82a78.72 78.72 0 00-16 7.18H48a16 16 0 000 32h.17c1 45.46 6.44 72.78 18.11 92.23a66.78 66.78 0 0031.92 28c12.23 5.24 27.22 7.79 45.8 7.79 24.15 0 58.48-3.71 77.72-35.77 9.68-16.14 15.09-37.69 17.21-70.52A16 16 0 00240 232a16 16 0 0132 0 16 16 0 001.07 5.71c2.12 32.83 7.53 54.38 17.21 70.52a66.78 66.78 0 0031.92 28c12.23 5.24 27.22 7.79 45.8 7.79 24.15 0 58.48-3.71 77.72-35.77 11.67-19.45 17.13-46.77 18.11-92.23h.17a16 16 0 000-32z'/></svg>\"\nexport const glassesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Glasses</title><path d='M224 232a32 32 0 0164 0M448 200h16M64 200H48M64 200c0 96 16 128 80 128s80-32 80-128c0 0-16-16-80-16s-80 16-80 16zM448 200c0 96-16 128-80 128s-80-32-80-128c0 0 16-16 80-16s80 16 80 16z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const glassesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Glasses</title><path d='M496 176H16v64h21.24l12.44 112h171.87L240 241.32V240a16 16 0 0132 0v1.32L290.45 352h171.87l12.44-112H496z'/></svg>\"\nexport const globe = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Globe</title><path d='M340.75 344.49c5.91-20.7 9.82-44.75 11.31-67.84a4.41 4.41 0 00-4.46-4.65h-71.06a4.43 4.43 0 00-4.47 4.39v55.3a4.44 4.44 0 004.14 4.38 273.51 273.51 0 0159 11.39 4.45 4.45 0 005.54-2.97zM323.58 377.31a260.05 260.05 0 00-46.6-9.09 4.42 4.42 0 00-4.91 4.29v65.24a4.47 4.47 0 006.76 3.7c15.9-9.27 29-24.84 40.84-45.43 1.94-3.36 4.89-9.15 6.67-12.69a4.29 4.29 0 00-2.76-6.02zM235.29 368.4a256.85 256.85 0 00-46.56 8.82c-2.64.76-3.75 4.4-2.55 6.79 1.79 3.56 4 8.11 5.89 11.51 13 23 26.84 37.5 41.24 45.93a4.47 4.47 0 006.76-3.7v-65.27a4.16 4.16 0 00-4.78-4.08zM235.6 272h-71.06a4.41 4.41 0 00-4.46 4.64c1.48 23.06 5.37 47.16 11.26 67.84a4.46 4.46 0 005.59 3 272.2 272.2 0 0159-11.36 4.44 4.44 0 004.15-4.38V276.4a4.43 4.43 0 00-4.48-4.4zM277 143.78a235.8 235.8 0 0046.5-9.14 4.3 4.3 0 002.76-6c-1.79-3.57-4.27-8.68-6.17-12.09-12.29-22-26.14-37.35-41.24-46a4.48 4.48 0 00-6.76 3.7v65.23a4.43 4.43 0 004.91 4.3zM276.54 240h71.06a4.39 4.39 0 004.46-4.58c-1.48-22.77-5.27-47.8-11.16-68.22a4.46 4.46 0 00-5.59-2.95c-19 5.74-38.79 10.43-59.09 12a4.4 4.4 0 00-4.15 4.32v55.11a4.4 4.4 0 004.47 4.32zM233.31 70.56c-15.42 8.57-29.17 24.43-41.47 46.37-1.91 3.41-4.19 8.11-6 11.67a4.31 4.31 0 002.76 6 225.42 225.42 0 0046.54 9.17 4.43 4.43 0 004.91-4.29V74.26a4.49 4.49 0 00-6.74-3.7zM235.92 176.26c-20.3-1.55-40.11-6.24-59.09-12a4.46 4.46 0 00-5.59 2.95c-5.89 20.42-9.68 45.45-11.16 68.22a4.39 4.39 0 004.46 4.58h71.06a4.4 4.4 0 004.47-4.34v-55.09a4.4 4.4 0 00-4.15-4.32z'/><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM176.6 430.85a219.08 219.08 0 01-12.48-19.66c-2-3.69-4.84-9.26-6.73-13.13a7.29 7.29 0 00-10.31-3.16c-4.3 2.41-10 5.72-14.13 8.43a147.29 147.29 0 01-23.57-22.43 248.83 248.83 0 0130.41-18.36c1.86-1 2.77-2.14 2.18-4.18a374.8 374.8 0 01-14.09-82.17 4.36 4.36 0 00-4.3-4.17H66.84a2 2 0 01-2-1.7A98.28 98.28 0 0164 256a96.27 96.27 0 01.86-14.29 2 2 0 012-1.7h56.74c2.29 0 4.17-1.32 4.29-3.63a372.71 372.71 0 0114-81.83 4.36 4.36 0 00-2.19-5.11 260.63 260.63 0 01-29.84-17.9 169.82 169.82 0 0123.14-22.8c4.08 2.68 9.4 5.71 13.66 8.11a7.89 7.89 0 0011-3.42c1.88-3.87 4-8.18 6.06-11.88a221.93 221.93 0 0112.54-19.91A185 185 0 01256 64c28.94 0 55.9 7 80.53 18.46a202.23 202.23 0 0112 19c2.59 4.66 5.34 10.37 7.66 15.32a4.29 4.29 0 005.92 1.94c5.38-2.91 11.21-6.26 16.34-9.63a171.36 171.36 0 0123.2 23 244.89 244.89 0 01-29.06 17.31 4.35 4.35 0 00-2.18 5.12 348.68 348.68 0 0113.85 81.4 4.33 4.33 0 004.3 4.12l56.62-.07a2 2 0 012 1.7 117.46 117.46 0 010 28.62 2 2 0 01-2 1.72h-56.67a4.35 4.35 0 00-4.3 4.17 367.4 367.4 0 01-13.87 81.3 4.45 4.45 0 002.19 5.19c5 2.59 10.57 5.48 15.37 8.42s9.55 6.08 14.13 9.34a172.73 172.73 0 01-23 22.93c-2.44-1.61-5.34-3.44-7.84-4.94-1.72-1-4.89-2.77-6.65-3.76-3.82-2.14-7.88-.54-9.79 3.4s-4.83 9.59-6.87 13.25a212.42 212.42 0 01-12.35 19.53C310.91 442.37 284.94 448 256 448s-54.77-5.63-79.4-17.15z'/></svg>\"\nexport const globeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Globe</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 48c-58.07 0-112.67 93.13-112.67 208S197.93 464 256 464s112.67-93.13 112.67-208S314.07 48 256 48z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M117.33 117.33c38.24 27.15 86.38 43.34 138.67 43.34s100.43-16.19 138.67-43.34M394.67 394.67c-38.24-27.15-86.38-43.34-138.67-43.34s-100.43 16.19-138.67 43.34' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-miterlimit='10' d='M256 48v416M464 256H48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const globeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Globe</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48z' stroke-miterlimit='10' stroke-width='44' class='ionicon-fill-none'/><path d='M256 48c-58.07 0-112.67 93.13-112.67 208S197.93 464 256 464s112.67-93.13 112.67-208S314.07 48 256 48z' stroke-miterlimit='10' stroke-width='44' class='ionicon-fill-none'/><path d='M117.33 121.33c38.24 27.15 86.38 43.34 138.67 43.34s100.43-16.19 138.67-43.34M394.67 390.67c-38.24-27.15-86.38-43.34-138.67-43.34s-100.43 16.19-138.67 43.34' stroke-linecap='round' stroke-linejoin='round' stroke-width='44' class='ionicon-fill-none'/><path stroke-miterlimit='10' stroke-width='44' d='M256 48v416M464 256H48' class='ionicon-fill-none'/></svg>\"\nexport const golf = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Golf</title><path d='M272 320.46V202.3l166.62-75.73a16 16 0 000-29.14l-176-80A16 16 0 00240 32v288.46q8-.45 16-.46t16 .46z'/><path d='M463.33 457.5c-8.56-42.85-35.11-78.74-76.78-103.8-32.5-19.55-72.67-31.3-114.55-33.7v79.75a16 16 0 11-32 0V320c-41.88 2.4-82.05 14.15-114.55 33.7-41.67 25.06-68.22 60.95-76.78 103.8a32.49 32.49 0 006.44 27.08C61.13 492 70 496 80 496h352c10 0 18.88-4.05 24.9-11.42a32.49 32.49 0 006.43-27.08z'/></svg>\"\nexport const golfOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Golf</title><path stroke-linecap='round' stroke-linejoin='round' d='M256 400V32l176 80-176 80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 336c-87 0-175.3 43.2-191.64 124.74C62.39 470.57 68.57 480 80 480h352c11.44 0 17.62-9.43 15.65-19.26C431.3 379.2 343 336 256 336z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const golfSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Golf</title><path d='M240 16v304.47q8-.47 16-.47t16 .47V202.3L448 112z'/><path d='M462.91 457.5c-8.54-42.85-35-78.74-76.62-103.8-32.43-19.55-72.53-31.3-114.29-33.7v95.79h-32V320c-41.79 2.4-81.89 14.15-114.32 33.7-41.59 25.06-68.08 60.95-76.62 103.8-2 9.81-.68 38.5-.68 38.5h415.21s1.28-28.69-.68-38.5z'/></svg>\"\nexport const grid = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Grid</title><path d='M204 240H68a36 36 0 01-36-36V68a36 36 0 0136-36h136a36 36 0 0136 36v136a36 36 0 01-36 36zM444 240H308a36 36 0 01-36-36V68a36 36 0 0136-36h136a36 36 0 0136 36v136a36 36 0 01-36 36zM204 480H68a36 36 0 01-36-36V308a36 36 0 0136-36h136a36 36 0 0136 36v136a36 36 0 01-36 36zM444 480H308a36 36 0 01-36-36V308a36 36 0 0136-36h136a36 36 0 0136 36v136a36 36 0 01-36 36z'/></svg>\"\nexport const gridOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Grid</title><rect x='48' y='48' width='176' height='176' rx='20' ry='20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='288' y='48' width='176' height='176' rx='20' ry='20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='48' y='288' width='176' height='176' rx='20' ry='20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='288' y='288' width='176' height='176' rx='20' ry='20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const gridSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Grid</title><path d='M240 240H32V32h208zM480 240H272V32h208zM240 480H32V272h208zM480 480H272V272h208z'/></svg>\"\nexport const hammer = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hammer</title><path d='M280.16 242.79l-26.11-26.12a32 32 0 00-45.14-.12L27.38 384.08c-6.61 6.23-10.95 14.17-11.35 23.06a32.11 32.11 0 009.21 23.94l39 39.43a.46.46 0 00.07.07A32.29 32.29 0 0087 480h1.18c8.89-.33 16.85-4.5 23.17-11.17l168.7-180.7a32 32 0 00.11-45.34zM490 190l-.31-.31-34.27-33.92a21.46 21.46 0 00-15.28-6.26 21.89 21.89 0 00-12.79 4.14c0-.43.06-.85.09-1.22.45-6.5 1.15-16.32-5.2-25.22a258 258 0 00-24.8-28.74.6.6 0 00-.08-.08c-13.32-13.12-42.31-37.83-86.72-55.94A139.55 139.55 0 00257.56 32C226 32 202 46.24 192.81 54.68a119.92 119.92 0 00-14.18 16.22 16 16 0 0018.65 24.34 74.45 74.45 0 018.58-2.63 63.46 63.46 0 0118.45-1.15c13.19 1.09 28.79 7.64 35.69 13.09 11.7 9.41 17.33 22.09 18.26 41.09.18 3.82-7.72 18.14-20 34.48a16 16 0 001.45 21l34.41 34.41a16 16 0 0022 .62c9.73-8.69 24.55-21.79 29.73-25 7.69-4.73 13.19-5.64 14.7-5.8a19.18 19.18 0 0111.29 2.38 1.24 1.24 0 01-.31.95l-1.82 1.73-.3.28a21.52 21.52 0 00.05 30.54l34.26 33.91a21.45 21.45 0 0015.28 6.25 21.7 21.7 0 0015.22-6.2l55.5-54.82c.19-.19.38-.39.56-.59A21.87 21.87 0 00490 190z'/></svg>\"\nexport const hammerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hammer</title><path d='M277.42 247a24.68 24.68 0 00-4.08-5.47L255 223.44a21.63 21.63 0 00-6.56-4.57 20.93 20.93 0 00-23.28 4.27c-6.36 6.26-18 17.68-39 38.43C146 301.3 71.43 367.89 37.71 396.29a16 16 0 00-1.09 23.54l39 39.43a16.13 16.13 0 0023.67-.89c29.24-34.37 96.3-109 136-148.23 20.39-20.06 31.82-31.58 38.29-37.94a21.76 21.76 0 003.84-25.2zM478.43 201l-34.31-34a5.44 5.44 0 00-4-1.59 5.59 5.59 0 00-4 1.59h0a11.41 11.41 0 01-9.55 3.27c-4.48-.49-9.25-1.88-12.33-4.86-7-6.86 1.09-20.36-5.07-29a242.88 242.88 0 00-23.08-26.72c-7.06-7-34.81-33.47-81.55-52.53a123.79 123.79 0 00-47-9.24c-26.35 0-46.61 11.76-54 18.51-5.88 5.32-12 13.77-12 13.77a91.29 91.29 0 0110.81-3.2 79.53 79.53 0 0123.28-1.49C241.19 76.8 259.94 84.1 270 92c16.21 13 23.18 30.39 24.27 52.83.8 16.69-15.23 37.76-30.44 54.94a7.85 7.85 0 00.4 10.83l21.24 21.23a8 8 0 0011.14.1c13.93-13.51 31.09-28.47 40.82-34.46s17.58-7.68 21.35-8.09a35.71 35.71 0 0121.3 4.62 13.65 13.65 0 013.08 2.38c6.46 6.56 6.07 17.28-.5 23.74l-2 1.89a5.5 5.5 0 000 7.84l34.31 34a5.5 5.5 0 004 1.58 5.65 5.65 0 004-1.58L478.43 209a5.82 5.82 0 000-8z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const hammerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hammer</title><path d='M294.28 256.9l-54.42-54.41a12 12 0 00-17 0L12.45 401a12 12 0 00-.27 17.2l66.05 66.28a12 12 0 0017.22-.23l198.81-210.36a12 12 0 00.02-16.99zM499.33 199.33l-43.89-43.58a21.46 21.46 0 00-15.28-6.26 21.89 21.89 0 00-12.79 4.14c0-.43.06-.85.09-1.22.45-6.5 1.15-16.32-5.2-25.22a258 258 0 00-24.8-28.74.6.6 0 00-.08-.08c-13.32-13.12-42.31-37.83-86.72-55.94A139.55 139.55 0 00257.56 32C226 32 202 46.24 192.81 54.68A53.4 53.4 0 00176 86.17L192 96s8.06-2 13.86-3.39a62.73 62.73 0 0118.45-1.15c13.19 1.09 28.79 7.64 35.69 13.09 11.7 9.41 17.33 22.09 18.26 41.09.2 4.23-9.52 21.35-24.16 39.84a8 8 0 00.61 10.62l45.37 45.37a8 8 0 0011 .25c12.07-11 30.49-28 34.67-30.59 7.69-4.73 13.19-5.64 14.7-5.8a19.18 19.18 0 0111.29 2.38 1.24 1.24 0 01-.31.95l-1.82 1.73-.3.28a21.52 21.52 0 00.05 30.54l43.95 43.68a8 8 0 0011.28 0l74.68-74.2a8 8 0 00.06-11.36z'/></svg>\"\nexport const handLeft = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hand Left</title><path d='M432.8 211.44c-15.52-8.82-34.91-2.28-43.31 13.68l-41.38 84.41a7 7 0 01-8.93 3.43 7 7 0 01-4.41-6.52V72c0-13.91-12.85-24-26.77-24s-26 10.09-26 24v156.64A11.24 11.24 0 01271.21 240 11 11 0 01260 229V24c0-13.91-10.94-24-24.86-24S210 10.09 210 24v204.64A11.24 11.24 0 01199.21 240 11 11 0 01188 229V56c0-13.91-12.08-24-26-24s-26 11.09-26 25v187.64A11.24 11.24 0 01125.21 256 11 11 0 01114 245V120c0-13.91-11.08-24-25-24s-25.12 10.22-25 24v216c0 117.41 72 176 160 176h16c88 0 115.71-39.6 136-88l68.71-169c6.62-18 3.6-34.75-11.91-43.56z'/></svg>\"\nexport const handLeftOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hand Left</title><path d='M80 320V144a32 32 0 0132-32h0a32 32 0 0132 32v112M144 256V80a32 32 0 0132-32h0a32 32 0 0132 32v160M272 241V96a32 32 0 0132-32h0a32 32 0 0132 32v224M208 240V48a32 32 0 0132-32h0a32 32 0 0132 32v192' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M80 320c0 117.4 64 176 152 176s123.71-39.6 144-88l52.71-144c6.66-18.05 3.64-34.79-11.87-43.6h0c-15.52-8.82-35.91-4.28-44.31 11.68L336 320' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const handLeftSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hand Left</title><path d='M429.58 209.08c-15.06-6.62-32.38 1.31-38.5 17.62L356 312h-11.27V80c0-17.6-13.3-32-29.55-32-16.26 0-29.55 14.4-29.55 32v151.75l-14.78.25V32c0-17.6-13.3-32-29.55-32s-29.55 14.4-29.55 32v199.75L197 232V64c0-17.6-13.3-32-29.55-32-16.26 0-29.55 14.4-29.55 32v183.75l-14.8.25V128c0-17.6-13.3-32-29.55-32S64 110.4 64 128v216c0 75.8 37.13 168 169 168 40.8 0 79.42-7 100.66-21a121.41 121.41 0 0033.72-33.31 138 138 0 0016-31.78l62.45-175.14c6.17-16.31-1.19-35.06-16.25-41.69z'/></svg>\"\nexport const handRight = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hand Right</title><path d='M79.2 211.44c15.52-8.82 34.91-2.28 43.31 13.68l41.38 84.41a7 7 0 008.93 3.43 7 7 0 004.41-6.52V72c0-13.91 12.85-24 26.77-24s26 10.09 26 24v156.64A11.24 11.24 0 00240.79 240 11 11 0 00252 229V24c0-13.91 10.94-24 24.86-24S302 10.09 302 24v204.64A11.24 11.24 0 00312.79 240 11 11 0 00324 229V56c0-13.91 12.08-24 26-24s26 11.09 26 25v187.64A11.24 11.24 0 00386.79 256 11 11 0 00398 245V120c0-13.91 11.08-24 25-24s25.12 10.22 25 24v216c0 117.41-72 176-160 176h-16c-88 0-115.71-39.6-136-88L67.33 255c-6.66-18-3.64-34.75 11.87-43.56z'/></svg>\"\nexport const handRightOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hand Right</title><path d='M432 320V144a32 32 0 00-32-32h0a32 32 0 00-32 32v112M368 256V80a32 32 0 00-32-32h0a32 32 0 00-32 32v160M240 241V96a32 32 0 00-32-32h0a32 32 0 00-32 32v224M304 240V48a32 32 0 00-32-32h0a32 32 0 00-32 32v192' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M432 320c0 117.4-64 176-152 176s-123.71-39.6-144-88L83.33 264c-6.66-18.05-3.64-34.79 11.87-43.6h0c15.52-8.82 35.91-4.28 44.31 11.68L176 320' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const handRightSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hand Right</title><path d='M82.42 209.08c15.06-6.62 32.38 1.31 38.5 17.62L156 312h11.27V80c0-17.6 13.3-32 29.55-32 16.26 0 29.55 14.4 29.55 32v151.75l14.78.25V32c0-17.6 13.3-32 29.55-32 16.3 0 29.55 14.4 29.55 32v199.75L315 232V64c0-17.6 13.3-32 29.55-32 16.26 0 29.55 14.4 29.55 32v183.75l14.78.25V128c0-17.6 13.3-32 29.55-32C434.7 96 448 110.4 448 128v216c0 75.8-37.13 168-169 168-40.8 0-79.42-7-100.66-21a121.41 121.41 0 01-33.72-33.31 138 138 0 01-16-31.78L66.16 250.77c-6.11-16.31 1.2-35.06 16.26-41.69z'/></svg>\"\nexport const happy = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Happy</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM184 208a24 24 0 11-24 24 23.94 23.94 0 0124-24zm167.67 106.17c-12 40.3-50.2 69.83-95.62 69.83s-83.62-29.53-95.72-69.83a8 8 0 017.83-10.17h175.69a8 8 0 017.82 10.17zM328 256a24 24 0 1124-24 23.94 23.94 0 01-24 24z'/></svg>\"\nexport const happyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Happy</title><circle cx='184' cy='232' r='24'/><path d='M256.05 384c-45.42 0-83.62-29.53-95.71-69.83a8 8 0 017.82-10.17h175.69a8 8 0 017.82 10.17c-11.99 40.3-50.2 69.83-95.62 69.83z'/><circle cx='328' cy='232' r='24'/><circle cx='256' cy='256' r='208' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const happySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Happy</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM328 208a24 24 0 11-24 24 23.94 23.94 0 0124-24zm-144 0a24 24 0 11-24 24 23.94 23.94 0 0124-24zm72.05 176c-45.42 0-83.75-29.49-95.72-69.83C159.29 310.65 158 304 158 304h196s-1.31 6.69-2.33 10.17c-11.78 40.36-50.2 69.83-95.62 69.83z'/></svg>\"\nexport const hardwareChip = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hardware Chip</title><path d='M352 128H160a32 32 0 00-32 32v192a32 32 0 0032 32h192a32 32 0 0032-32V160a32 32 0 00-32-32zm0 216a8 8 0 01-8 8H168a8 8 0 01-8-8V168a8 8 0 018-8h176a8 8 0 018 8z' class='ionicon-fill-none'/><rect x='160' y='160' width='192' height='192' rx='8' ry='8'/><path d='M464 192a16 16 0 000-32h-16v-32a64.07 64.07 0 00-64-64h-32V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-32a64.07 64.07 0 00-64 64v32H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v32a64.07 64.07 0 0064 64h32v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h32a64.07 64.07 0 0064-64v-32h16a16 16 0 000-32h-16v-48h16a16 16 0 000-32h-16v-48zm-80 160a32 32 0 01-32 32H160a32 32 0 01-32-32V160a32 32 0 0132-32h192a32 32 0 0132 32z'/></svg>\"\nexport const hardwareChipOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hardware Chip</title><rect x='80' y='80' width='352' height='352' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='144' y='144' width='224' height='224' rx='16' ry='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 80V48M336 80V48M176 80V48M256 464v-32M336 464v-32M176 464v-32M432 256h32M432 336h32M432 176h32M48 256h32M48 336h32M48 176h32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const hardwareChipSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hardware Chip</title><path d='M160 160h192v192H160z'/><path d='M480 198v-44h-32V88a24 24 0 00-24-24h-66V32h-44v32h-36V32h-44v32h-36V32h-44v32H88a24 24 0 00-24 24v66H32v44h32v36H32v44h32v36H32v44h32v66a24 24 0 0024 24h66v32h44v-32h36v32h44v-32h36v32h44v-32h66a24 24 0 0024-24v-66h32v-44h-32v-36h32v-44h-32v-36zm-352-70h256v256H128z'/></svg>\"\nexport const headset = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Headset</title><path d='M411.16 97.46C368.43 55.86 311.88 32 256 32S143.57 55.86 100.84 97.46C56.45 140.67 32 197 32 256c0 26.67 8.75 61.09 32.88 125.55S137 473 157.27 477.41c5.81 1.27 12.62 2.59 18.73 2.59a60.06 60.06 0 0030-8l14-8c15.07-8.82 19.47-28.13 10.8-43.35l-86.92-152.57a31.73 31.73 0 00-43.57-11.76l-13.69 8a56.49 56.49 0 00-14 11.59 4 4 0 01-7-2A114.68 114.68 0 0164 256c0-50.31 21-98.48 59.16-135.61C160 84.55 208.39 64 256 64s96 20.55 132.84 56.39C427 157.52 448 205.69 448 256a114.68 114.68 0 01-1.68 17.91 4 4 0 01-7 2 56.49 56.49 0 00-14-11.59l-13.69-8a31.73 31.73 0 00-43.57 11.76L281.2 420.65c-8.67 15.22-4.27 34.53 10.8 43.35l14 8a60.06 60.06 0 0030 8c6.11 0 12.92-1.32 18.73-2.59C375 473 423 446 447.12 381.55S480 282.67 480 256c0-59-24.45-115.33-68.84-158.54z'/></svg>\"\nexport const headsetOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Headset</title><path d='M83 384c-13-33-35-93.37-35-128C48 141.12 149.33 48 256 48s208 93.12 208 208c0 34.63-23 97-35 128' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M108.39 270.13l-13.69 8h0c-30.23 17.7-31.7 72.41-3.38 122.2s75.87 75.81 106.1 58.12h0l13.69-8a16.16 16.16 0 005.78-21.87L130 276a15.74 15.74 0 00-21.61-5.87zM403.61 270.13l13.69 8h0c30.23 17.69 31.74 72.4 3.38 122.19s-75.87 75.81-106.1 58.12h0l-13.69-8a16.16 16.16 0 01-5.78-21.87L382 276a15.74 15.74 0 0121.61-5.87z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const headsetSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Headset</title><path d='M411.16 97.45C368.43 55.85 311.88 32 256 32S143.57 55.85 100.84 97.45C56.45 140.67 32 196 32 256s26.84 118.49 45.42 152.25S121 480 144 480c32 0 96-32 96-32L128 240l-54.42 31.73a176.07 176.07 0 01-1-18.84c0-48.57 19.32-94.1 56.15-130C164.24 88.34 210 70 256 70s91.73 18.34 127.27 52.93c36.83 35.86 56.14 81.39 56.14 130a175.56 175.56 0 01-1 18.82L384 240 272 448s64 32 96 32c23 0 48-38 66.58-71.75S480 316 480 256s-24.45-115.33-68.84-158.55z'/></svg>\"\nexport const heart = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart</title><path d='M256 448a32 32 0 01-18-5.57c-78.59-53.35-112.62-89.93-131.39-112.8-40-48.75-59.15-98.8-58.61-153C48.63 114.52 98.46 64 159.08 64c44.08 0 74.61 24.83 92.39 45.51a6 6 0 009.06 0C278.31 88.81 308.84 64 352.92 64c60.62 0 110.45 50.52 111.08 112.64.54 54.21-18.63 104.26-58.61 153-18.77 22.87-52.8 59.45-131.39 112.8a32 32 0 01-18 5.56z'/></svg>\"\nexport const heartCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm74.69 252.82c-9.38 11.44-26.4 29.73-65.7 56.41a15.93 15.93 0 01-18 0c-39.3-26.68-56.32-45-65.7-56.41-20-24.37-29.58-49.4-29.3-76.5.31-31.06 25.22-56.33 55.53-56.33 20.4 0 35 10.63 44.1 20.41a6 6 0 008.72 0c9.11-9.78 23.7-20.41 44.1-20.41 30.31 0 55.22 25.27 55.53 56.33.3 27.1-9.29 52.13-29.28 76.5z'/></svg>\"\nexport const heartCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 360a16 16 0 01-9-2.78c-39.3-26.68-56.32-45-65.7-56.41-20-24.37-29.58-49.4-29.3-76.5.31-31.06 25.22-56.33 55.53-56.33 20.4 0 35 10.63 44.1 20.41a6 6 0 008.72 0c9.11-9.78 23.7-20.41 44.1-20.41 30.31 0 55.22 25.27 55.53 56.33.28 27.1-9.31 52.13-29.3 76.5-9.38 11.44-26.4 29.73-65.7 56.41A16 16 0 01256 360z'/></svg>\"\nexport const heartCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm74.69 252.82c-8.5 10.36-39.69 38.48-74.69 63.51-35-25-66.19-53.15-74.69-63.51-20-24.37-29.58-49.4-29.3-76.5.31-31.06 25.22-56.33 55.53-56.33 22 0 37.3 12.41 46.19 22.76l2.27 2.75 2.27-2.75C267 180.29 282.42 168 304.46 168c30.31 0 55.22 25.27 55.53 56.33.28 27.09-9.31 52.12-29.3 76.49z'/></svg>\"\nexport const heartDislike = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Dislike</title><path d='M417.84 448a16 16 0 01-11.35-4.72l-365.84-368a16 16 0 1122.7-22.56l365.83 368A16 16 0 01417.84 448zM364.92 80c-44.09 0-74.61 24.82-92.39 45.5a6 6 0 01-9.06 0C245.69 104.82 215.16 80 171.08 80a107.71 107.71 0 00-31 4.54l269.13 270.7c3-3.44 5.7-6.64 8.14-9.6 40-48.75 59.15-98.79 58.61-153C475.37 130.53 425.54 80 364.92 80zM69 149.15a115.06 115.06 0 00-9 43.49c-.54 54.21 18.63 104.25 58.61 153 18.77 22.87 52.8 59.45 131.39 112.8a31.88 31.88 0 0036 0c20.35-13.82 37.7-26.5 52.58-38.12z'/></svg>\"\nexport const heartDislikeCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Dislike Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm23.3 299.19c-4.41 3.2-9.16 6.55-14.31 10a15.93 15.93 0 01-18 0c-39.3-26.68-56.32-45-65.7-56.41-20-24.37-29.58-49.4-29.3-76.5v-.64a4 4 0 016.82-2.72l120.95 120.2a4 4 0 01-.46 6.07zm68 16.12a16 16 0 01-22.62 0l-176-176a16 16 0 0122.62-22.62l176 176a16 16 0 01.01 22.62zm-14.1-65.62a3.92 3.92 0 01-6 .37l-124-123.21A4 4 0 01206 168h1.55c20.4 0 35 10.64 44.11 20.42a5.93 5.93 0 008.7 0c9.11-9.78 23.71-20.42 44.11-20.42 30.31 0 55.22 25.27 55.53 56.33.26 25.93-8.52 49.97-26.8 73.36z'/></svg>\"\nexport const heartDislikeCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Dislike Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M333.2 297.69c18.28-23.39 27.06-47.43 26.79-73.37-.31-31.06-25.22-56.33-55.53-56.33-20.4 0-35 10.64-44.11 20.42a5.93 5.93 0 01-8.7 0c-9.11-9.78-23.71-20.42-44.11-20.42L206 168a4 4 0 00-2.75 6.84l124 123.21a3.92 3.92 0 005.95-.36zM158.84 221a4 4 0 00-6.82 2.72v.64c-.28 27.1 9.31 52.13 29.3 76.5 9.38 11.44 26.4 29.73 65.7 56.41a15.93 15.93 0 0018 0c5.15-3.49 9.9-6.84 14.31-10a4 4 0 00.46-6.07zM336 368a15.92 15.92 0 01-11.31-4.69l-176-176a16 16 0 0122.62-22.62l176 176A16 16 0 01336 368z'/></svg>\"\nexport const heartDislikeCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Dislike Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm63.73 310.36l-183.14-182.3 22.74-22.51 183.19 182.36zm-63.51 4.86c-35.36-25-66.31-51.92-74.91-62.4-20-24.37-29.58-49.4-29.3-76.5a58.27 58.27 0 01.85-9.31l130.21 129.4c-3.43 2.59-16.21 11.45-26.85 18.81zm74.47-62.4l-.31.38L197.33 169a53.8 53.8 0 0110.21-1 59.34 59.34 0 0144.1 19.41L256 192l4.36-4.6a59.34 59.34 0 0144.1-19.4c30.31 0 55.22 25.27 55.53 56.33.28 27.09-9.31 52.12-29.3 76.49z'/></svg>\"\nexport const heartDislikeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Dislike</title><path d='M417.84 448a15.94 15.94 0 01-11.35-4.72L40.65 75.26a16 16 0 0122.7-22.56l365.83 368a16 16 0 01-11.34 27.3zM364.92 80c-48.09 0-80 29.55-96.92 51-16.88-21.48-48.83-51-96.92-51a107.37 107.37 0 00-31 4.55L168 112c22.26 0 45.81 9 63.94 26.67a123 123 0 0121.75 28.47 16 16 0 0028.6 0 123 123 0 0121.77-28.51C322.19 121 342.66 112 364.92 112c43.15 0 78.62 36.33 79.07 81 .54 53.69-22.75 99.55-57.38 139.52l22.63 22.77c3-3.44 5.7-6.64 8.14-9.6 40-48.75 59.15-98.8 58.61-153C475.37 130.52 425.54 80 364.92 80zM268 432C180.38 372.51 91 297.6 92 193a83.69 83.69 0 012.24-18.39L69 149.14a115.1 115.1 0 00-9 43.49c-.54 54.22 18.63 104.27 58.61 153 18.77 22.87 52.8 59.45 131.39 112.8a31.84 31.84 0 0036 0c20.35-13.81 37.7-26.5 52.58-38.11l-22.66-22.81C300.25 409.6 284.09 421.05 268 432z'/></svg>\"\nexport const heartDislikeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Dislike</title><path d='M32 64.45l389.47 389.94 22.84-22.47L54.85 42 32 64.45zM62.67 192.91c-.56 55.63 19.77 106.94 62.16 156.88 40.25 47.42 94.56 79.67 137.47 108.21l9 6 9-6c18.49-12.3 39.1-25.3 59.79-39.89L71.74 149.28a114.62 114.62 0 00-9.07 43.63zM417.83 349.79c42.39-49.94 62.72-101.25 62.16-156.88-.63-62-50.61-112.54-111.43-112.54-48.26 0-80.35 28-97.23 48.17-16.88-20.2-49-48.17-97.23-48.17A108.24 108.24 0 00142.84 85l270 270.48c1.71-1.89 3.37-3.78 4.99-5.69z'/></svg>\"\nexport const heartHalf = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Half</title><path d='M352.92 64c-48.09 0-80 29.54-96.92 51-16.88-21.49-48.83-51-96.92-51C98.46 64 48.63 114.54 48 176.65c-.54 54.21 18.63 104.27 58.61 153 18.77 22.88 52.8 59.46 131.39 112.81a31.84 31.84 0 0036 0c78.59-53.35 112.62-89.93 131.39-112.81 40-48.74 59.15-98.8 58.61-153C463.37 114.54 413.54 64 352.92 64zM256 416V207.58c0-19.63 5.23-38.76 14.21-56.22a1.19 1.19 0 01.08-.16 123 123 0 0121.77-28.51C310.19 105 330.66 96 352.92 96c43.15 0 78.62 36.32 79.07 81C433 281.61 343.63 356.51 256 416z'/></svg>\"\nexport const heartHalfOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Half</title><path d='M352.92 64c-48.09 0-80 29.54-96.92 51-16.88-21.49-48.83-51-96.92-51C98.46 64 48.63 114.54 48 176.65c-.54 54.21 18.63 104.27 58.61 153 18.77 22.88 52.8 59.46 131.39 112.81a31.84 31.84 0 0036 0c78.59-53.35 112.62-89.93 131.39-112.81 40-48.74 59.15-98.8 58.61-153C463.37 114.54 413.54 64 352.92 64zM256 416V207.58c0-19.63 5.23-38.76 14.21-56.22a1.19 1.19 0 01.08-.16 123 123 0 0121.77-28.51C310.19 105 330.66 96 352.92 96c43.15 0 78.62 36.32 79.07 81C433 281.61 343.63 356.51 256 416z'/></svg>\"\nexport const heartHalfSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart Half</title><path d='M352.92 64c-48.11 0-80.1 28-96.92 48.21C239.18 92 207.19 64 159.08 64 98.46 64 48.63 114.54 48 176.65c-.56 55.68 19.71 107 62 157 40.12 47.46 94.25 79.75 137 108.32l9 6 9-6c42.78-28.57 96.91-60.86 137-108.32 42.25-50 62.52-101.35 62-157C463.37 114.54 413.54 64 352.92 64zm24.67 249c-31.78 37.6-74.68 65.75-112.52 90.59l-9.07 6V162.23l24.59-29.54C294.53 116 318.38 96 352.92 96c43.15 0 78.62 36.32 79.07 81a178.63 178.63 0 01-12.69 68.59c-9.03 22.84-22.67 44.91-41.71 67.41z'/></svg>\"\nexport const heartOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart</title><path d='M352.92 80C288 80 256 144 256 144s-32-64-96.92-64c-52.76 0-94.54 44.14-95.08 96.81-1.1 109.33 86.73 187.08 183 252.42a16 16 0 0018 0c96.26-65.34 184.09-143.09 183-252.42-.54-52.67-42.32-96.81-95.08-96.81z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const heartSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Heart</title><path d='M256 448l-9-6c-42.78-28.57-96.91-60.86-137-108.32-42.25-50-62.52-101.35-62-157C48.63 114.54 98.46 64 159.08 64c48.11 0 80.1 28 96.92 48.21C272.82 92 304.81 64 352.92 64c60.62 0 110.45 50.54 111.08 112.65.56 55.68-19.71 107-62 157-40.09 47.49-94.22 79.78-137 108.35z'/></svg>\"\nexport const help = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help</title><path d='M160 164s1.44-33 33.54-59.46C212.6 88.83 235.49 84.28 256 84c18.73-.23 35.47 2.94 45.48 7.82C318.59 100.2 352 120.6 352 164c0 45.67-29.18 66.37-62.35 89.18S248 298.36 248 324' stroke-linecap='round' stroke-miterlimit='10' stroke-width='40' class='ionicon-fill-none'/><circle cx='248' cy='399.99' r='32'/></svg>\"\nexport const helpBuoy = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help Buoy</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM192.13 260.18a64 64 0 1159.69 59.69 64.07 64.07 0 01-59.69-59.69zm240-66.64l-96.37 5.84a4.06 4.06 0 01-3.44-1.59 96 96 0 00-18.07-18.07 4.06 4.06 0 01-1.59-3.44l5.84-96.37a4 4 0 015.42-3.51A193 193 0 01435.6 188.12a4 4 0 01-3.51 5.42zM193.54 79.91l5.84 96.37a4.06 4.06 0 01-1.59 3.44 96 96 0 00-18.07 18.07 4.06 4.06 0 01-3.44 1.59l-96.37-5.84a4 4 0 01-3.51-5.42A193 193 0 01188.12 76.4a4 4 0 015.42 3.51zM79.91 318.46l96.37-5.84a4.06 4.06 0 013.44 1.59 96 96 0 0018.07 18.07 4.06 4.06 0 011.59 3.44l-5.84 96.37a4 4 0 01-5.42 3.51A193 193 0 0176.4 323.88a4 4 0 013.51-5.42zm238.55 113.63l-5.84-96.37a4.06 4.06 0 011.59-3.44 96 96 0 0018.07-18.07 4.06 4.06 0 013.44-1.59l96.37 5.84a4 4 0 013.51 5.42A193 193 0 01323.88 435.6a4 4 0 01-5.42-3.51z'/></svg>\"\nexport const helpBuoyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help Buoy</title><circle cx='256' cy='256' r='208' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='80' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M208 54l8 132M296 186l8-132M208 458l8-132M296 326l8 132M458 208l-132 8M326 296l132 8M54 208l132 8M186 296l-132 8' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const helpBuoySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help Buoy</title><path d='M256 32C132.29 32 32 132.29 32 256s100.29 224 224 224 224-100.29 224-224S379.71 32 256 32zm-64 224a64 64 0 1164 64 64 64 0 01-64-64zm237.24-62.29L342.91 199a104.86 104.86 0 00-29.86-29.86l5.24-86.33a185 185 0 01111 111zm-303.35-67.82a183.44 183.44 0 0167.82-43.13l5.29 86.33A104.86 104.86 0 00169.09 199l-86.33-5.24a183.44 183.44 0 0143.13-67.87zm-43.13 192.4l86.33-5.24A104.86 104.86 0 00199 342.91l-5.24 86.33a185 185 0 01-111-110.95zm303.35 67.82a183.44 183.44 0 01-67.82 43.13l-5.24-86.33a104.86 104.86 0 0029.86-29.86l86.33 5.24a183.44 183.44 0 01-43.13 67.82z'/></svg>\"\nexport const helpCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help Circle</title><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64zm-6 304a20 20 0 1120-20 20 20 0 01-20 20zm33.44-102C267.23 276.88 265 286.85 265 296a14 14 0 01-28 0c0-21.91 10.08-39.33 30.82-53.26C287.1 229.8 298 221.6 298 203.57c0-12.26-7-21.57-21.49-28.46-3.41-1.62-11-3.2-20.34-3.09-11.72.15-20.82 2.95-27.83 8.59C215.12 191.25 214 202.83 214 203a14 14 0 11-28-1.35c.11-2.43 1.8-24.32 24.77-42.8 11.91-9.58 27.06-14.56 45-14.78 12.7-.15 24.63 2 32.72 5.82C312.7 161.34 326 180.43 326 203.57c0 33.83-22.61 49.02-42.56 62.43z'/></svg>\"\nexport const helpCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help Circle</title><path d='M256 80a176 176 0 10176 176A176 176 0 00256 80z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M200 202.29s.84-17.5 19.57-32.57C230.68 160.77 244 158.18 256 158c10.93-.14 20.69 1.67 26.53 4.45 10 4.76 29.47 16.38 29.47 41.09 0 26-17 37.81-36.37 50.8S251 281.43 251 296' stroke-linecap='round' stroke-miterlimit='10' stroke-width='28' class='ionicon-fill-none'/><circle cx='250' cy='348' r='20'/></svg>\"\nexport const helpCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help Circle</title><path d='M288.55 150.84c-8.09-3.86-20-6-32.72-5.82-18 .22-33.13 5.2-45 14.78-23 18.48-24.55 40.37-24.77 42.8a61.69 61.69 0 00-.09 12 3 3 0 003 2.69h21.23a3 3 0 003-3A65.7 65.7 0 01214 204c0-.11 1.14-11.7 14.36-22.34 7-5.64 16.11-8.44 27.83-8.59 9.32-.11 16.93 1.47 20.34 3.09C291 183 298 192.31 298 204.57c0 18-10.9 26.23-30.18 39.18C247.08 257.68 237 275.1 237 297v11a3 3 0 003 3h22a3 3 0 003-3v-11c0-9.16 2.23-19.13 18.44-30 19.95-13.41 42.56-28.6 42.56-62.43 0-23.14-13.3-42.23-37.45-53.73z' class='ionicon-fill-none'/><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64zm10.44 302h-30.21a2.57 2.57 0 01-2.56-2.57v-30.2a2.57 2.57 0 012.56-2.57h30.21a2.57 2.57 0 012.56 2.57v30.2a2.57 2.57 0 01-2.56 2.57zm17-99C267.23 277.88 265 287.85 265 297v11a3 3 0 01-3 3h-22a3 3 0 01-3-3v-11c0-21.91 10.08-39.33 30.82-53.26C287.1 230.8 298 222.6 298 204.57c0-12.26-7-21.57-21.49-28.46-3.41-1.62-11-3.2-20.34-3.09-11.72.15-20.82 2.95-27.83 8.59C215.12 192.25 214 203.84 214 204a65.7 65.7 0 00-.84 10.28 3 3 0 01-3 3h-21.25a3 3 0 01-3-2.69 61.69 61.69 0 01.09-12c.22-2.43 1.8-24.32 24.77-42.8 11.91-9.58 27.06-14.56 45-14.78 12.7-.15 24.63 2 32.72 5.82 24.21 11.51 37.51 30.6 37.51 53.74 0 33.83-22.61 49.02-42.56 62.43z'/></svg>\"\nexport const helpOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help</title><path d='M160 164s1.44-33 33.54-59.46C212.6 88.83 235.49 84.28 256 84c18.73-.23 35.47 2.94 45.48 7.82C318.59 100.2 352 120.6 352 164c0 45.67-29.18 66.37-62.35 89.18S248 298.36 248 324' stroke-linecap='round' stroke-miterlimit='10' stroke-width='40' class='ionicon-fill-none'/><circle cx='248' cy='399.99' r='32'/></svg>\"\nexport const helpSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Help</title><path d='M160 164c0-10 1.44-33 33.54-59.46C212.6 88.83 235.49 84.28 256 84c18.73-.23 35.47 2.94 45.48 7.82C318.59 100.2 352 120.6 352 164c0 45.67-29.18 66.37-62.35 89.18S248 290.36 248 316' stroke-linecap='square' stroke-miterlimit='10' stroke-width='40' class='ionicon-fill-none'/><rect x='220' y='368' width='56' height='56' rx='3.5' ry='3.5'/></svg>\"\nexport const home = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Home</title><path d='M261.56 101.28a8 8 0 00-11.06 0L66.4 277.15a8 8 0 00-2.47 5.79L63.9 448a32 32 0 0032 32H192a16 16 0 0016-16V328a8 8 0 018-8h80a8 8 0 018 8v136a16 16 0 0016 16h96.06a32 32 0 0032-32V282.94a8 8 0 00-2.47-5.79z'/><path d='M490.91 244.15l-74.8-71.56V64a16 16 0 00-16-16h-48a16 16 0 00-16 16v32l-57.92-55.38C272.77 35.14 264.71 32 256 32c-8.68 0-16.72 3.14-22.14 8.63l-212.7 203.5c-6.22 6-7 15.87-1.34 22.37A16 16 0 0043 267.56L250.5 69.28a8 8 0 0111.06 0l207.52 198.28a16 16 0 0022.59-.44c6.14-6.36 5.63-16.86-.76-22.97z'/></svg>\"\nexport const homeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Home</title><path d='M80 212v236a16 16 0 0016 16h96V328a24 24 0 0124-24h80a24 24 0 0124 24v136h96a16 16 0 0016-16V212' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M480 256L266.89 52c-5-5.28-16.69-5.34-21.78 0L32 256M400 179V64h-48v69' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const homeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Home</title><path d='M416 174.74V48h-80v58.45L256 32 0 272h64v208h144V320h96v160h144V272h64l-96-97.26z'/></svg>\"\nexport const hourglass = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hourglass</title><path d='M415.7 427.13c-8.74-76.89-43.83-108.76-69.46-132C328.52 279 320 270.61 320 256c0-14.41 8.49-22.64 26.16-38.44 25.93-23.17 61.44-54.91 69.56-132.84a47 47 0 00-12-36.26A50.3 50.3 0 00366.39 32H145.61a50.34 50.34 0 00-37.39 16.46 47.05 47.05 0 00-11.94 36.26c8.09 77.68 43.47 109.19 69.3 132.19C183.42 232.8 192 241.09 192 256c0 15.1-8.6 23.56-26.5 39.75-25.5 23.1-60.5 54.73-69.2 131.38a46.59 46.59 0 0011.7 36.2A50.44 50.44 0 00145.61 480h220.78A50.44 50.44 0 00404 463.33a46.59 46.59 0 0011.7-36.2zM343.3 432H169.13c-15.6 0-20-18-9.06-29.16C186.55 376 240 356.78 240 326V224c0-19.85-38-35-61.51-67.2-3.88-5.31-3.49-12.8 6.37-12.8h142.73c8.41 0 10.22 7.43 6.4 12.75C310.82 189 272 204.05 272 224v102c0 30.53 55.71 47 80.4 76.87 9.95 12.04 6.47 29.13-9.1 29.13z'/></svg>\"\nexport const hourglassOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hourglass</title><path d='M145.61 464h220.78c19.8 0 35.55-16.29 33.42-35.06C386.06 308 304 310 304 256s83.11-51 95.8-172.94c2-18.78-13.61-35.06-33.41-35.06H145.61c-19.8 0-35.37 16.28-33.41 35.06C124.89 205 208 201 208 256s-82.06 52-95.8 172.94c-2.14 18.77 13.61 35.06 33.41 35.06z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M343.3 432H169.13c-15.6 0-20-18-9.06-29.16C186.55 376 240 356.78 240 326V224c0-19.85-38-35-61.51-67.2-3.88-5.31-3.49-12.8 6.37-12.8h142.73c8.41 0 10.23 7.43 6.4 12.75C310.82 189 272 204.05 272 224v102c0 30.53 55.71 47 80.4 76.87 9.95 12.04 6.47 29.13-9.1 29.13z'/></svg>\"\nexport const hourglassSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Hourglass</title><path d='M416 32H96v112l108 112L96 368v112h320V368L308 256l108-112zM272 224v112l91 96H148l92-96V224l-80-80h192z'/></svg>\"\nexport const iceCream = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ice Cream</title><path d='M183 352c-21.84-.52-39-18.9-39-40.74v-34.07a8 8 0 00-6-7.74c-33.75-8.85-58-39.71-58-77.45a80.14 80.14 0 0166.27-78.82 8 8 0 006.62-6.83 104 104 0 01206.22 0 8 8 0 006.62 6.83A80 80 0 01352 272a74.33 74.33 0 01-47.45-17.41 7.93 7.93 0 00-9.92-.14A62.89 62.89 0 01256 268a80.47 80.47 0 01-21.8-3.18 8 8 0 00-10.2 7.69V312a40 40 0 01-41 40z'/><path d='M263.39 299.7a8 8 0 00-7.39 7.91V312a72.11 72.11 0 01-50.69 68.76 8 8 0 00-4.91 10.78l40.91 94.8A16 16 0 00256 496a16 16 0 0014.69-9.7l73.78-172.15a8 8 0 00-6.2-11.07 106.31 106.31 0 01-35.9-11.59 8 8 0 00-7.13-.2 95 95 0 01-31.85 8.41z'/></svg>\"\nexport const iceCreamOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ice Cream</title><path stroke-linecap='round' stroke-linejoin='round' d='M352 256l-96 224-62-145' class='ionicon-fill-none ionicon-stroke-width'/><path d='M299.42 223.48C291.74 239.75 275.18 252 256 252c-13.1 0-27-5-33.63-9.76C216.27 237.87 208 240 208 250v62a24.07 24.07 0 01-24 24h0a24.07 24.07 0 01-24-24v-56h-2c-35.35 0-62-28.65-62-64a64 64 0 0164-64h8v-8a88 88 0 01176 0v8h8a64 64 0 010 128c-21.78 0-42-13-52.59-32.51z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const iceCreamSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ice Cream</title><path d='M359.72 112.37a104 104 0 00-207.44 0A80.12 80.12 0 0080 192c0 39.36 26.37 71.23 62.38 78.46a2 2 0 011.62 2v38.83c0 21.84 17.2 40.22 39 40.74a40 40 0 0041-40v-47.84a2 2 0 012.72-1.86A83.47 83.47 0 00256 268a63.18 63.18 0 0042.24-16.59 2 2 0 012.74 0A74.63 74.63 0 00352 272a80 80 0 007.72-159.63z'/><path d='M256 300v12a72.1 72.1 0 01-58.21 70.64L256 496l92.06-192.08a105.29 105.29 0 01-49.18-14.36A93.75 93.75 0 01256 300z'/></svg>\"\nexport const idCard = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Id Card</title><path d='M368 16H144a64.07 64.07 0 00-64 64v352a64.07 64.07 0 0064 64h224a64.07 64.07 0 0064-64V80a64.07 64.07 0 00-64-64zm-34.52 268.51c7.57 8.17 11.27 19.16 10.39 30.94C342.14 338.91 324.25 358 304 358s-38.17-19.09-39.88-42.55c-.86-11.9 2.81-22.91 10.34-31S292.4 272 304 272a39.65 39.65 0 0129.48 12.51zM192 80a16 16 0 0116-16h96a16 16 0 010 32h-96a16 16 0 01-16-16zm189 363.83a12.05 12.05 0 01-9.31 4.17H236.31a12.05 12.05 0 01-9.31-4.17 13 13 0 01-2.76-10.92c3.25-17.56 13.38-32.31 29.3-42.66C267.68 381.06 285.6 376 304 376s36.32 5.06 50.46 14.25c15.92 10.35 26.05 25.1 29.3 42.66a13 13 0 01-2.76 10.92z'/></svg>\"\nexport const idCardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Id Card</title><rect x='96' y='32' width='320' height='448' rx='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M208 80h96' class='ionicon-fill-none ionicon-stroke-width'/><path d='M333.48 284.51A39.65 39.65 0 00304 272c-11.6 0-22.09 4.41-29.54 12.43s-11.2 19.12-10.34 31C265.83 338.91 283.72 358 304 358s38.14-19.09 39.87-42.55c.88-11.78-2.82-22.77-10.39-30.94zM371.69 448H236.31a12.05 12.05 0 01-9.31-4.17 13 13 0 01-2.76-10.92c3.25-17.56 13.38-32.31 29.3-42.66C267.68 381.06 285.6 376 304 376s36.32 5.06 50.46 14.25c15.92 10.35 26.05 25.1 29.3 42.66a13 13 0 01-2.76 10.92 12.05 12.05 0 01-9.31 4.17z'/></svg>\"\nexport const idCardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Id Card</title><path d='M408 16H104a24 24 0 00-24 24v432a24 24 0 0024 24h304a24 24 0 0024-24V40a24 24 0 00-24-24zm-61.1 296.77a43 43 0 11-40.71-40.71 43 43 0 0140.71 40.71zM192 64h128v32H192zm192 384H224v-24.6c0-32.72 53.27-49.21 80-49.21s80 16.49 80 49.21z'/></svg>\"\nexport const image = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Image</title><path d='M416 64H96a64.07 64.07 0 00-64 64v256a64.07 64.07 0 0064 64h320a64.07 64.07 0 0064-64V128a64.07 64.07 0 00-64-64zm-80 64a48 48 0 11-48 48 48.05 48.05 0 0148-48zM96 416a32 32 0 01-32-32v-67.63l94.84-84.3a48.06 48.06 0 0165.8 1.9l64.95 64.81L172.37 416zm352-32a32 32 0 01-32 32H217.63l121.42-121.42a47.72 47.72 0 0161.64-.16L448 333.84z'/></svg>\"\nexport const imageOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Image</title><rect x='48' y='80' width='416' height='352' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='336' cy='176' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M304 335.79l-90.66-90.49a32 32 0 00-43.87-1.3L48 352M224 432l123.34-123.34a32 32 0 0143.11-2L464 368' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const imageSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Image</title><path d='M456 64H56a24 24 0 00-24 24v336a24 24 0 0024 24h400a24 24 0 0024-24V88a24 24 0 00-24-24zm-124.38 64.2a48 48 0 11-43.42 43.42 48 48 0 0143.42-43.42zM76 416a12 12 0 01-12-12v-87.63L192.64 202l96.95 96.75L172.37 416zm372-12a12 12 0 01-12 12H217.63l149.53-149.53L448 333.84z'/></svg>\"\nexport const images = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Images</title><path d='M450.29 112H142c-34 0-62 27.51-62 61.33v245.34c0 33.82 28 61.33 62 61.33h308c34 0 62-26.18 62-60V173.33c0-33.82-27.68-61.33-61.71-61.33zm-77.15 61.34a46 46 0 11-46.28 46 46.19 46.19 0 0146.28-46.01zm-231.55 276c-17 0-29.86-13.75-29.86-30.66v-64.83l90.46-80.79a46.54 46.54 0 0163.44 1.83L328.27 337l-113 112.33zM480 418.67a30.67 30.67 0 01-30.71 30.66H259L376.08 333a46.24 46.24 0 0159.44-.16L480 370.59z'/><path d='M384 32H64A64 64 0 000 96v256a64.11 64.11 0 0048 62V152a72 72 0 0172-72h326a64.11 64.11 0 00-62-48z'/></svg>\"\nexport const imagesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Images</title><path d='M432 112V96a48.14 48.14 0 00-48-48H64a48.14 48.14 0 00-48 48v256a48.14 48.14 0 0048 48h16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='128' width='400' height='336' rx='45.99' ry='45.99' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><ellipse cx='372.92' cy='219.64' rx='30.77' ry='30.55' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M342.15 372.17L255 285.78a30.93 30.93 0 00-42.18-1.21L96 387.64M265.23 464l118.59-117.73a31 31 0 0141.46-1.87L496 402.91' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const imagesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Images</title><ellipse cx='373.14' cy='219.33' rx='46.29' ry='46' class='ionicon-fill-none'/><path d='M80 132v328a20 20 0 0020 20h392a20 20 0 0020-20V132a20 20 0 00-20-20H100a20 20 0 00-20 20zm293.14 41.33a46 46 0 11-46.28 46 46.19 46.19 0 0146.28-46zm-261.41 276v-95.48l122.76-110.2L328.27 337l-113 112.33zm368.27 0H259l144.58-144L480 370.59z'/><path d='M20 32A20 20 0 000 52v344a20 20 0 0020 20h28V100a20 20 0 0120-20h380V52a20 20 0 00-20-20z'/></svg>\"\nexport const infinite = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Infinite</title><path d='M256 256s-48-96-126-96c-54.12 0-98 43-98 96s43.88 96 98 96c30 0 56.45-13.18 78-32M256 256s48 96 126 96c54.12 0 98-43 98-96s-43.88-96-98-96c-29.37 0-56.66 13.75-78 32' stroke-linecap='round' stroke-miterlimit='10' stroke-width='48' class='ionicon-fill-none'/></svg>\"\nexport const infiniteOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Infinite</title><path d='M256 256s-48-96-126-96c-54.12 0-98 43-98 96s43.88 96 98 96c37.51 0 71-22.41 94-48M256 256s48 96 126 96c54.12 0 98-43 98-96s-43.88-96-98-96c-37.51 0-71 22.41-94 48' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const infiniteSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Infinite</title><path d='M382 136c-40.87 0-73.46 20.53-93.6 37.76l-.71.61-11.47 12.47 25.32 41.61 18.74-18.79C339.89 193.1 361.78 184 382 184c40.8 0 74 32.3 74 72s-33.2 72-74 72c-62 0-104.14-81.95-104.56-82.78C275 240.29 221.56 136 130 136 62.73 136 8 189.83 8 256s54.73 120 122 120c32.95 0 65.38-13.11 93.79-37.92l.61-.54 11.38-12.38-25.33-41.61-18.83 18.88C172 319.4 151.26 328 130 328c-40.8 0-74-32.3-74-72s33.2-72 74-72c62 0 104.14 81.95 104.56 82.78C237 271.71 290.44 376 382 376c67.27 0 122-53.83 122-120s-54.73-120-122-120z'/></svg>\"\nexport const information = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Information</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='40' d='M196 220h64v172' class='ionicon-fill-none'/><path stroke-linecap='round' stroke-miterlimit='10' stroke-width='40' d='M187 396h138' class='ionicon-fill-none'/><path d='M256 160a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const informationCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Information Circle</title><path d='M256 56C145.72 56 56 145.72 56 256s89.72 200 200 200 200-89.72 200-200S366.28 56 256 56zm0 82a26 26 0 11-26 26 26 26 0 0126-26zm48 226h-88a16 16 0 010-32h28v-88h-16a16 16 0 010-32h32a16 16 0 0116 16v104h28a16 16 0 010 32z'/></svg>\"\nexport const informationCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Information Circle</title><path d='M248 64C146.39 64 64 146.39 64 248s82.39 184 184 184 184-82.39 184-184S349.61 64 248 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M220 220h32v116' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M208 340h88' class='ionicon-fill-none ionicon-stroke-width'/><path d='M248 130a26 26 0 1026 26 26 26 0 00-26-26z'/></svg>\"\nexport const informationCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Information Circle</title><path d='M256 56C145.72 56 56 145.72 56 256s89.72 200 200 200 200-89.72 200-200S366.28 56 256 56zm0 82a26 26 0 11-26 26 26 26 0 0126-26zm64 226H200v-32h44v-88h-32v-32h64v120h44z'/></svg>\"\nexport const informationOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Information</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='40' d='M196 220h64v172' class='ionicon-fill-none'/><path stroke-linecap='round' stroke-miterlimit='10' stroke-width='40' d='M187 396h138' class='ionicon-fill-none'/><path d='M256 160a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const informationSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Information</title><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='40' d='M196 220h64v172M187 396h138' class='ionicon-fill-none'/><path d='M256 160a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const invertMode = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Invert Mode</title><circle stroke-miterlimit='10' cx='256' cy='256' r='208' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 176v160a80 80 0 000-160zM256 48v128a80 80 0 000 160v128c-114.88 0-208-93.12-208-208S141.12 48 256 48z'/></svg>\"\nexport const invertModeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Invert Mode</title><circle stroke-miterlimit='10' cx='256' cy='256' r='208' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 176v160a80 80 0 010-160zM256 48v128a80 80 0 010 160v128c114.88 0 208-93.12 208-208S370.88 48 256 48z'/></svg>\"\nexport const invertModeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Invert Mode</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM256 432v-96a80 80 0 010-160V80c97.05 0 176 79 176 176s-78.95 176-176 176z'/><path d='M336 256a80 80 0 00-80-80v160a80 80 0 0080-80z'/></svg>\"\nexport const journal = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Journal</title><path d='M290 32H144a64.07 64.07 0 00-64 64v320a64.07 64.07 0 0064 64h146zM368 32h-18v448h18a64.07 64.07 0 0064-64V96a64.07 64.07 0 00-64-64z'/></svg>\"\nexport const journalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Journal</title><rect x='96' y='48' width='320' height='416' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' stroke-width='60' d='M320 48v416' class='ionicon-fill-none'/></svg>\"\nexport const journalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Journal</title><path d='M290 32H104a24 24 0 00-24 24v400a24 24 0 0024 24h186zM408 32h-58v448h58a24 24 0 0024-24V56a24 24 0 00-24-24z'/></svg>\"\nexport const key = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Key</title><path d='M218.1 167.17c0 13 0 25.6 4.1 37.4-43.1 50.6-156.9 184.3-167.5 194.5a20.17 20.17 0 00-6.7 15c0 8.5 5.2 16.7 9.6 21.3 6.6 6.9 34.8 33 40 28 15.4-15 18.5-19 24.8-25.2 9.5-9.3-1-28.3 2.3-36s6.8-9.2 12.5-10.4 15.8 2.9 23.7 3c8.3.1 12.8-3.4 19-9.2 5-4.6 8.6-8.9 8.7-15.6.2-9-12.8-20.9-3.1-30.4s23.7 6.2 34 5 22.8-15.5 24.1-21.6-11.7-21.8-9.7-30.7c.7-3 6.8-10 11.4-11s25 6.9 29.6 5.9c5.6-1.2 12.1-7.1 17.4-10.4 15.5 6.7 29.6 9.4 47.7 9.4 68.5 0 124-53.4 124-119.2S408.5 48 340 48s-121.9 53.37-121.9 119.17zM400 144a32 32 0 11-32-32 32 32 0 0132 32z'/></svg>\"\nexport const keyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Key</title><path d='M218.1 167.17c0 13 0 25.6 4.1 37.4-43.1 50.6-156.9 184.3-167.5 194.5a20.17 20.17 0 00-6.7 15c0 8.5 5.2 16.7 9.6 21.3 6.6 6.9 34.8 33 40 28 15.4-15 18.5-19 24.8-25.2 9.5-9.3-1-28.3 2.3-36s6.8-9.2 12.5-10.4 15.8 2.9 23.7 3c8.3.1 12.8-3.4 19-9.2 5-4.6 8.6-8.9 8.7-15.6.2-9-12.8-20.9-3.1-30.4s23.7 6.2 34 5 22.8-15.5 24.1-21.6-11.7-21.8-9.7-30.7c.7-3 6.8-10 11.4-11s25 6.9 29.6 5.9c5.6-1.2 12.1-7.1 17.4-10.4 15.5 6.7 29.6 9.4 47.7 9.4 68.5 0 124-53.4 124-119.2S408.5 48 340 48s-121.9 53.37-121.9 119.17zM400 144a32 32 0 11-32-32 32 32 0 0132 32z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const keySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Key</title><path d='M218.1 167.2c0 13 0 25.6 4.1 37.4-43.1 50.6-167.5 194.5-167.5 194.5l2.9 36.3s34.8 33 40 28c15.4-15 24.8-25.2 24.8-25.2l7.24-43.35 47.11-3.47 3.78-46.8 49.63-.95.49-50.09 52.69 2.1 9-18.84c15.5 6.7 29.6 9.4 47.7 9.4 68.5 0 124-53.4 124-119.2S408.5 48 340 48s-121.9 53.4-121.9 119.2zM406.85 144A38.85 38.85 0 11368 105.15 38.81 38.81 0 01406.85 144z'/></svg>\"\nexport const keypad = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Keypad</title><path d='M256 400a48 48 0 1048 48 48 48 0 00-48-48zM256 272a48 48 0 1048 48 48 48 0 00-48-48zM256 144a48 48 0 1048 48 48 48 0 00-48-48zM256 16a48 48 0 1048 48 48 48 0 00-48-48zM384 272a48 48 0 1048 48 48 48 0 00-48-48zM384 144a48 48 0 1048 48 48 48 0 00-48-48zM384 16a48 48 0 1048 48 48 48 0 00-48-48zM128 272a48 48 0 1048 48 48 48 0 00-48-48zM128 144a48 48 0 1048 48 48 48 0 00-48-48zM128 16a48 48 0 1048 48 48 48 0 00-48-48z'/></svg>\"\nexport const keypadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Keypad</title><circle cx='256' cy='448' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='320' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M288 192a32 32 0 11-32-32 32 32 0 0132 32z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='64' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='320' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='192' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='64' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='128' cy='320' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='128' cy='192' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='128' cy='64' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const keypadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Keypad</title><rect x='80' y='16' width='96' height='96' rx='8' ry='8'/><rect x='208' y='16' width='96' height='96' rx='8' ry='8'/><rect x='336' y='16' width='96' height='96' rx='8' ry='8'/><rect x='80' y='144' width='96' height='96' rx='8' ry='8'/><rect x='208' y='144' width='96' height='96' rx='8' ry='8'/><rect x='336' y='144' width='96' height='96' rx='8' ry='8'/><rect x='80' y='272' width='96' height='96' rx='8' ry='8'/><rect x='208' y='272' width='96' height='96' rx='8' ry='8'/><rect x='208' y='400' width='96' height='96' rx='8' ry='8'/><rect x='336' y='272' width='96' height='96' rx='8' ry='8'/></svg>\"\nexport const language = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Language</title><path d='M478.33 433.6l-90-218a22 22 0 00-40.67 0l-90 218a22 22 0 1040.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 00458 464a22 22 0 0020.32-30.4zM334.83 362L368 281.65 401.17 362zM267.84 342.92a22 22 0 00-4.89-30.7c-.2-.15-15-11.13-36.49-34.73 39.65-53.68 62.11-114.75 71.27-143.49H330a22 22 0 000-44H214V70a22 22 0 00-44 0v20H54a22 22 0 000 44h197.25c-9.52 26.95-27.05 69.5-53.79 108.36-31.41-41.68-43.08-68.65-43.17-68.87a22 22 0 00-40.58 17c.58 1.38 14.55 34.23 52.86 83.93.92 1.19 1.83 2.35 2.74 3.51-39.24 44.35-77.74 71.86-93.85 80.74a22 22 0 1021.07 38.63c2.16-1.18 48.6-26.89 101.63-85.59 22.52 24.08 38 35.44 38.93 36.1a22 22 0 0030.75-4.9z'/></svg>\"\nexport const languageOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Language</title><path stroke-linecap='round' stroke-linejoin='round' d='M48 112h288M192 64v48M272 448l96-224 96 224M301.5 384h133M281.3 112S257 206 199 277 80 384 80 384' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 336s-35-27-72-75-56-85-56-85' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const languageSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Language</title><path d='M363 176L246 464h47.24l24.49-58h90.54l24.49 58H480zm-26.69 186L363 279.85 389.69 362zM272 320c-.25-.19-20.59-15.77-45.42-42.67 39.58-53.64 62-114.61 71.15-143.33H352V90H214V48h-44v42H32v44h219.25c-9.52 26.95-27.05 69.5-53.79 108.36-32.68-43.44-47.14-75.88-47.33-76.22L143 152l-38 22 6.87 13.86c.89 1.56 17.19 37.9 54.71 86.57.92 1.21 1.85 2.39 2.78 3.57-49.72 56.86-89.15 79.09-89.66 79.47L64 368l23 36 19.3-11.47c2.2-1.67 41.33-24 92-80.78 24.52 26.28 43.22 40.83 44.3 41.67L255 362z'/></svg>\"\nexport const laptop = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Laptop</title><path d='M496 400h-28.34A47.92 47.92 0 00480 367.86V128.14A48.2 48.2 0 00431.86 80H80.14A48.2 48.2 0 0032 128.14v239.72A47.92 47.92 0 0044.34 400H16a16 16 0 000 32h480a16 16 0 000-32z'/></svg>\"\nexport const laptopOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Laptop</title><rect x='48' y='96' width='416' height='304' rx='32.14' ry='32.14' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M16 416h480' class='ionicon-stroke-width'/></svg>\"\nexport const laptopSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Laptop</title><path d='M477.29 400a27.75 27.75 0 002.71-12V108a28 28 0 00-28-28H60a28 28 0 00-28 28v280a27.75 27.75 0 002.71 12H0v32h512v-32z'/></svg>\"\nexport const layers = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Layers</title><path d='M256 256c-13.47 0-26.94-2.39-37.44-7.17l-148-67.49C63.79 178.26 48 169.25 48 152.24s15.79-26 22.58-29.12l149.28-68.07c20.57-9.4 51.61-9.4 72.19 0l149.37 68.07c6.79 3.09 22.58 12.1 22.58 29.12s-15.79 26-22.58 29.11l-148 67.48C282.94 253.61 269.47 256 256 256zm176.76-100.86z'/><path d='M441.36 226.81L426.27 220l-38.77 17.74-94 43c-10.5 4.8-24 7.19-37.44 7.19s-26.93-2.39-37.42-7.19l-94.07-43L85.79 220l-15.22 6.84C63.79 229.93 48 239 48 256s15.79 26.08 22.56 29.17l148 67.63C229 357.6 242.49 360 256 360s26.94-2.4 37.44-7.19l147.87-67.61c6.81-3.09 22.69-12.11 22.69-29.2s-15.77-26.07-22.64-29.19z'/><path d='M441.36 330.8l-15.09-6.8-38.77 17.73-94 42.95c-10.5 4.78-24 7.18-37.44 7.18s-26.93-2.39-37.42-7.18l-94.07-43L85.79 324l-15.22 6.84C63.79 333.93 48 343 48 360s15.79 26.07 22.56 29.15l148 67.59C229 461.52 242.54 464 256 464s26.88-2.48 37.38-7.27l147.92-67.57c6.82-3.08 22.7-12.1 22.7-29.16s-15.77-26.07-22.64-29.2z'/></svg>\"\nexport const layersOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Layers</title><path d='M434.8 137.65l-149.36-68.1c-16.19-7.4-42.69-7.4-58.88 0L77.3 137.65c-17.6 8-17.6 21.09 0 29.09l148 67.5c16.89 7.7 44.69 7.7 61.58 0l148-67.5c17.52-8 17.52-21.1-.08-29.09zM160 308.52l-82.7 37.11c-17.6 8-17.6 21.1 0 29.1l148 67.5c16.89 7.69 44.69 7.69 61.58 0l148-67.5c17.6-8 17.6-21.1 0-29.1l-79.94-38.47' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 204.48l-82.8 37.16c-17.6 8-17.6 21.1 0 29.1l148 67.49c16.89 7.7 44.69 7.7 61.58 0l148-67.49c17.7-8 17.7-21.1.1-29.1L352 204.48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const layersSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Layers</title><path d='M480 150L256 48 32 150l224 104 224-104zM255.71 392.95l-144.81-66.2L32 362l224 102 224-102-78.69-35.3-145.6 66.25z'/><path d='M480 256l-75.53-33.53L256.1 290.6l-148.77-68.17L32 256l224 102 224-102z'/></svg>\"\nexport const leaf = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Leaf</title><path d='M161.35 242a16 16 0 0122.62-.68c73.63 69.36 147.51 111.56 234.45 133.07 11.73-32 12.77-67.22 2.64-101.58-13.44-45.59-44.74-85.31-90.49-114.86-40.84-26.38-81.66-33.25-121.15-39.89-49.82-8.38-96.88-16.3-141.79-63.85-5-5.26-11.81-7.37-18.32-5.66-7.44 2-12.43 7.88-14.82 17.6-5.6 22.75-2 86.51 13.75 153.82 25.29 108.14 65.65 162.86 95.06 189.73 38 34.69 87.62 53.9 136.93 53.9a186 186 0 0027.77-2.04c41.71-6.32 76.43-27.27 96-57.75-89.49-23.28-165.94-67.55-242-139.16a16 16 0 01-.65-22.65zM467.43 384.19c-16.83-2.59-33.13-5.84-49-9.77a157.71 157.71 0 01-12.13 25.68c-.73 1.25-1.5 2.49-2.29 3.71a584.21 584.21 0 0058.56 12 16 16 0 104.87-31.62z'/></svg>\"\nexport const leafOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Leaf</title><path d='M321.89 171.42C233 114 141 155.22 56 65.22c-19.8-21-8.3 235.5 98.1 332.7 77.79 71 197.9 63.08 238.4-5.92s18.28-163.17-70.61-220.58zM173 253c86 81 175 129 292 147' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const leafSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Leaf</title><path d='M150.38 253.68l21.94-23.3 11.65 11c73.63 69.36 147.51 111.56 234.45 133.07 11.73-32 12.77-67.22 2.64-101.58-13.44-45.59-44.74-85.31-90.49-114.86-40.25-26-76.6-32.09-115.09-38.54-21.12-3.54-43-7.2-66.85-14.43-43.78-13.28-89.69-52.74-90.15-53.13L33.4 30.15 32 63.33c-.1 2.56-2.42 63.57 14.22 147.77 17.58 89 50.24 155.85 97.07 198.63 38 34.69 87.62 53.9 136.93 53.9a185.88 185.88 0 0027.78-2.07c41.72-6.32 76.43-27.27 96-57.75-89.5-23.28-165.95-67.55-242-139.16z'/><path d='M467.43 384.19c-16.83-2.59-33.13-5.84-49-9.77a158.49 158.49 0 01-12.13 25.68c-.74 1.25-1.51 2.49-2.29 3.71a583.43 583.43 0 0058.55 12l15.82 2.44 4.86-31.63z'/></svg>\"\nexport const library = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Library</title><path d='M64 480H48a32 32 0 01-32-32V112a32 32 0 0132-32h16a32 32 0 0132 32v336a32 32 0 01-32 32zM240 176a32 32 0 00-32-32h-64a32 32 0 00-32 32v28a4 4 0 004 4h120a4 4 0 004-4zM112 448a32 32 0 0032 32h64a32 32 0 0032-32v-30a2 2 0 00-2-2H114a2 2 0 00-2 2z'/><rect x='112' y='240' width='128' height='144' rx='2' ry='2'/><path d='M320 480h-32a32 32 0 01-32-32V64a32 32 0 0132-32h32a32 32 0 0132 32v384a32 32 0 01-32 32zM495.89 445.45l-32.23-340c-1.48-15.65-16.94-27-34.53-25.31l-31.85 3c-17.59 1.67-30.65 15.71-29.17 31.36l32.23 340c1.48 15.65 16.94 27 34.53 25.31l31.85-3c17.59-1.67 30.65-15.71 29.17-31.36z'/></svg>\"\nexport const libraryOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Library</title><rect x='32' y='96' width='64' height='368' rx='16' ry='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M112 224h128M112 400h128' class='ionicon-fill-none ionicon-stroke-width'/><rect x='112' y='160' width='128' height='304' rx='16' ry='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='256' y='48' width='96' height='416' rx='16' ry='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M422.46 96.11l-40.4 4.25c-11.12 1.17-19.18 11.57-17.93 23.1l34.92 321.59c1.26 11.53 11.37 20 22.49 18.84l40.4-4.25c11.12-1.17 19.18-11.57 17.93-23.1L445 115c-1.31-11.58-11.42-20.06-22.54-18.89z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const librarySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Library</title><path d='M84 480H28a12 12 0 01-12-12V92a12 12 0 0112-12h56a12 12 0 0112 12v376a12 12 0 01-12 12zM240 208v-52a12 12 0 00-12-12H124a12 12 0 00-12 12v52zM112 416v52a12 12 0 0012 12h104a12 12 0 0012-12v-52zM112 240h128v144H112zM340 480h-72a12 12 0 01-12-12V44a12 12 0 0112-12h72a12 12 0 0112 12v424a12 12 0 01-12 12zM369 100.7l30 367.83a12 12 0 0013.45 10.92l72.16-9a12 12 0 0010.47-12.9L465 91.21a12 12 0 00-13.2-10.94l-72.13 7.51A12 12 0 00369 100.7z'/></svg>\"\nexport const link = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Link</title><path d='M200.66 352H144a96 96 0 010-192h55.41M312.59 160H368a96 96 0 010 192h-56.66M169.07 256h175.86' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' class='ionicon-fill-none'/></svg>\"\nexport const linkOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Link</title><path d='M208 352h-64a96 96 0 010-192h64M304 160h64a96 96 0 010 192h-64M163.29 256h187.42' stroke-linecap='round' stroke-linejoin='round' stroke-width='36' class='ionicon-fill-none'/></svg>\"\nexport const linkSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Link</title><path d='M200.66 352H144a96 96 0 010-192h55.41M312.59 160H368a96 96 0 010 192h-56.66M169.07 256h175.86' stroke-linecap='square' stroke-linejoin='round' stroke-width='48' class='ionicon-fill-none'/></svg>\"\nexport const list = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>List</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M160 144h288M160 256h288M160 368h288' class='ionicon-fill-none'/><circle cx='80' cy='144' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='80' cy='256' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='80' cy='368' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const listCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>List Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-88 302a24 24 0 1124-24 24 24 0 01-24 24zm0-71a24 24 0 1124-24 24 24 0 01-24 24zm0-73a24 24 0 1124-24 24 24 0 01-24 24zm184 135H224a16 16 0 010-32h128a16 16 0 010 32zm0-71H224a16 16 0 010-32h128a16 16 0 010 32zm0-72H224a16 16 0 010-32h128a16 16 0 010 32z'/></svg>\"\nexport const listCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>List Circle</title><path stroke-linecap='round' stroke-linejoin='round' d='M224 184h128M224 256h128M224 327h128' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 258c0-106-86-192-192-192S64 152 64 258s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='168' cy='184' r='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='168' cy='257' r='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='168' cy='328' r='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const listCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>List Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-64 287.5a16 16 0 01-16 16h-16a16 16 0 01-16-16v-16a16 16 0 0116-16h16a16 16 0 0116 16zm0-71a16 16 0 01-16 16h-16a16 16 0 01-16-16v-16a16 16 0 0116-16h16a16 16 0 0116 16zm0-72a16 16 0 01-16 16h-16a16 16 0 01-16-16v-16a16 16 0 0116-16h16a16 16 0 0116 16zm176 151H212.67v-32H368zm0-71H212.67v-32H368zm0-72H212.67v-32H368z'/></svg>\"\nexport const listOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>List</title><path stroke-linecap='round' stroke-linejoin='round' d='M160 144h288M160 256h288M160 368h288' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='80' cy='144' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='80' cy='256' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='80' cy='368' r='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const listSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>List</title><path stroke-linejoin='round' stroke-width='48' d='M144 144h320M144 256h320M144 368h320' class='ionicon-fill-none'/><path stroke-linecap='square' stroke-linejoin='round' d='M64 128h32v32H64zM64 240h32v32H64zM64 352h32v32H64z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const locate = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Locate</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M256 96V56M256 456v-40M256 112a144 144 0 10144 144 144 144 0 00-144-144zM416 256h40M56 256h40' class='ionicon-fill-none'/></svg>\"\nexport const locateOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Locate</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M256 96V56M256 456v-40' class='ionicon-fill-none'/><path d='M256 112a144 144 0 10144 144 144 144 0 00-144-144z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M416 256h40M56 256h40' class='ionicon-fill-none'/></svg>\"\nexport const locateSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Locate</title><path stroke-linecap='square' stroke-linejoin='round' stroke-width='48' d='M256 96V56M256 456v-40M256 112a144 144 0 10144 144 144 144 0 00-144-144zM416 256h40M56 256h40' class='ionicon-fill-none'/></svg>\"\nexport const location = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Location</title><circle cx='256' cy='192' r='32'/><path d='M256 32c-88.22 0-160 68.65-160 153 0 40.17 18.31 93.59 54.42 158.78 29 52.34 62.55 99.67 80 123.22a31.75 31.75 0 0051.22 0c17.42-23.55 51-70.88 80-123.22C397.69 278.61 416 225.19 416 185c0-84.35-71.78-153-160-153zm0 224a64 64 0 1164-64 64.07 64.07 0 01-64 64z'/></svg>\"\nexport const locationOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Location</title><path d='M256 48c-79.5 0-144 61.39-144 137 0 87 96 224.87 131.25 272.49a15.77 15.77 0 0025.5 0C304 409.89 400 272.07 400 185c0-75.61-64.5-137-144-137z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='192' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const locationSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Location</title><path d='M256 32C167.67 32 96 96.51 96 176c0 128 160 304 160 304s160-176 160-304c0-79.49-71.67-144-160-144zm0 224a64 64 0 1164-64 64.07 64.07 0 01-64 64z'/></svg>\"\nexport const lockClosed = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Lock Closed</title><path d='M368 192h-16v-80a96 96 0 10-192 0v80h-16a64.07 64.07 0 00-64 64v176a64.07 64.07 0 0064 64h224a64.07 64.07 0 0064-64V256a64.07 64.07 0 00-64-64zm-48 0H192v-80a64 64 0 11128 0z'/></svg>\"\nexport const lockClosedOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Lock Closed</title><path d='M336 208v-95a80 80 0 00-160 0v95' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='208' width='320' height='272' rx='48' ry='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const lockClosedSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Lock Closed</title><path d='M420 192h-68v-80a96 96 0 10-192 0v80H92a12 12 0 00-12 12v280a12 12 0 0012 12h328a12 12 0 0012-12V204a12 12 0 00-12-12zm-106 0H198v-80.75a58 58 0 11116 0z'/></svg>\"\nexport const lockOpen = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Lock Open</title><path d='M368 192H192v-80a64 64 0 11128 0 16 16 0 0032 0 96 96 0 10-192 0v80h-16a64.07 64.07 0 00-64 64v176a64.07 64.07 0 0064 64h224a64.07 64.07 0 0064-64V256a64.07 64.07 0 00-64-64z'/></svg>\"\nexport const lockOpenOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Lock Open</title><path d='M336 112a80 80 0 00-160 0v96' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='208' width='320' height='272' rx='48' ry='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const lockOpenSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Lock Open</title><path d='M420 192H198v-80.75a58.08 58.08 0 0199.07-41.07A59.4 59.4 0 01314 112h38a96 96 0 10-192 0v80H92a12 12 0 00-12 12v280a12 12 0 0012 12h328a12 12 0 0012-12V204a12 12 0 00-12-12z'/></svg>\"\nexport const logIn = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Log In</title><path d='M392 80H232a56.06 56.06 0 00-56 56v104h153.37l-52.68-52.69a16 16 0 0122.62-22.62l80 80a16 16 0 010 22.62l-80 80a16 16 0 01-22.62-22.62L329.37 272H176v104c0 32.05 33.79 56 64 56h152a56.06 56.06 0 0056-56V136a56.06 56.06 0 00-56-56zM80 240a16 16 0 000 32h96v-32z'/></svg>\"\nexport const logInOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Log In</title><path d='M192 176v-40a40 40 0 0140-40h160a40 40 0 0140 40v240a40 40 0 01-40 40H240c-22.09 0-48-17.91-48-40v-40' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M288 336l80-80-80-80M80 256h272' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const logInSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Log In</title><path d='M432 80H192a16 16 0 00-16 16v144h153.37l-64-64L288 153.37l91.31 91.32a16 16 0 010 22.62L288 358.63 265.37 336l64-64H176v144a16 16 0 0016 16h240a16 16 0 0016-16V96a16 16 0 00-16-16zM64 240h112v32H64z'/></svg>\"\nexport const logOut = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Log Out</title><path d='M160 256a16 16 0 0116-16h144V136c0-32-33.79-56-64-56H104a56.06 56.06 0 00-56 56v240a56.06 56.06 0 0056 56h160a56.06 56.06 0 0056-56V272H176a16 16 0 01-16-16zM459.31 244.69l-80-80a16 16 0 00-22.62 22.62L409.37 240H320v32h89.37l-52.68 52.69a16 16 0 1022.62 22.62l80-80a16 16 0 000-22.62z'/></svg>\"\nexport const logOutOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Log Out</title><path d='M304 336v40a40 40 0 01-40 40H104a40 40 0 01-40-40V136a40 40 0 0140-40h152c22.09 0 48 17.91 48 40v40M368 336l80-80-80-80M176 256h256' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const logOutSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Log Out</title><path d='M160 240h160V96a16 16 0 00-16-16H64a16 16 0 00-16 16v320a16 16 0 0016 16h240a16 16 0 0016-16V272H160zM459.31 244.69L368 153.37 345.37 176l64 64H320v32h89.37l-64 64L368 358.63l91.31-91.32a16 16 0 000-22.62z'/></svg>\"\nexport const logoAlipay = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Alipay</title><path d='M102.41 32C62.38 32 32 64.12 32 103.78v304.45C32 447.86 64.38 480 104.41 480h303.2c40 0 72.39-32.14 72.39-71.77v-3.11c-1.35-.56-115.47-48.57-174.5-76.7-39.82 48.57-91.18 78-144.5 78-90.18 0-120.8-78.22-78.1-129.72 9.31-11.22 25.15-21.94 49.73-28 38.45-9.36 99.64 5.85 157 24.61a309.41 309.41 0 0025.46-61.67H138.34V194h91.13v-31.83H119.09v-17.75h110.38V99s0-7.65 7.82-7.65h44.55v53H391v17.75H281.84V194h89.08a359.41 359.41 0 01-37.72 94.43c27 9.69 49.31 18.88 67.39 24.89 60.32 20 77.23 22.45 79.41 22.7V103.78C480 64.12 447.6 32 407.61 32h-305.2zM152 274.73q-5.81.06-11.67.63c-11.3 1.13-32.5 6.07-44.09 16.23-34.74 30-13.94 84.93 56.37 84.93 40.87 0 81.71-25.9 113.79-67.37-41.36-20-77-34.85-114.4-34.42z'/></svg>\"\nexport const logoAmazon = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Amazon</title><path d='M48.48 378.73a300.52 300.52 0 00152.89 95.92 262.57 262.57 0 00159.3-17.25 225.52 225.52 0 0066.79-47 6.36 6.36 0 00-2-8.53 11.76 11.76 0 00-8-.05 401.92 401.92 0 01-116.55 39.34 358.13 358.13 0 01-127.29-8.83 446.73 446.73 0 01-119.1-60.49 5 5 0 00-6.06 6.9z'/><path d='M387.15 388.44a168.11 168.11 0 0148.94-2.23l.67.13a10 10 0 017.37 12.05A204.71 204.71 0 01429 444.47a2.55 2.55 0 001.66 3.18 2.51 2.51 0 002.23-.37A83.31 83.31 0 00464 382.86a12.44 12.44 0 00-10.22-13.22A95.75 95.75 0 00384.91 384a2.55 2.55 0 00-.57 3.55 2.52 2.52 0 002.81.89zM304.24 324.92a164 164 0 01-28.92 25.3A135.16 135.16 0 01208.63 369a99.49 99.49 0 01-57.49-19.85 97.25 97.25 0 01-27.36-100.28 112.35 112.35 0 0165.3-69.06 367.67 367.67 0 01104.7-15.55V127A37.82 37.82 0 00261 94.72a59.9 59.9 0 00-31.17 4.08 48.89 48.89 0 00-27.13 34.67 12 12 0 01-12.58 6.72l-50.9-4.5a11.38 11.38 0 01-8.38-10.16 103.66 103.66 0 0136.61-63.45A143.86 143.86 0 01257.85 32a146.24 146.24 0 0184.27 27.67 86.82 86.82 0 0130.7 70.22V258.8a84.46 84.46 0 008 31.28l15.87 23.23a13 13 0 010 11.23l-46.99 39.71a12.5 12.5 0 01-12.68-.44 244.84 244.84 0 01-32.78-38.89zm-10.6-116.83a257.68 257.68 0 00-44 2.89A63 63 0 00208 242.54a63 63 0 003.07 54 40.6 40.6 0 0047.11 12.19 78.61 78.61 0 0035.46-55.58v-45.06'/></svg>\"\nexport const logoAmplify = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Amplify</title><path d='M112.31 268l40.36-68.69 34.65 59-67.54 115h135L289.31 432H16zm58.57-99.76l33.27-56.67L392.44 432h-66.68zM222.67 80h66.59L496 432h-66.68z' fill-rule='evenodd'/></svg>\"\nexport const logoAndroid = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Android</title><path d='M380.91 199l42.47-73.57a8.63 8.63 0 00-3.12-11.76 8.52 8.52 0 00-11.71 3.12l-43 74.52c-32.83-15-69.78-23.35-109.52-23.35s-76.69 8.36-109.52 23.35l-43-74.52a8.6 8.6 0 10-14.88 8.64L131 199C57.8 238.64 8.19 312.77 0 399.55h512c-8.19-86.78-57.8-160.91-131.09-200.55zM138.45 327.65a21.46 21.46 0 1121.46-21.46 21.47 21.47 0 01-21.46 21.46zm235 0A21.46 21.46 0 11395 306.19a21.47 21.47 0 01-21.51 21.46z'/></svg>\"\nexport const logoAngular = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Angular</title><path d='M213.57 256h84.85l-42.43-89.36L213.57 256z'/><path d='M256 32L32 112l46.12 272L256 480l177.75-96L480 112zm88 320l-26.59-56H194.58L168 352h-40L256 72l128 280z'/></svg>\"\nexport const logoApple = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Apple</title><path d='M349.13 136.86c-40.32 0-57.36 19.24-85.44 19.24-28.79 0-50.75-19.1-85.69-19.1-34.2 0-70.67 20.88-93.83 56.45-32.52 50.16-27 144.63 25.67 225.11 18.84 28.81 44 61.12 77 61.47h.6c28.68 0 37.2-18.78 76.67-19h.6c38.88 0 46.68 18.89 75.24 18.89h.6c33-.35 59.51-36.15 78.35-64.85 13.56-20.64 18.6-31 29-54.35-76.19-28.92-88.43-136.93-13.08-178.34-23-28.8-55.32-45.48-85.79-45.48z'/><path d='M340.25 32c-24 1.63-52 16.91-68.4 36.86-14.88 18.08-27.12 44.9-22.32 70.91h1.92c25.56 0 51.72-15.39 67-35.11 14.72-18.77 25.88-45.37 21.8-72.66z'/></svg>\"\nexport const logoAppleAppstore = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Apple Appstore</title><path d='M256 32C132.26 32 32 132.26 32 256s100.26 224 224 224 224-100.26 224-224S379.74 32 256 32zm-85 321.89a15.48 15.48 0 01-13.46 7.65 14.91 14.91 0 01-7.86-2.16 15.48 15.48 0 01-5.6-21.21l15.29-25.42a8.73 8.73 0 017.54-4.3h2.26c11.09 0 18.85 6.67 21.11 13.13zm129.45-50l-100.13.11h-66.55a15.46 15.46 0 01-15.51-16.15c.32-8.4 7.65-14.76 16-14.76h48.24l57.19-97.35-18.52-31.55C217 137 218.85 127.52 226 123a15.57 15.57 0 0121.87 5.17l9.9 16.91h.11l9.91-16.91A15.58 15.58 0 01289.6 123c7.11 4.52 8.94 14 4.74 21.22l-18.52 31.55-18 30.69-39.09 66.66v.11h57.61c7.22 0 16.27 3.88 19.93 10.12l.32.65c3.23 5.49 5.06 9.26 5.06 14.75a13.82 13.82 0 01-1.17 5.17zm77.75.11h-27.11v.11l19.82 33.71a15.8 15.8 0 01-5.17 21.53 15.53 15.53 0 01-8.08 2.27A15.71 15.71 0 01344.2 354l-29.29-49.86-18.2-31L273.23 233a38.35 38.35 0 01-.65-38c4.64-8.19 8.19-10.34 8.19-10.34L333 273h44.91c8.4 0 15.61 6.46 16 14.75A15.65 15.65 0 01378.23 304z'/></svg>\"\nexport const logoAppleAr = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Apple Ar</title><path stroke-linecap='round' stroke-linejoin='round' d='M201.14 64L256 32l54.86 32' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M256 32v80' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M310.86 448L256 480l-54.86-32' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M256 480v-80' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M64 207.51V144l53.15-31.51' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M64 144l67.29 40' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M448 304.49V368l-53.15 31.51' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M448 368l-67.29-40' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M117.15 400L64 368v-63.51' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M64 368l66.64-40' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M394.85 112.49L448 144v63.51' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M448 144l-67.29 40M256 320v-64l54.86-32M256 256l-54.86-32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const logoBehance = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Behance</title><path d='M344.1 233.6c-28.9 0-32.9 28.8-32.9 28.8h61.4s.4-28.8-28.5-28.8zM204.8 262.4h-54.4v50h51.7c7.8-.2 22.4-2.4 22.4-24.3 0-26-19.7-25.7-19.7-25.7z'/><path d='M256 32C132.3 32 32 132.3 32 256s100.3 224 224 224 224-100.3 224-224S379.7 32 256 32zm47.2 137.6h77.1v23h-77.1v-23zm-39 120.8c0 57-59.4 55.2-59.4 55.2h-97.2v-187h97.2c29.6 0 52.9 16.3 52.9 49.8S229.2 244 229.2 244c37.6 0 35 46.4 35 46.4zm144.2-3.1h-96.9c0 34.7 32.9 32.5 32.9 32.5 31.1 0 30-20.1 30-20.1h32.9c0 53.4-64 49.7-64 49.7-76.7 0-71.8-71.5-71.8-71.5s-.1-71.8 71.8-71.8c75.7.1 65.1 81.2 65.1 81.2z'/><path d='M218 211.3c0-19.4-13.2-19.4-13.2-19.4h-54.4v41.7h51c8.8 0 16.6-2.9 16.6-22.3z'/></svg>\"\nexport const logoBitbucket = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Bitbucket</title><path d='M483.13 32.23a19.65 19.65 0 00-2.54-.23h-449C23 31.88 16.12 38.88 16 47.75a11.44 11.44 0 00.23 2.8l65.3 411.25a22.52 22.52 0 007 12.95A20 20 0 00102 480h313.18a15.45 15.45 0 0015.34-13.42l38.88-247.91H325.19l-18.46 112H205.21l-25.73-148h295.58l20.76-132c1.27-8.75-4.38-17.04-12.69-18.44z'/></svg>\"\nexport const logoBitcoin = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Bitcoin</title><path d='M410.47 279.2c-5-11.5-12.7-21.6-28.1-30.1a98.15 98.15 0 00-25.4-10 62.22 62.22 0 0016.3-11 56.37 56.37 0 0015.6-23.3 77.11 77.11 0 003.5-28.2c-1.1-16.8-4.4-33.1-13.2-44.8s-21.2-20.7-37.6-27c-12.6-4.8-25.5-7.8-45.5-8.9V32h-40v64h-32V32h-41v64H96v48h27.87c8.7 0 14.6.8 17.6 2.3a13.22 13.22 0 016.5 6c1.3 2.5 1.9 8.4 1.9 17.5V343c0 9-.6 14.8-1.9 17.4s-2 4.9-5.1 6.3-3.2 1.3-11.8 1.3h-26.4L96 416h87v64h41v-64h32v64h40v-64.4c26-1.3 44.5-4.7 59.4-10.3 19.3-7.2 34.1-17.7 44.7-31.5s14-34.9 14.93-51.2c.67-14.5-.03-33.2-4.56-43.4zM224 150h32v74h-32zm0 212v-90h32v90zm72-208.1c6 2.5 9.9 7.5 13.8 12.7 4.3 5.7 6.5 13.3 6.5 21.4 0 7.8-2.9 14.5-7.5 20.5-3.8 4.9-6.8 8.3-12.8 11.1zm28.8 186.7c-7.8 6.9-12.3 10.1-22.1 13.8a56.06 56.06 0 01-6.7 1.9v-82.8a40.74 40.74 0 0111.3 3.4c7.8 3.3 15.2 6.9 19.8 13.2a43.82 43.82 0 018 24.7c-.03 10.9-2.83 19.2-10.33 25.8z'/></svg>\"\nexport const logoBuffer = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Buffer</title><path d='M39.93 149.25l197.4 95.32c5.14 2.45 12 3.73 18.79 3.73s13.65-1.28 18.78-3.73l197.4-95.32c10.38-5 10.38-13.18 0-18.2L274.9 35.73c-5.13-2.45-12-3.73-18.78-3.73s-13.65 1.28-18.79 3.73l-197.4 95.32c-10.38 5.02-10.38 13.18 0 18.2z'/><path d='M472.3 246.9s-36.05-17.38-40.83-19.72-6.07-2.21-11.09.12-145.6 70.23-145.6 70.23a45.71 45.71 0 01-18.78 3.74c-6.77 0-13.65-1.29-18.78-3.74 0 0-136.85-66-143.27-69.18C87 225 85 225 78.67 228l-39 18.78c-10.38 5-10.38 13.19 0 18.2L237.1 360.3c5.13 2.45 12 3.73 18.78 3.73s13.65-1.28 18.79-3.73l197.4-95.3c10.61-4.92 10.61-13.08.23-18.1z'/><path d='M472.3 362.75s-36.05-17.38-40.83-19.75-6.07-2.21-11.09.12S274.9 413.5 274.9 413.5a45.74 45.74 0 01-18.78 3.73c-6.77 0-13.65-1.28-18.79-3.73 0 0-136.85-66-143.26-69.18-7-3.39-9-3.39-15.29-.35l-39 18.78c-10.39 5-10.39 13.18 0 18.2l197.4 95.32c5.13 2.56 12 3.73 18.78 3.73s13.65-1.28 18.78-3.73L472.18 381c10.5-5.07 10.5-13.23.12-18.25z'/></svg>\"\nexport const logoCapacitor = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Capacitor</title><path d='M480 101.09L372.37 208.72l106.86 107.06-69.3 69.3-283.22-283.23L196 32.54l107.07 106.88L410.67 32zM32.55 196l69.3-69.31 283.22 283.24-69.3 69.3-107-106.87L101.08 480 32 410.67l107.42-107.61z'/></svg>\"\nexport const logoChrome = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Chrome</title><path d='M188.8 255.93a67.2 67.2 0 1067.2-67.18 67.38 67.38 0 00-67.2 67.18z'/><path d='M476.75 217.79v.05a206.63 206.63 0 00-7-28.84h-.11a202.16 202.16 0 017.07 29 203.5 203.5 0 00-7.07-29h-155.4c19.05 17 31.36 40.17 31.36 67.05a86.55 86.55 0 01-12.31 44.73L231 478.45a2.44 2.44 0 010 .27v.28-.26a224 224 0 0025 1.26c6.84 0 13.61-.39 20.3-1a222.91 222.91 0 0029.78-4.74C405.68 451.52 480 362.4 480 255.94a225.25 225.25 0 00-3.25-38.15z'/><path d='M256 345.5c-33.6 0-61.6-17.91-77.29-44.79L76 123.05l-.14-.24A224 224 0 00207.4 474.55v-.05l77.69-134.6a84.13 84.13 0 01-29.09 5.6z'/><path d='M91.29 104.57l77.35 133.25A89.19 89.19 0 01256 166h205.17a246.51 246.51 0 00-25.78-43.94l.12.08A245.26 245.26 0 01461.17 166h.17a245.91 245.91 0 00-25.66-44 2.63 2.63 0 01-.35-.26 223.93 223.93 0 00-344.19-17.4l.14.24z'/></svg>\"\nexport const logoClosedCaptioning = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Closed Captioning</title><path d='M0 80v352h512V80zm464 175.78c0 25.74-1.6 45.32-3.77 77.22s-19.2 54.34-59.09 57.86-95.77 3.85-145.14 3.74c-49 .11-105.14-.11-145.14-3.74s-56.8-26-59.09-57.86S48 281.52 48 255.78s.11-42.46 3.77-77.22 23-54.12 59.09-57.64 98.28-3.52 145.14-3.52 109 0 145.14 3.52 55.43 23 59.09 57.64 3.77 51.59 3.77 77.22z'/><path d='M367.57 282.84v.77c0 17.93-11.11 28.49-25.95 28.49s-24.84-11.88-26.27-28.49c0 0-1.31-8.69-1.31-26.29a229.5 229.5 0 011.53-28.6c2.64-18.7 11.77-28.49 26.6-28.49s26.49 12.76 26.49 32.12v.55h49.58c0-24.09-6.05-45.76-18.25-59.4S369.76 153 345.8 153a108.06 108.06 0 00-33 4.73 58.82 58.82 0 00-25.94 16.61c-7.23 7.96-12.86 18.52-16.86 31.83s-6 30-6 50.27c0 19.8 1.65 36.3 4.84 49.61s8 23.87 14.4 31.79a49.76 49.76 0 0024 16.5q14.5 4.62 34 4.62c27.47 0 47.26-7 59.13-20.57S418 305.06 418 279.1h-50.65c.22 0 .22 2.75.22 3.74zM197.3 282.84v.77c0 17.93-11.1 28.49-25.94 28.49s-24.84-11.88-26.27-28.49c0 0-1.31-8.69-1.31-26.29a229.5 229.5 0 011.53-28.6c2.64-18.7 11.77-28.49 26.6-28.49S198.4 213 198.4 232.35v.55H248c0-24.09-6-45.76-18.25-59.4S199.5 153 175.54 153a108.06 108.06 0 00-33 4.73 58.82 58.82 0 00-25.94 16.61c-7.26 7.92-12.86 18.48-16.93 31.79s-6 30-6 50.27c0 19.8 1.65 36.3 4.84 49.61s8 23.87 14.4 31.79a49.76 49.76 0 0024 16.5q14.51 4.62 34 4.62c27.48 0 47.27-7 59.14-20.57s17.81-33.33 17.81-59.29h-50.78c.22.04.22 2.79.22 3.78z'/></svg>\"\nexport const logoCodepen = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Codepen</title><path d='M241.24 303.94c-15.32-10.36-30.74-20.57-46.06-30.93-2-1.38-3.43-1.48-5.5 0l-38.88 26.12C182 319.9 244 361.32 244 361.32v-53.79c0-1.22-1.55-2.78-2.76-3.59zM195.09 240.67q23.19-15.24 46.11-30.86a7.54 7.54 0 002.8-5.34v-51.7s-62 41.12-93.26 61.94c13.7 9.16 26.67 17.91 39.78 26.44 1.02.66 3.4.28 4.57-.48zM269.84 209.35q23.71 16.07 47.63 31.82a4.3 4.3 0 003.83 0l39.76-26.47L268 152.48v53.35a4.79 4.79 0 001.84 3.52zM258.11 230.37a5.27 5.27 0 00-4.74.17c-4.82 3-9.47 6.2-14.17 9.35-8.25 5.53-25.35 17-25.35 17l38.84 25.86a6.18 6.18 0 006.26.11l39-26s-34.07-22.66-39.84-26.49zM141 237.12v39.61l29.62-19.84L141 237.12z'/><path d='M256 32C132.29 32 32 132.29 32 256s100.29 224 224 224 224-100.29 224-224S379.71 32 256 32zm139 265c0 5.78-2.65 9.86-7.51 13.09q-61.71 41-123.29 82.19c-5.85 3.92-11.17 3.75-17-.14q-61.17-41-122.63-81.67c-5.11-3.39-7.59-7.56-7.59-13.73V217c0-6.14 2.52-10.34 7.62-13.72 40.91-27.13 81.94-54.36 122.73-81.68 5.82-3.89 11.09-4 16.94-.09q61.54 41.21 123.26 82.19c4.68 3.11 7.45 6.95 7.45 12.66z'/><path d='M316.25 273.23q-22.59 15.34-45.39 30.34c-2.41 1.58-2.89 3.31-2.86 6.19v51.34l93-62-38.53-25.88c-2.3-1.61-3.89-1.57-6.22.01zM370 276.68v-39.62l-29.59 19.87L370 276.68z'/></svg>\"\nexport const logoCss3 = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Css3</title><path d='M64 32l35 403.22L255.77 480 413 435.15 448 32zm290.68 334.9L256.07 395l-98.46-28.24-6.75-77.76h48.26l3.43 39.56 53.59 15.16.13.28 53.47-14.85 5.64-64.15H203l-4-50h120.65l4.35-51H140l-4-49h240.58z'/></svg>\"\nexport const logoDesignernews = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Designernews</title><path d='M295.31 122.8L222.86 64l72.68 122.64-.23-63.84z'/><path d='M339.43 64v195.6h-41.6L225.6 141.28l1.94 118.32h-45.83V131.2L139.09 96c1.14 1.44 2.28 2.88 3.31 4.44 11.43 16.68 17.14 36.6 17.14 60.6 0 59-35 98.52-87.88 98.52H0v.48L228.11 448H512V205.72z'/><path d='M111.89 162.52c0-34.8-16.23-54.12-45.38-54.12H44.57v106.8h21.72c29.71 0 45.6-18.48 45.6-52.68z'/></svg>\"\nexport const logoDeviantart = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Deviantart</title><path d='M408 103.28V16h-89.31l-8.9 8.78-42.15 78.48-13.25 8.74H104v119.85h82.68l7.36 8.71L104 408.72V496h89.3l8.91-8.79 42.14-78.48 13.26-8.73H408V280.13h-82.68l-7.36-8.75L408 103.28z'/></svg>\"\nexport const logoDiscord = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Discord</title><path d='M464 66.52A50 50 0 00414.12 17L97.64 16A49.65 49.65 0 0048 65.52V392c0 27.3 22.28 48 49.64 48H368l-13-44 109 100zM324.65 329.81s-8.72-10.39-16-19.32C340.39 301.55 352.5 282 352.5 282a139 139 0 01-27.85 14.25 173.31 173.31 0 01-35.11 10.39 170.05 170.05 0 01-62.72-.24 184.45 184.45 0 01-35.59-10.4 141.46 141.46 0 01-17.68-8.21c-.73-.48-1.45-.72-2.18-1.21-.49-.24-.73-.48-1-.48-4.36-2.42-6.78-4.11-6.78-4.11s11.62 19.09 42.38 28.26c-7.27 9.18-16.23 19.81-16.23 19.81-53.51-1.69-73.85-36.47-73.85-36.47 0-77.06 34.87-139.62 34.87-139.62 34.87-25.85 67.8-25.12 67.8-25.12l2.42 2.9c-43.59 12.32-63.44 31.4-63.44 31.4s5.32-2.9 14.28-6.77c25.91-11.35 46.5-14.25 55-15.21a24 24 0 014.12-.49 205.62 205.62 0 0148.91-.48 201.62 201.62 0 0172.89 22.95s-19.13-18.15-60.3-30.45l3.39-3.86s33.17-.73 67.81 25.16c0 0 34.87 62.56 34.87 139.62 0-.28-20.35 34.5-73.86 36.19z'/><path d='M212.05 218c-13.8 0-24.7 11.84-24.7 26.57s11.14 26.57 24.7 26.57c13.8 0 24.7-11.83 24.7-26.57.25-14.76-10.9-26.57-24.7-26.57zM300.43 218c-13.8 0-24.7 11.84-24.7 26.57s11.14 26.57 24.7 26.57c13.81 0 24.7-11.83 24.7-26.57S314 218 300.43 218z'/></svg>\"\nexport const logoDocker = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Docker</title><path d='M507 211.16c-1.42-1.19-14.25-10.94-41.79-10.94a132.55 132.55 0 00-21.61 1.9c-5.22-36.4-35.38-54-36.57-55l-7.36-4.28-4.75 6.9a101.65 101.65 0 00-13.06 30.45c-5 20.7-1.9 40.2 8.55 56.85-12.59 7.14-33 8.8-37.28 9H15.94A15.93 15.93 0 000 262.07a241.25 241.25 0 0014.75 86.83C26.39 379.35 43.72 402 66 415.74 91.22 431.2 132.3 440 178.6 440a344.23 344.23 0 0062.45-5.71 257.44 257.44 0 0081.69-29.73 223.55 223.55 0 0055.57-45.67c26.83-30.21 42.74-64 54.38-94h4.75c29.21 0 47.26-11.66 57.23-21.65a63.31 63.31 0 0015.2-22.36l2.14-6.18z'/><path d='M47.29 236.37H92.4a4 4 0 004-4v-40.48a4 4 0 00-4-4H47.29a4 4 0 00-4 4v40.44a4.16 4.16 0 004 4M109.5 236.37h45.12a4 4 0 004-4v-40.48a4 4 0 00-4-4H109.5a4 4 0 00-4 4v40.44a4.16 4.16 0 004 4M172.9 236.37H218a4 4 0 004-4v-40.48a4 4 0 00-4-4h-45.1a4 4 0 00-4 4v40.44a3.87 3.87 0 004 4M235.36 236.37h45.12a4 4 0 004-4v-40.48a4 4 0 00-4-4h-45.12a4 4 0 00-4 4v40.44a4 4 0 004 4M109.5 178.57h45.12a4.16 4.16 0 004-4v-40.48a4 4 0 00-4-4H109.5a4 4 0 00-4 4v40.44a4.34 4.34 0 004 4M172.9 178.57H218a4.16 4.16 0 004-4v-40.48a4 4 0 00-4-4h-45.1a4 4 0 00-4 4v40.44a4 4 0 004 4M235.36 178.57h45.12a4.16 4.16 0 004-4v-40.48a4.16 4.16 0 00-4-4h-45.12a4 4 0 00-4 4v40.44a4.16 4.16 0 004 4M235.36 120.53h45.12a4 4 0 004-4V76a4.16 4.16 0 00-4-4h-45.12a4 4 0 00-4 4v40.44a4.17 4.17 0 004 4M298.28 236.37h45.12a4 4 0 004-4v-40.48a4 4 0 00-4-4h-45.12a4 4 0 00-4 4v40.44a4.16 4.16 0 004 4'/></svg>\"\nexport const logoDribbble = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Dribbble</title><path d='M256 32C132.33 32 32 132.33 32 256s100.33 224 224 224 224-100.22 224-224S379.67 32 256 32zm142.22 103.25a186.36 186.36 0 0144 108.38c-40.37-2.1-88.67-2.1-127.4 1.52-4.9-12.37-9.92-24.5-15.4-36.17 44.66-19.36 79.08-44.8 98.8-73.73zM256 69.33a185.81 185.81 0 01119.12 42.94c-20.3 25.66-52.15 48-91.82 64.86C261.6 137 236.63 102.47 210 75.28a187.51 187.51 0 0146-5.95zm-84.47 20.42c26.95 26.83 52.27 61 74.44 101C203.85 203.62 155.55 211 104 211c-9.8 0-19.36-.35-28.81-.94a186.78 186.78 0 0196.34-120.31zM69.68 247.13c10.62.47 21.35.7 32.2.59 58.8-.7 113.52-9.92 160.54-25q6.65 13.83 12.6 28.35a115.43 115.43 0 00-16.69 5c-64.28 27-114.91 70.51-142.33 123.13A186 186 0 0169.33 256c0-3 .12-5.95.35-8.87zM256 442.67a185.57 185.57 0 01-114.45-39.32c24.85-49.23 69.18-90 125.07-115.27 5.25-2.45 12.25-4.43 20.3-6.18q10 27.64 17.85 57.4A678 678 0 01322 430.42a185.06 185.06 0 01-66 12.25zm100.92-29.75a672.61 672.61 0 00-17.39-92.05c-4-15.17-8.51-29.87-13.41-44.22 36.63-3 80.5-2.57 115.38 0a186.5 186.5 0 01-84.58 136.27z'/></svg>\"\nexport const logoDropbox = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Dropbox</title><path d='M256.32 126.24l-120.16 78.25 120.16 78.24L136.16 361 16 282.08l120.16-78.24L16 126.24 136.16 48zm-120.8 259.52l120.16-78.25 120.16 78.25L255.68 464zm120.8-103.68l120.16-78.24-120.16-77.6L375.84 48 496 126.24l-120.16 78.25L496 282.73 375.84 361z'/></svg>\"\nexport const logoEdge = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Edge</title><path d='M255.5 15c-132 0-240 108-240 240s108 240 240 240c85.4 0 160.8-45.2 203.3-112.9a6.87 6.87 0 00-9.1-9.7 108.64 108.64 0 01-18.4 8.6c-36.8 12.6-57.1 13.1-82.1 12-27.9-1.2-61.9-10.8-85.8-25s-43.5-34.6-54.1-52.3-17-39.9-14.1-68.3c2.9-29 29.4-52.6 60.4-52.6 33.5 0 60.8 26.6 60.8 60.1 0 17-8.1 31.7-18.5 43.5-2.3 2.1-7.6 9.7 5.8 20 15.9 12.2 51.6 18 79.9 16.6s59.1-12.6 80.2-34.8c16.8-17.7 31.8-46.1 31.8-77.4C495.5 97.7 379.5 15 255.5 15z'/></svg>\"\nexport const logoElectron = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Electron</title><path d='M86.76 255a9.89 9.89 0 004.87-1.29 9.82 9.82 0 003.65-13.43c-16.46-28.56-17.81-52.12-7.45-70 14.26-24.57 53.61-33.65 105.27-24.29a9.86 9.86 0 0011.45-7.9 9.84 9.84 0 00-7.93-11.44c-29.19-5.28-56-5.18-77.39.3-22.3 5.71-39 17.28-48.45 33.48-14 24.19-12.7 54.73 7.42 89.62a9.85 9.85 0 008.56 4.95zM361.61 143.73c32.24.42 52.61 9.31 62.79 26.86 14.21 24.48 2.52 62.81-31.27 102.52a9.82 9.82 0 007.51 16.18 9.88 9.88 0 007.52-3.46c19.12-22.47 32.35-45.54 38.25-66.71 6.14-22 4.43-42.21-5-58.38-13.8-23.78-40.13-36.15-79.59-36.67h-.14a9.83 9.83 0 00-.12 19.66zM326.47 414.89a9.88 9.88 0 00-13.5 3.35c-16.41 27.15-36.57 42.1-56.77 42.1-28.49 0-56-29.31-73.73-78.42a9.87 9.87 0 00-12.59-5.92 9.83 9.83 0 00-6 12.58c10 27.77 23.47 50.75 39 66.46 16.11 16.34 34.55 25 53.32 25 27.38 0 53.54-18.33 73.65-51.61a9.81 9.81 0 00-3.38-13.5zM431.7 338.54a32.14 32.14 0 00-29.9 44.33c-41.8 19.5-119.8 4.79-191.87-36.62-32.91-18.9-62.16-41.86-84.6-66.39a9.9 9.9 0 00-13.91-.65 9.8 9.8 0 00-.65 13.9c23.79 26 54.68 50.28 89.33 70.18 40.28 23.13 82.27 38.63 121.43 44.81a225.54 225.54 0 0035 2.91c23.12 0 43-4.3 58.51-12.79a32.2 32.2 0 1016.7-59.68zm0 44.66a12.6 12.6 0 01-7.82-2.72 10 10 0 00-2.2-2.21 12.61 12.61 0 1110 4.93z'/><path d='M82.09 338.59c.57-21.26 12.41-47 33.68-73.16 23.19-28.45 56.69-56 94.34-77.65 33.25-19.1 65.2-31.9 98.07-38.91a9.83 9.83 0 10-4.12-19.22c-34.85 7.43-68.78 21-103.79 41.09C116.09 219.09 59.9 289.88 62.46 343.9a32.32 32.32 0 1019.63-5.31zM80.3 383.2a12.5 12.5 0 1112.59-12.5 12.56 12.56 0 01-12.59 12.5z'/><path d='M256.2 96.32a32.23 32.23 0 0026.53-13.81c17.89 11.69 34 35 45.81 66.12 13 34.39 19.84 75.38 19.84 118.54 0 37.18-5.19 72.35-15 103.6a9.72 9.72 0 00.66 7.49 9.82 9.82 0 005.8 4.84 9.89 9.89 0 0012.34-6.44c10.42-33.14 15.93-70.34 15.93-109.49 0-47.17-7.77-91.77-22.47-129-14.41-36.48-34.13-62.4-57.14-75.16a32.3 32.3 0 10-32.3 33.31zm0-44.66a12.5 12.5 0 11-12.59 12.5 12.56 12.56 0 0112.59-12.5zM251 243.36a24.35 24.35 0 005.16 48.16 24.68 24.68 0 005.16-.55A24.36 24.36 0 10251 243.36z'/></svg>\"\nexport const logoEuro = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Euro</title><path d='M231.8 272v-48H376l8-48H231.8v-8.12c0-38.69 16.47-62.56 87.18-62.56 28.89 0 61.45 2.69 102.5 9.42l10.52-70A508.54 508.54 0 00315.46 32C189.26 32 135 76.4 135 158.46V176H80v48h55v48H80v48h55v33.54C135 435.6 189.23 480 315.43 480a507.76 507.76 0 00116.44-12.78l-10.58-70c-41.05 6.73-73.46 9.42-102.35 9.42-70.7 0-87.14-20.18-87.14-67.94V320h128.47l7.87-48z'/></svg>\"\nexport const logoFacebook = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Facebook</title><path d='M480 257.35c0-123.7-100.3-224-224-224s-224 100.3-224 224c0 111.8 81.9 204.47 189 221.29V322.12h-56.89v-64.77H221V208c0-56.13 33.45-87.16 84.61-87.16 24.51 0 50.15 4.38 50.15 4.38v55.13H327.5c-27.81 0-36.51 17.26-36.51 35v42h62.12l-9.92 64.77H291v156.54c107.1-16.81 189-109.48 189-221.31z' fill-rule='evenodd'/></svg>\"\nexport const logoFigma = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Figma</title><path d='M336 176a80 80 0 000-160H176a80 80 0 000 160 80 80 0 000 160 80 80 0 1080 80V176z'/><circle cx='336' cy='256' r='80'/></svg>\"\nexport const logoFirebase = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Firebase</title><path d='M93.19 329.38l47.45-304.07c1.64-10.37 15.55-12.82 20.46-3.55l51 95.45zM432 400l-46.74-276.79a11 11 0 00-18.54-6L80 400l159.36 91.91a33.18 33.18 0 0031.91 0zM302.36 158.93l-36.54-69.54a10.86 10.86 0 00-19.36 0L85.83 375.74z'/></svg>\"\nexport const logoFirefox = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Firefox</title><path d='M471.46 194.62v-.07c-.22-.76-.45-1.52-.68-2.28-.05-.19-.11-.38-.17-.56-.43-1.44-.87-2.88-1.33-4.31l-.06-.2a223.24 223.24 0 00-10-25.56 191.77 191.77 0 00-12.9-23.8 225.15 225.15 0 00-74.74-73.74A222.9 222.9 0 00256 32c-7 0-14 .34-20.82 1-24.12 2.54-64.78 11.21-97.77 40.18C257.5 11.86 417.94 85.7 404.29 223c-4.86 49-46.46 82.67-85.19 88.35a73.73 73.73 0 01-20.8.21c-94.59-13.15-88.8-90.68-60.06-123.83-38-.24-67.47 46.79-53.15 93-32.95-61.18.35-157 70.93-186-82.95-12-160.71 28.2-185.7 98.07A330.23 330.23 0 0188.07 118s-45.22 35.74-54.44 110.9c-.14 1.16-.27 2.32-.39 3.49-.05.4-.09.8-.13 1.21q-.53 5.25-.8 10.57v.81c-.07 1.48-.13 3-.17 4.46v1.25c0 1.76-.07 3.52-.07 5.29 0 123.71 100.29 224 224 224S480 379.71 480 256a224 224 0 00-8.54-61.38z'/></svg>\"\nexport const logoFlickr = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Flickr</title><path d='M256 32C132.8 32 32 132.8 32 256s100.8 224 224 224 224-100.8 224-224S379.2 32 256 32zm-82.16 280A56 56 0 11228 257.84 56 56 0 01173.84 312zm168 0A56 56 0 11396 257.84 56 56 0 01341.84 312z'/></svg>\"\nexport const logoFoursquare = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Foursquare</title><path d='M376.76 32H138.54C105.67 32 96 56.8 96 72.41v379.64c0 17.59 9.42 24.12 14.72 26.27s19.91 4 28.67-6.17c0 0 112.47-130.89 114.4-132.83 2.92-2.93 2.92-2.93 5.84-2.93h72.77c30.58 0 35.49-21.87 38.69-34.75 2.65-10.79 32.48-164 42.45-212.56C421.14 52 411.74 32 376.76 32zm-5.67 269.64c2.65-10.79 32.48-164 42.45-212.56m-50.85 7.59l-10 51.73c-1.19 5.65-8.28 11.6-14.86 11.6h-95.92c-10.44 0-17.91 6.14-17.91 16.6v13.45c0 10.47 7.52 17.89 18 17.89h81.85c7.38 0 14.61 8.11 13 16s-9.09 46.57-10 50.89-5.84 11.72-14.61 11.72H248c-11.7 0-15.24 1.54-23.07 11.3s-78.26 94.59-78.26 94.59c-.71.82-1.41.58-1.41-.31V95.9c0-6.69 5.8-14.53 14.48-14.53h191.14a12.42 12.42 0 0111.81 15.3z'/></svg>\"\nexport const logoGithub = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Github</title><path d='M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9a17.56 17.56 0 003.8.4c8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1a102.4 102.4 0 01-22.6 2.7c-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1a63 63 0 0025.6-6c2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8a18.64 18.64 0 015-.5c8.1 0 26.4 3.1 56.6 24.1a208.21 208.21 0 01112.2 0c30.2-21 48.5-24.1 56.6-24.1a18.64 18.64 0 015 .5c12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5a19.35 19.35 0 004-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32z'/></svg>\"\nexport const logoGitlab = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Gitlab</title><path d='M494.07 281.6l-25.18-78.08a11 11 0 00-.61-2.1l-50.5-156.94a20.08 20.08 0 00-19.17-13.82 19.77 19.77 0 00-18.95 13.94l-48.14 149.55h-152L131.34 44.59a19.76 19.76 0 00-18.86-13.94h-.11a20.15 20.15 0 00-19.12 14L42.7 201.73c0 .14-.11.26-.16.4l-25.63 79.48a29.15 29.15 0 0010.44 32.46l221.44 162.41a11.25 11.25 0 0013.38-.07l221.48-162.34a29.13 29.13 0 0010.42-32.47m-331-64.51l61.73 191.76L76.63 217.09m209.64 191.8l59.19-183.84 2.55-8h86.52L300.47 390.44M398.8 59.31l43.37 134.83h-86.82M324.16 217l-43 133.58-25.66 79.56L186.94 217M112.27 59.31l43.46 134.83H69M40.68 295.58a6.19 6.19 0 01-2.21-6.9l19-59 139.61 180.59m273.26-114.69L313.92 410.22l.52-.69L453.5 229.64l19 59a6.2 6.2 0 01-2.19 6.92'/></svg>\"\nexport const logoGoogle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Google</title><path d='M473.16 221.48l-2.26-9.59H262.46v88.22H387c-12.93 61.4-72.93 93.72-121.94 93.72-35.66 0-73.25-15-98.13-39.11a140.08 140.08 0 01-41.8-98.88c0-37.16 16.7-74.33 41-98.78s61-38.13 97.49-38.13c41.79 0 71.74 22.19 82.94 32.31l62.69-62.36C390.86 72.72 340.34 32 261.6 32c-60.75 0-119 23.27-161.58 65.71C58 139.5 36.25 199.93 36.25 256s20.58 113.48 61.3 155.6c43.51 44.92 105.13 68.4 168.58 68.4 57.73 0 112.45-22.62 151.45-63.66 38.34-40.4 58.17-96.3 58.17-154.9 0-24.67-2.48-39.32-2.59-39.96z'/></svg>\"\nexport const logoGooglePlaystore = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Google Playstore</title><path d='M48 59.49v393a4.33 4.33 0 007.37 3.07L260 256 55.37 56.42A4.33 4.33 0 0048 59.49zM345.8 174L89.22 32.64l-.16-.09c-4.42-2.4-8.62 3.58-5 7.06l201.13 192.32zM84.08 472.39c-3.64 3.48.56 9.46 5 7.06l.16-.09L345.8 338l-60.61-57.95zM449.38 231l-71.65-39.46L310.36 256l67.37 64.43L449.38 281c19.49-10.77 19.49-39.23 0-50z'/></svg>\"\nexport const logoHackernews = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Hackernews</title><path d='M32 32v448h448V32zm249.67 250.83v84H235v-84l-77-140h55l46.32 97.54 44.33-97.54h52.73z'/></svg>\"\nexport const logoHtml5 = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Html5</title><path d='M64 32l34.94 403.21L255.77 480 413 435.15 448 32zm308 132H188l4 51h176l-13.51 151.39L256 394.48l-98.68-28-6.78-77.48h48.26l3.42 39.29L256 343.07l53.42-14.92L315 264H148l-12.59-149.59H376.2z'/></svg>\"\nexport const logoInstagram = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Instagram</title><path d='M349.33 69.33a93.62 93.62 0 0193.34 93.34v186.66a93.62 93.62 0 01-93.34 93.34H162.67a93.62 93.62 0 01-93.34-93.34V162.67a93.62 93.62 0 0193.34-93.34h186.66m0-37.33H162.67C90.8 32 32 90.8 32 162.67v186.66C32 421.2 90.8 480 162.67 480h186.66C421.2 480 480 421.2 480 349.33V162.67C480 90.8 421.2 32 349.33 32z'/><path d='M377.33 162.67a28 28 0 1128-28 27.94 27.94 0 01-28 28zM256 181.33A74.67 74.67 0 11181.33 256 74.75 74.75 0 01256 181.33m0-37.33a112 112 0 10112 112 112 112 0 00-112-112z'/></svg>\"\nexport const logoIonic = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Ionic</title><path d='M256 153.9A102.1 102.1 0 10358.1 256 102.23 102.23 0 00256 153.9z'/><circle cx='402.59' cy='116.45' r='46.52'/><path d='M459.86 163.2l-1.95-4.28-3.11 3.52a70 70 0 01-28.06 19.32l-3 1.1 1.22 2.93A181.43 181.43 0 01439 256c0 100.92-82.1 183-183 183S73 356.92 73 256 155.08 73 256 73a180.94 180.94 0 0178.43 17.7l2.87 1.3 1.25-2.92A70.19 70.19 0 01359.21 62l3.67-2.93-4.17-2.07A221.61 221.61 0 00256 32C132.49 32 32 132.49 32 256s100.49 224 224 224 224-100.49 224-224a222.19 222.19 0 00-20.14-92.8z'/></svg>\"\nexport const logoIonitron = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Ionitron</title><path d='M468.41 269.19c-2.64-33.39-11.76-58-31.44-57.39a1 1 0 00-.92 1.37c5.11 12.59 9.68 36.9 9.17 58.07a1 1 0 01-2 .08c-2.19-21.21-7.1-41.19-16.22-59.43a186.69 186.69 0 00-348.91 41 4 4 0 01-3.33 3.11l-8.65 1.22c-17.2 2.4-26.9 34.9-21.7 72.5s23.5 66.2 40.7 63.8l13.24-1.85a4 4 0 013.93 1.84 186.71 186.71 0 00339-56.07 4 4 0 013.68-3.08l4.4-.24c15.15-2.53 21.75-31.23 19.05-64.93zM94.5 270.42a1 1 0 011.59-1.19c9.63 10 20.25 27.65 23.32 49.86 3.24 23.05-2.24 45.2-9.13 57.87a1 1 0 01-1.84-.73c4.07-14.44 5.16-33.83 2.27-54.74-2.8-20.32-8.71-38.27-16.21-51.07zm178.77 109.79a15.53 15.53 0 01-15.41-13.83 15.48 15.48 0 1115.41 13.83zm81.84-4.72a15.37 15.37 0 1114.6-16.2 15.43 15.43 0 01-14.6 16.2z'/><path d='M165.51 70a.31.31 0 01.1.2c.1.2.2.3.3.5v.1a5.78 5.78 0 002.3 2.7c2 1.5 5 2.4 8.6 3a63.69 63.69 0 0011.9.5 28.25 28.25 0 002.9-.2c-.4-.4-.8-.9-1.2-1.3h-1.3a52 52 0 01-11.6-.9 19.71 19.71 0 01-8.4-3.4 9.24 9.24 0 01-1.4-1.4 4.48 4.48 0 010-2.3c.5-2.3 2.4-4.8 5.5-7.4a57.25 57.25 0 0110.9-7c.9-.4 1.7-.9 2.6-1.3.1-.1.3-.1.5-.2a24.69 24.69 0 00-.2 10.5c2.3 11.9 11.6 20.3 23.2 20.6l4 24.3 12.7-3-4-23.3c10.8-4.6 16.3-16.1 14-28a25.8 25.8 0 00-3.9-9.5c-5.3-.8-15.6-.8-29.2 2.1 1.1-.3 2.1-.7 3.2-1a135.27 135.27 0 0121.5-4.2c.6-.1 1.2-.1 1.8-.2l3.5-.3h.6a61.83 61.83 0 0110.8.3 29 29 0 016.1 1.4 5.71 5.71 0 00-.9 3.2 6.12 6.12 0 004.3 5.8 25.53 25.53 0 01-2.1 2.8 26 26 0 01-2.9 2.8c-1.1.9-2.3 1.8-3.5 2.7l-6.5 3.8-.3 1.5a.35.35 0 00.2-.1l8.4-4.7c1.2-.8 2.4-1.6 3.4-2.4a29.15 29.15 0 003.2-2.8 29.86 29.86 0 002.4-2.8l.3-.6a6.14 6.14 0 005.4-6 6.06 6.06 0 00-6.1-6.1 6.81 6.81 0 00-2.8.7 24.6 24.6 0 00-8.2-2.7 63.48 63.48 0 00-15.5-.6 14.92 14.92 0 00-2.1.2 13.55 13.55 0 01-2 .2 25.15 25.15 0 00-18.7-3.7 25.86 25.86 0 00-17.8 13c-1.3.5-2.6 1.1-3.8 1.7-.7.3-1.3.6-2 .9a60.75 60.75 0 00-13.9 9.1c-3.1 2.9-4.9 5.7-5.3 8.3a6.14 6.14 0 00.7 4 2.19 2.19 0 01.3.5z'/></svg>\"\nexport const logoJavascript = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Javascript</title><path d='M32 32v448h448V32zm240 348c0 43.61-25.76 64.87-63.05 64.87-33.68 0-53.23-17.44-63.15-38.49l34.28-20.75c6.61 11.73 11.63 21.65 26.06 21.65 12 0 21.86-5.41 21.86-26.46V240h44zm99.35 63.87c-39.09 0-64.35-17.64-76.68-42L329 382c9 14.74 20.75 24.56 41.5 24.56 17.44 0 27.57-7.72 27.57-19.75 0-14.43-10.43-19.54-29.68-28l-10.52-4.52c-30.38-12.92-50.52-29.16-50.52-63.45 0-31.57 24.05-54.63 61.64-54.63 26.77 0 46 8.32 59.85 32.68L396 290c-7.22-12.93-15-18-27.06-18-12.33 0-20.15 7.82-20.15 18 0 12.63 7.82 17.74 25.86 25.56l10.52 4.51c35.79 15.34 55.94 31 55.94 66.16.01 37.9-29.76 57.64-69.76 57.64z'/></svg>\"\nexport const logoLaravel = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Laravel</title><path d='M505.57 234.62c-3.28-3.53-26.82-32.29-39.51-47.79-6.75-8.24-12.08-14.75-14.32-17.45l-.18-.22-.2-.21c-5.22-5.83-12.64-12.51-23.78-12.51a39.78 39.78 0 00-5.41.44c-.37.05-.75.11-1.15.15-2.45.27-10.06 1.5-28.14 4.48-14 2.29-35.11 5.77-38.31 6.07l-.71.06-.69.13c-10 1.78-16.62 6.22-19.56 13.19-1.55 3.68-3.22 11.15 2.94 19.86 1.53 2.22 6.83 9.56 15.94 22.17 6.06 8.4 12.87 17.82 18.75 26L259.9 275 150.66 96.05l-.2-.34-.23-.33-.44-.65C145.32 88.17 139.76 80 123.7 80c-1.13 0-2.31 0-3.63.11-4.6.25-21.42 1.57-40.89 3.11-21.49 1.69-50.9 4-54.72 4.1h-.73l-.79.08c-9.14.89-15.77 4.6-19.7 11-6.55 10.69-1.42 22.69.26 26.63C6.87 133 37.56 197.7 64.63 254.81c18 37.94 36.58 77.17 38.1 80.65a34.85 34.85 0 0032.94 21.59 46.62 46.62 0 009.86-1.1h.21l.2-.05c13.86-3.38 57.83-14.54 89.2-22.59 1.9 3.32 3.9 6.83 6 10.44 21.93 38.5 37.9 66.35 43.16 73.46C287 421 295 432 310.06 432c5.46 0 10.46-1.4 15.74-2.89l1.53-.43h.12c10.53-3 150.69-52.16 157.87-55.35l.22-.1c5.44-2.41 13.66-6.05 16.18-15.4 1.65-6.12.18-12.33-4.38-18.46l-.07-.09-.07-.09c-.85-1.1-4-5.21-8.27-10.9-9.13-12.07-23.88-31.57-36.84-48.54 17.37-4.5 38.8-10.11 43.38-11.55 11.47-3.43 14.94-10.69 16-14.73.79-3.15 1.82-11.2-5.9-18.85zm-320 58.19c-17.81 4.17-30.22 7.08-37.89 8.9-6.67-13.34-19.74-39.65-32.5-65.33-29.74-59.92-45.1-90.77-53.18-106.9l8.15-.7c13.34-1.15 31.61-2.72 41.78-3.57 16.76 28.26 74.32 125.3 96.3 162.3zM427.58 172zM310.06 416.4zm53.67-56.95c-24.21 8-37.33 12.37-44.42 14.74-6.3-10.34-20.16-33.52-32.47-54.19l115.7-29.48c5 6.81 14.57 19.72 33.46 44.93-18.07 6.04-48.2 16.02-72.27 24zm55.87-121.63l-23.76-31.53c13.67-2.39 21.54-3.77 26.15-4.6l12 14.88 11.94 14.82c-8.2 1.99-17.74 4.32-26.33 6.43z'/></svg>\"\nexport const logoLinkedin = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Linkedin</title><path d='M444.17 32H70.28C49.85 32 32 46.7 32 66.89v374.72C32 461.91 49.85 480 70.28 480h373.78c20.54 0 35.94-18.21 35.94-38.39V66.89C480.12 46.7 464.6 32 444.17 32zm-273.3 373.43h-64.18V205.88h64.18zM141 175.54h-.46c-20.54 0-33.84-15.29-33.84-34.43 0-19.49 13.65-34.42 34.65-34.42s33.85 14.82 34.31 34.42c-.01 19.14-13.31 34.43-34.66 34.43zm264.43 229.89h-64.18V296.32c0-26.14-9.34-44-32.56-44-17.74 0-28.24 12-32.91 23.69-1.75 4.2-2.22 9.92-2.22 15.76v113.66h-64.18V205.88h64.18v27.77c9.34-13.3 23.93-32.44 57.88-32.44 42.13 0 74 27.77 74 87.64z'/></svg>\"\nexport const logoMarkdown = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Markdown</title><path d='M475 64H37C16.58 64 0 81.38 0 102.77v306.42C0 430.59 16.58 448 37 448h438c20.38 0 37-17.41 37-38.81V102.77C512 81.38 495.42 64 475 64zM288 368h-64V256l-48 64-48-64v112H64V144h64l48 80 48-80h64zm96 0l-80-112h48.05L352 144h64v112h48z'/></svg>\"\nexport const logoMastodon = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Mastodon</title><path d='M480 173.59c0-104.13-68.26-134.65-68.26-134.65C377.3 23.15 318.2 16.5 256.8 16h-1.51c-61.4.5-120.46 7.15-154.88 22.94 0 0-68.27 30.52-68.27 134.65 0 23.85-.46 52.35.29 82.59C34.91 358 51.11 458.37 145.32 483.29c43.43 11.49 80.73 13.89 110.76 12.24 54.47-3 85-19.42 85-19.42l-1.79-39.5s-38.93 12.27-82.64 10.77c-43.31-1.48-89-4.67-96-57.81a108.44 108.44 0 01-1-14.9 558.91 558.91 0 0096.39 12.85c32.95 1.51 63.84-1.93 95.22-5.67 60.18-7.18 112.58-44.24 119.16-78.09 10.42-53.34 9.58-130.17 9.58-130.17zm-80.54 134.16h-50V185.38c0-25.8-10.86-38.89-32.58-38.89-24 0-36.06 15.53-36.06 46.24v67h-49.66v-67c0-30.71-12-46.24-36.06-46.24-21.72 0-32.58 13.09-32.58 38.89v122.37h-50V181.67q0-38.65 19.75-61.39c13.6-15.15 31.4-22.92 53.51-22.92 25.58 0 44.95 9.82 57.75 29.48L256 147.69l12.45-20.85c12.81-19.66 32.17-29.48 57.75-29.48 22.11 0 39.91 7.77 53.51 22.92q19.79 22.72 19.75 61.39z'/></svg>\"\nexport const logoMedium = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Medium</title><path d='M28 28v456h456V28H28zm378.83 108.04l-24.46 23.45a7.162 7.162 0 00-2.72 6.86v172.28c-.44 2.61.61 5.26 2.72 6.86l23.88 23.45v5.15H286.13v-5.15l24.74-24.02c2.43-2.43 2.43-3.15 2.43-6.86V198.81l-68.79 174.71h-9.3l-80.09-174.71v117.1c-.67 4.92.97 9.88 4.43 13.44l32.18 39.03v5.15h-91.24v-5.15l32.18-39.03c3.44-3.57 4.98-8.56 4.15-13.44V180.5c.38-3.76-1.05-7.48-3.86-10.01l-28.6-34.46v-5.15h88.81l68.65 150.55 60.35-150.55h84.66v5.16z'/></svg>\"\nexport const logoMicrosoft = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Microsoft</title><path d='M31.87 30.58H244.7v212.81H31.87zM266.89 30.58H479.7v212.81H266.89zM31.87 265.61H244.7v212.8H31.87zM266.89 265.61H479.7v212.8H266.89z'/></svg>\"\nexport const logoNoSmoking = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo No Smoking</title><path d='M360 256h16v48h-16zM112 304h129.6l-48-48H112v48z'/><path d='M364.5 60.1a8.79 8.79 0 01-1-.6 218.79 218.79 0 00-34.4-14.8l-5.4-1.8A223.2 223.2 0 00256 32C132.3 32 32 132.3 32 256a223.71 223.71 0 00115.4 195.8c.4.2.7.5 1.1.7a218.79 218.79 0 0034.4 14.8l5.4 1.8A222.7 222.7 0 00256 480c123.7 0 224-100.3 224-224A223.76 223.76 0 00364.5 60.1zM256 426.4a161.85 161.85 0 01-27.2-2.4 170.14 170.14 0 01-28.5-7.3c-1.9-.6-3.8-1.2-5.6-1.9a162.39 162.39 0 01-19-8.6 170.33 170.33 0 01-90.1-150.3c0-37.2 12.4-71.4 32.7-99.4l237.2 237.2c-28.1 20.3-62.3 32.7-99.5 32.7zm137.8-71L156.6 118.2c28-20.2 62.1-32.6 99.4-32.6a162.79 162.79 0 0127.2 2.4 170.14 170.14 0 0128.5 7.3c1.8.6 3.7 1.2 5.6 1.9a162 162 0 0118 8.1 170.25 170.25 0 0191.2 150.8c-.1 37.2-12.5 71.3-32.7 99.3z'/><path d='M352 256h-34l34 34v-34zM384 256h16v48h-16zM360.1 212.7c-8.8-4.1-22-5.7-45.6-5.7h-3.6c-12.7.1-15.9-.1-20-6.1-2.8-4.2-1-14.8 3.7-21.9a8 8 0 00.4-8.2 8.26 8.26 0 00-7-4.3 53.67 53.67 0 01-18.3-3.9c-10.6-4.5-15.6-12.1-15.6-23.1 0-25.8 21.8-27.7 22.8-27.7v-16c-12 0-38.8 11-38.8 43.7 0 17.5 9 31 25.7 38a66.58 66.58 0 0012 3.6c-3.3 9.8-3.6 20.9 1.7 28.7 9 13.3 20.3 13.2 33.3 13.1h3.5c26.3 0 34.6 2.3 38.9 4.3 5.7 2.6 6.8 7.5 6.6 15.7v1h16v-1c0-7.1.3-22.8-15.7-30.2z'/><path d='M400 244c0-25.7-3-39.2-9.1-49.6C382.3 180 368.5 172 352 172h-17.4c2.9-8.3 5.4-19.8 3.5-30.9-3.2-18.8-19.1-30-43.1-30v16c21 0 26.1 9.1 27.4 16.7 2.5 14.5-6.8 32.1-6.9 32.3a8 8 0 00.1 7.9 8.06 8.06 0 006.9 3.9H352c10.9 0 19.4 4.9 25.1 14.6 3.1 5.3 6.9 13.5 6.9 41.4h16z'/></svg>\"\nexport const logoNodejs = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Nodejs</title><path d='M429.76 130.07L274.33 36.85a37 37 0 00-36.65 0L82.24 130.06A38.2 38.2 0 0064 162.83V349a38.26 38.26 0 0018.24 32.8L123 406.14l.23.13c20.58 10.53 28.46 10.53 37.59 10.53 32.14 0 52.11-20.8 52.11-54.29V182a8.51 8.51 0 00-8.42-8.58h-22.38a8.51 8.51 0 00-8.42 8.58v180.51a15 15 0 01-6.85 13.07c-5.9 3.6-14.47 2.84-24.14-2.15l-39.06-23.51a1.1 1.1 0 01-.48-.92V165.46a1.32 1.32 0 01.59-1.06l151.84-93a.82.82 0 01.73 0l151.93 93a1.34 1.34 0 01.55 1.1V349a1.28 1.28 0 01-.45 1l-152.06 90.65a1.22 1.22 0 01-.8 0l-38.83-23.06a7.8 7.8 0 00-7.83-.41l-.34.2c-10.72 6.35-13.6 8-23.54 11.62-1.62.59-5.43 2-5.76 5.77s3.29 6.45 6.51 8.32l51.9 31.87a35.67 35.67 0 0018.3 5.07h.58a35.87 35.87 0 0017.83-5.07l155.43-93.13A38.37 38.37 0 00448 349V162.83a38.21 38.21 0 00-18.24-32.76z'/><path d='M307.88 318.05c-37.29 0-45.24-10.42-47.6-27.24a8.43 8.43 0 00-8.22-7.32h-19.8a8.44 8.44 0 00-8.26 8.58c0 14.58 5.12 62.17 83.92 62.17 24.38 0 44.66-5.7 58.63-16.49S388 311.26 388 292.55c0-37.55-24.5-47.83-72.75-54.55-49.05-6.82-49.05-10.29-49.05-17.89 0-5.47 0-18.28 35.46-18.28 25.23 0 38.74 3.19 43.06 20a8.35 8.35 0 008.06 6.67h19.87a8.24 8.24 0 006.16-2.86 8.91 8.91 0 002.12-6.44c-2.57-35.55-28.56-53.58-79.24-53.58-46.06 0-73.55 20.75-73.55 55.5 0 38.1 28.49 48.87 71.29 53.33 50 5.17 50 12.71 50 19.37.03 10.38-4.28 24.23-41.55 24.23z'/></svg>\"\nexport const logoNpm = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Npm</title><path d='M227.6 213.1H256v57.1h-28.4z'/><path d='M0 156v171.4h142.2V356H256v-28.6h256V156zm142.2 142.9h-28.4v-85.7H85.3v85.7H28.4V184.6h113.8zm142.2 0h-56.9v28.6h-56.9V184.6h113.8zm199.2 0h-28.4v-85.7h-28.4v85.7h-28.4v-85.7H370v85.7h-56.9V184.6h170.7v114.3z'/></svg>\"\nexport const logoOctocat = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Octocat</title><path d='M172.86 290.12c-9.75 0-18.11 4.56-24.86 13.87s-10.07 20.58-10.07 34 3.43 24.91 10.07 34.12S163 386 172.86 386c9.1 0 17-4.66 23.68-13.87s10.07-20.58 10.07-34.12-3.43-24.81-10.07-34-14.54-13.89-23.68-13.89zM340.32 290.12c-9.64 0-18.11 4.56-24.86 13.87s-10.07 20.58-10.07 34 3.43 24.91 10.07 34.12S330.57 386 340.32 386c9.11 0 17-4.66 23.79-13.87s10.07-20.58 10.07-34.12-3.43-24.81-10.07-34-14.57-13.89-23.79-13.89z'/><path d='M459.36 165c-.11 0 2.89-15.49.32-42.47-2.36-27-8-51.78-17.25-74.53 0 0-4.72.87-13.72 3.14S405 58 384.89 67.18c-19.82 9.2-40.71 21.44-62.46 36.29-14.79-4.23-36.86-6.39-66.43-6.39-28.18 0-50.25 2.16-66.43 6.39Q117.9 53.25 69.46 48q-13.81 34.13-17.14 74.75c-2.57 27 .43 42.58.43 42.58C26.71 193.82 16 234.88 16 268.78c0 26.22.75 49.94 6.54 71 6 20.91 13.6 38 22.6 51.14A147.49 147.49 0 0079 425.43c13.39 10.08 25.71 17.34 36.86 21.89 11.25 4.76 24 8.23 38.57 10.72a279.19 279.19 0 0032.68 4.34s30 1.62 69 1.62 68.89-1.62 68.89-1.62a285.25 285.25 0 0032.68-4.38 178.91 178.91 0 0038.46-10.72c11.15-4.66 23.47-11.81 37-21.89a145 145 0 0033.75-34.55c9-13.11 16.6-30.23 22.6-51.14s6.51-44.81 6.51-71.03c0-32.82-10.71-74.42-36.64-103.67zm-70.07 253.07C359.39 432.26 315.46 438 257.18 438h-2.25c-58.29 0-102.22-5.63-131.57-19.93s-44.25-43.45-44.25-87.43c0-26.32 9.21-47.66 27.32-64 7.93-7 17.57-11.92 29.57-14.84s22.93-3 33.21-2.71c10.08.43 24.22 2.38 42.11 3.79s31.39 3.25 44.79 3.25c12.53 0 29.14-2.17 55.82-4.33s46.61-3.25 59.46-1.09c13.18 2.17 24.65 6.72 34.4 15.93q28.44 25.67 28.5 64c-.11 43.98-15.22 73.24-45 87.43z'/></svg>\"\nexport const logoPaypal = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Paypal</title><path d='M424.81 148.79c-.43 2.76-.93 5.58-1.49 8.48-19.17 98-84.76 131.8-168.54 131.8h-42.65a20.67 20.67 0 00-20.47 17.46l-21.84 137.84-6.18 39.07a10.86 10.86 0 009.07 12.42 10.72 10.72 0 001.7.13h75.65a18.18 18.18 0 0018-15.27l.74-3.83 14.24-90 .91-4.94a18.16 18.16 0 0118-15.3h11.31c73.3 0 130.67-29.62 147.44-115.32 7-35.8 3.38-65.69-15.16-86.72a72.27 72.27 0 00-20.73-15.82z'/><path d='M385.52 51.09C363.84 26.52 324.71 16 274.63 16H129.25a20.75 20.75 0 00-20.54 17.48l-60.55 382a12.43 12.43 0 0010.39 14.22 12.58 12.58 0 001.94.15h89.76l22.54-142.29-.7 4.46a20.67 20.67 0 0120.47-17.46h42.65c83.77 0 149.36-33.86 168.54-131.8.57-2.9 1.05-5.72 1.49-8.48 5.7-36.22-.05-60.87-19.72-83.19z'/></svg>\"\nexport const logoPinterest = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Pinterest</title><path d='M256.05 32c-123.7 0-224 100.3-224 224 0 91.7 55.2 170.5 134.1 205.2-.6-15.6-.1-34.4 3.9-51.4 4.3-18.2 28.8-122.1 28.8-122.1s-7.2-14.3-7.2-35.4c0-33.2 19.2-58 43.2-58 20.4 0 30.2 15.3 30.2 33.6 0 20.5-13.1 51.1-19.8 79.5-5.6 23.8 11.9 43.1 35.4 43.1 42.4 0 71-54.5 71-119.1 0-49.1-33.1-85.8-93.2-85.8-67.9 0-110.3 50.7-110.3 107.3 0 19.5 5.8 33.3 14.8 43.9 4.1 4.9 4.7 6.9 3.2 12.5-1.1 4.1-3.5 14-4.6 18-1.5 5.7-6.1 7.7-11.2 5.6-31.3-12.8-45.9-47-45.9-85.6 0-63.6 53.7-139.9 160.1-139.9 85.5 0 141.8 61.9 141.8 128.3 0 87.9-48.9 153.5-120.9 153.5-24.2 0-46.9-13.1-54.7-27.9 0 0-13 51.6-15.8 61.6-4.7 17.3-14 34.5-22.5 48a225.13 225.13 0 0063.5 9.2c123.7 0 224-100.3 224-224S379.75 32 256.05 32z'/></svg>\"\nexport const logoPlaystation = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Playstation</title><path d='M399.77 203c-.8-17.1-3.3-34.5-10.8-50.1a82.45 82.45 0 00-16.5-23.2 105.59 105.59 0 00-21.3-16.3c-17.1-10.2-37.5-17-84.4-31S192 64 192 64v358.3l79.9 25.7s.1-198.8.1-299.5v-3.8c0-9.3 7.5-16.8 16.1-16.8h.5c8.5 0 15.5 7.5 15.5 16.8V278c11 5.3 29.2 9.3 41.8 9.1a47.79 47.79 0 0024-5.7 49.11 49.11 0 0018.4-17.8 78.64 78.64 0 009.9-27.3c1.87-10.8 1.97-22.1 1.57-33.3zM86.67 357.8c27.4-9.8 89.3-29.5 89.3-29.5v-47.2s-76.5 24.8-111.3 37.1c-8.6 3.1-17.3 5.9-25.7 9.5-9.8 4.1-19.4 8.7-28.1 14.8a26.29 26.29 0 00-9.2 10.1 17.36 17.36 0 00-.5 13.6c2 5.1 5.8 9.3 10.1 12.6 7.8 5.9 17.1 9.5 26.4 12.2a262.42 262.42 0 0088.4 13.3c14.5-.2 36-1.9 50-4.4v-42s-11 2.5-41.3 12.5c-4.6 1.5-9.2 3.3-14 4.3a104.87 104.87 0 01-21.6 2.2c-6.5-.3-13.2-.7-19.3-3.1-2.2-1-4.6-2.2-5.5-4.6-.8-2 .3-4 1.7-5.4 2.8-2.9 6.8-4.5 10.6-6z'/><path d='M512 345.9c-.1-6-3.7-11.2-7.9-15-7.1-6.3-15.9-10.3-24.7-13.5-5.5-1.9-9.3-3.3-14.7-5-25.2-8.2-51.9-11.2-78.3-11.3-8 .3-23.1.5-31 1.4-21.9 2.5-67.3 15.4-67.3 15.4v48.8s67.5-21.6 96.5-31.8a94.43 94.43 0 0130.3-4.6c6.5.2 13.2.7 19.4 3.1 2.2.9 4.5 2.2 5.5 4.5.9 2.6-.9 5-2.9 6.5-4.7 3.8-10.7 5.3-16.2 7.4-41 14.5-132.7 44.7-132.7 44.7v47s117.2-39.6 170.8-58.8c8.9-3.3 17.9-6.1 26.4-10.4 7.9-4 15.8-8.6 21.8-15.3a19.74 19.74 0 005-13.1z'/></svg>\"\nexport const logoPwa = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Pwa</title><path d='M330.7 352l77.72-192H356.9l-53.16 124.07L265.93 160h-39.61l-40.58 124.07-28.63-56.53-25.9 79.46 26.3 45h50.7l36.68-111.27 35 111.27zM48.79 286.09h31.65a93.39 93.39 0 0025.62-3.21l8.18-25.19 22.88-70.39a55.75 55.75 0 00-6-7.82Q113.54 160 79.59 160H0v192h48.79zm41.9-81.92q6.89 6.92 6.88 18.52t-6 18.53q-6.64 7.62-24.44 7.61H48.79v-51.58h18.42q16.59 0 23.48 6.92zm286.16 113.44l14.79-37.25h42.69l-20.26-56.51L439.41 160 512 352h-53.53l-12.4-34.39z'/></svg>\"\nexport const logoPython = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Python</title><path d='M314 36.38c-18.59-3.06-45.8-4.47-64.27-4.38a311.09 311.09 0 00-51.66 4.38c-45.74 8-54.07 24.7-54.07 55.54V128h112v16H107.62C66.06 144 32.33 193.67 32 255.12v.88a162.91 162.91 0 003.13 32c9.29 46.28 38.23 80 72.49 80H128v-54c0-31.3 20.84-59.95 55-66.1l9.87-1.23H314a56.05 56.05 0 0015.06-2A52.48 52.48 0 00368 193.68V91.92c0-28.92-24.68-50.73-54-55.54zM194.93 105.5a20.37 20.37 0 1120.3-20.3 20.29 20.29 0 01-20.3 20.3z'/><path d='M475.28 217c-10.7-42.61-38.41-73-70.9-73h-17.71v47.45c0 39.57-26 68.22-57.74 73.13a63.54 63.54 0 01-9.69.75H198.08a60 60 0 00-15.23 1.95C160.54 273.14 144 291.7 144 315.77v101.77c0 29 29.14 46 57.73 54.31 34.21 9.95 71.48 11.75 112.42 0 27.19-7.77 53.85-23.48 53.85-54.31V384H256v-16h148.38c29.44 0 54.95-24.93 67.45-61.31A156.83 156.83 0 00480 256a160.64 160.64 0 00-4.72-39zM316.51 404a20.37 20.37 0 11-20.3 20.3 20.29 20.29 0 0120.3-20.3z'/></svg>\"\nexport const logoReact = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo React</title><path d='M410.66 180.72q-7.67-2.62-15.45-4.88 1.29-5.25 2.38-10.56c11.7-56.9 4.05-102.74-22.06-117.83-25-14.48-66 .61-107.36 36.69q-6.1 5.34-11.95 11-3.9-3.76-8-7.36c-43.35-38.58-86.8-54.83-112.88-39.69-25 14.51-32.43 57.6-21.9 111.53q1.58 8 3.55 15.93a320.85 320.85 0 00-17.77 5.6C48.46 198.9 16 226.73 16 255.59c0 29.82 34.84 59.72 87.77 77.85q6.44 2.19 13 4.07-2.13 8.49-3.77 17.17c-10 53-2.2 95.07 22.75 109.49 25.77 14.89 69-.41 111.14-37.31q5-4.38 10-9.25 6.32 6.11 13 11.86c40.8 35.18 81.09 49.39 106 34.93 25.75-14.94 34.12-60.14 23.25-115.13q-1.25-6.3-2.88-12.86 4.56-1.35 8.93-2.79c55-18.27 90.83-47.81 90.83-78-.02-29-33.52-57.01-85.36-74.9zm-129-81.08c35.43-30.91 68.55-43.11 83.65-34.39 16.07 9.29 22.32 46.75 12.22 95.88q-1 4.8-2.16 9.57a487.83 487.83 0 00-64.18-10.16 481.27 481.27 0 00-40.57-50.75q5.38-5.22 11.02-10.15zM157.73 280.25q6.51 12.6 13.61 24.89 7.23 12.54 15.07 24.71a435.28 435.28 0 01-44.24-7.13c4.24-13.72 9.46-27.97 15.56-42.47zm0-48.33c-6-14.19-11.08-28.15-15.25-41.63 13.7-3.07 28.3-5.58 43.52-7.48q-7.65 11.94-14.72 24.23t-13.58 24.88zm10.9 24.17q9.48-19.77 20.42-38.78 10.93-19 23.27-37.13c14.28-1.08 28.92-1.65 43.71-1.65s29.52.57 43.79 1.66q12.21 18.09 23.13 37t20.69 38.6Q334 275.63 323 294.73q-10.91 19-23 37.24c-14.25 1-29 1.55-44 1.55s-29.47-.47-43.46-1.38q-12.43-18.19-23.46-37.29t-20.48-38.76zM340.75 305q7.25-12.58 13.92-25.49a440.41 440.41 0 0116.12 42.32 434.44 434.44 0 01-44.79 7.65q7.62-12.09 14.75-24.48zm13.72-73.07q-6.64-12.65-13.81-25-7-12.18-14.59-24.06c15.31 1.94 30 4.52 43.77 7.67a439.89 439.89 0 01-15.37 41.39zm-98.24-107.45a439.75 439.75 0 0128.25 34.18q-28.35-1.35-56.74 0c9.33-12.34 18.88-23.79 28.49-34.18zM145.66 65.86c16.06-9.32 51.57 4 89 37.27 2.39 2.13 4.8 4.36 7.2 6.67A491.37 491.37 0 00201 160.51a499.12 499.12 0 00-64.06 10q-1.83-7.36-3.3-14.82c-9.05-46.23-3.06-81.08 12.02-89.83zm-23.41 251.85q-6-1.71-11.85-3.71c-23.4-8-42.73-18.44-56-29.81-11.88-10.19-17.9-20.36-17.9-28.6 0-17.51 26.06-39.85 69.52-55q8.19-2.85 16.52-5.21a493.54 493.54 0 0023.4 60.75 502.46 502.46 0 00-23.69 61.58zm111.13 93.67c-18.63 16.32-37.29 27.89-53.74 33.72-14.78 5.23-26.55 5.38-33.66 1.27-15.14-8.75-21.44-42.54-12.85-87.86q1.53-8 3.5-16a480.85 480.85 0 0064.69 9.39 501.2 501.2 0 0041.2 51c-2.98 2.93-6.03 5.75-9.14 8.48zm23.42-23.22c-9.72-10.51-19.42-22.14-28.88-34.64q13.79.54 28.08.54c9.78 0 19.46-.21 29-.64a439.33 439.33 0 01-28.2 34.74zm124.52 28.59c-2.86 15.44-8.61 25.74-15.72 29.86-15.13 8.78-47.48-2.63-82.36-32.72-4-3.44-8-7.13-12.07-11a484.54 484.54 0 0040.23-51.2 477.84 477.84 0 0065-10.05q1.47 5.94 2.6 11.64c4.81 24.3 5.5 46.28 2.32 63.47zm17.4-102.64c-2.62.87-5.32 1.71-8.06 2.53a483.26 483.26 0 00-24.31-60.94 481.52 481.52 0 0023.36-60.06c4.91 1.43 9.68 2.93 14.27 4.52 44.42 15.32 71.52 38 71.52 55.43 0 18.6-29.27 42.74-76.78 58.52z'/><path d='M256 298.55a43 43 0 10-42.86-43 42.91 42.91 0 0042.86 43z'/></svg>\"\nexport const logoReddit = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Reddit</title><path d='M324 256a36 36 0 1036 36 36 36 0 00-36-36z'/><circle cx='188' cy='292' r='36' transform='rotate(-22.5 187.997 291.992)'/><path d='M496 253.77c0-31.19-25.14-56.56-56-56.56a55.72 55.72 0 00-35.61 12.86c-35-23.77-80.78-38.32-129.65-41.27l22-79 66.41 13.2c1.9 26.48 24 47.49 50.65 47.49 28 0 50.78-23 50.78-51.21S441 48 413 48c-19.53 0-36.31 11.19-44.85 28.77l-90-17.89-31.1 109.52-4.63.13c-50.63 2.21-98.34 16.93-134.77 41.53A55.38 55.38 0 0072 197.21c-30.89 0-56 25.37-56 56.56a56.43 56.43 0 0028.11 49.06 98.65 98.65 0 00-.89 13.34c.11 39.74 22.49 77 63 105C146.36 448.77 199.51 464 256 464s109.76-15.23 149.83-42.89c40.53-28 62.85-65.27 62.85-105.06a109.32 109.32 0 00-.84-13.3A56.32 56.32 0 00496 253.77zM414 75a24 24 0 11-24 24 24 24 0 0124-24zM42.72 253.77a29.6 29.6 0 0129.42-29.71 29 29 0 0113.62 3.43c-15.5 14.41-26.93 30.41-34.07 47.68a30.23 30.23 0 01-8.97-21.4zM390.82 399c-35.74 24.59-83.6 38.14-134.77 38.14S157 423.61 121.29 399c-33-22.79-51.24-52.26-51.24-83A78.5 78.5 0 0175 288.72c5.68-15.74 16.16-30.48 31.15-43.79a155.17 155.17 0 0114.76-11.53l.3-.21.24-.17c35.72-24.52 83.52-38 134.61-38s98.9 13.51 134.62 38l.23.17.34.25A156.57 156.57 0 01406 244.92c15 13.32 25.48 28.05 31.16 43.81a85.44 85.44 0 014.31 17.67 77.29 77.29 0 01.6 9.65c-.01 30.72-18.21 60.19-51.25 82.95zm69.6-123.92c-7.13-17.28-18.56-33.29-34.07-47.72A29.09 29.09 0 01440 224a29.59 29.59 0 0129.41 29.71 30.07 30.07 0 01-8.99 21.39z'/><path d='M323.23 362.22c-.25.25-25.56 26.07-67.15 26.27-42-.2-66.28-25.23-67.31-26.27a4.14 4.14 0 00-5.83 0l-13.7 13.47a4.15 4.15 0 000 5.89c3.4 3.4 34.7 34.23 86.78 34.45 51.94-.22 83.38-31.05 86.78-34.45a4.16 4.16 0 000-5.9l-13.71-13.47a4.13 4.13 0 00-5.81 0z'/></svg>\"\nexport const logoRss = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Rss</title><path d='M108.56 342.78a60.34 60.34 0 1060.56 60.44 60.63 60.63 0 00-60.56-60.44z'/><path d='M48 186.67v86.55c52 0 101.94 15.39 138.67 52.11s52 86.56 52 138.67h86.66c0-151.56-125.66-277.33-277.33-277.33z'/><path d='M48 48v86.56c185.25 0 329.22 144.08 329.22 329.44H464C464 234.66 277.67 48 48 48z'/></svg>\"\nexport const logoSass = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Sass</title><path d='M511.78 328.07c-1.47-11.92-7.51-22.26-18-30.77a3.58 3.58 0 00-.43-.44l-.53-.38-.17-.12-5.57-4-.19-.14-.71-.5a3.5 3.5 0 00-.83-.35c-17.62-10.49-46.79-17.84-91.42-2.09-10.65-17.92-11.86-32.28-4.73-54.28 1.27-3.83.09-6.36-3.71-8-7.64-3.25-18.1-1.59-25.52.37-3.46.9-5.54 2.86-6.2 5.83-4.7 22-18.36 42.1-31.57 61.5l-.78 1.14c-8.14-17.26-6.45-30.63-.78-47.38 1.13-3.34.24-5.56-2.89-7.22-8.74-4.51-21.85-1.41-27.07.13-6.62 1.93-13.72 19.82-21.65 41.24-2 5.39-3.72 10-4.75 12.15-2.45 5-4.79 10.7-7.27 16.75-5.6 13.69-11.91 29.1-20.93 38.78-3.28-7.25 1.88-18.68 6.89-29.77 5.93-13.11 11.53-25.5 5.08-33.41a11.82 11.82 0 00-8.33-4.32 13.26 13.26 0 00-6.15 1c.67-5.65.7-10.11-.95-15.5-2.36-7.69-8.49-12-16.93-11.77-19.22.56-35.48 14.88-45.75 26.8-6.84 8-22 14.1-35.31 19.45-5.26 2.23-10.26 4.23-14.43 6.23-6.65-5.62-15.1-11.29-24-17.28-25-16.78-53.33-35.81-54.31-61.61-1.4-38.11 42-65.14 79.88-84.43 28.71-14.6 53.67-24.28 76.31-29.57 31.8-7.43 58.66-5.93 79.82 4.44 11.58 5.67 17 18 13.56 30.68-9 32.95-46.29 55.53-78.18 65.69-19.21 6.12-35.56 8.68-50 7.84-18.1-1.05-32.88-10.13-39.2-14a21.18 21.18 0 00-3.2-1.8l-.29-.07a3.21 3.21 0 00-3.19 1c-1.3 1.55-.84 4-.37 5.24 6.15 16.07 18.85 26.22 37.74 30.17a92.09 92.09 0 0018.78 1.79c44.21 0 100.62-25.49 121.34-46.48 14.13-14.3 24.42-29 28.68-54.35 4.45-26.55-13.55-45-31.89-53.5-44.57-20.57-95.19-12.44-129.81-2-40.5 12.21-82.4 34.41-114.94 60.93-40.12 32.67-54.62 63-43.12 90.25 11.81 27.93 40.61 45.4 68.46 62.3 9 5.45 17.56 10.64 25.27 16-2.32 1.13-4.69 2.28-7.1 3.43-23.38 11.33-49.9 24.08-64.61 45.15-10.68 15.35-12.68 30.63-5.94 45.42 3.6 7.87 10 13.21 18.89 15.87A50 50 0 0053 432c17.31 0 36.36-7 46.73-13.47 18.32-11.5 30.19-26.94 35.29-45.89 4.54-16.86 3.45-33.61-3.15-48.56l22.45-11.32c-10.83 36-2.53 57.5 6.59 69.36 3.36 4.37 9.42 7 16.19 7.12s13-2.43 16.52-6.77c6.66-8.25 11.58-17.9 16.11-27.55-.24 6.3.06 12.68 2.21 18.09 1.93 4.87 5.11 8.1 9.21 9.34 4.36 1.33 9.47.21 14.39-3.15 22.17-15.17 37.33-51.58 49.51-80.85 1.73-4.16 3.39-8.16 5-11.9a152.5 152.5 0 0012.5 31.07c1.18 2.14 1.08 3.08-.52 4.84-2.41 2.64-5.77 5.83-9.33 9.21-10.78 10.23-24.2 23-26 34.23-.7 4.5 2.4 8.6 7.21 9.53 14.47 2.88 31.9-1.33 46.64-11.25 13.4-9 18.44-21.55 15-37.19-3.33-15.06 4.27-33.76 22.59-55.62 3 12.53 7 22.66 12.52 31.53l-.15.12c-13.34 11.65-31.62 27.6-28.78 46.95a13.35 13.35 0 005.58 9.22 14.22 14.22 0 0011.2 2.06c17.47-3.67 30.62-11.06 40.18-22.57s6.07-24.27 2.85-34.17c25-6.78 47.26-6.61 68.1.5 11.7 4 20.09 10.57 24.93 19.64 6.09 11.41 2.8 21.94-9.29 29.65-3.71 2.37-5.5 3.82-5.61 5.65a2.65 2.65 0 001 2.23c1.4 1.15 5.72 3.15 15.49-3 9-5.65 14.28-13.34 15.63-23a39 39 0 00-.01-8.01zm-399.73 25.06l-.1 1.28c-1.56 14.64-9 27.4-22.15 38-8.26 6.66-17.23 10.75-25.25 11.53-5.6.54-9.67-.22-12.09-2.27-1.81-1.53-2.78-3.82-3-7-1.64-25.48 38.32-50.8 60.81-59.13a51.39 51.39 0 011.78 17.59zm102.35-71.86c-3.7 21.09-14.49 60.9-31.45 76.35-.81.74-1.49 1-1.8.93s-.55-.44-.8-1c-5.66-13.12-3.57-35.28 5-52.69 6.59-13.42 16-22.31 26.52-25a5.29 5.29 0 011.34-.19 1.58 1.58 0 011 .27 1.64 1.64 0 01.19 1.33zm83.49 76.88c-3.19 3.33-7.56 2.88-6.53 1.66l16.24-17.24c-1.31 5.93-5.18 10.84-9.71 15.58zm67.37-14.91a14.07 14.07 0 01-4.93 1.39c-.46-9.07 8.33-19.28 17-26.09 2.33 9.46-2.44 19.46-12.07 24.7z'/></svg>\"\nexport const logoSkype = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Skype</title><path d='M467.16 303.6a205.69 205.69 0 004.9-45.15c0-116.32-95.69-210.7-213.79-210.7a221.83 221.83 0 00-36.52 3A123.58 123.58 0 00155.93 32C87.55 32 32 86.72 32 154.15A119.56 119.56 0 0049 216a211.16 211.16 0 00-4.32 42.35c0 116.44 95.69 210.7 213.67 210.7a214 214 0 0039.09-3.5A125.45 125.45 0 00356.07 480C424.57 480 480 425.28 480 357.85a118 118 0 00-12.84-54.25zM368 359c-9.92 13.76-24.51 24.73-43.41 32.43S283.36 403 257.69 403c-30.69 0-56.36-5.37-76.55-15.87a101 101 0 01-35.24-30.8c-9.11-12.83-13.66-25.66-13.66-38 0-7.7 3-14.35 8.87-19.95 5.84-5.37 13.42-8.17 22.29-8.17 7.35 0 13.65 2.1 18.79 6.42 4.9 4.08 9.1 10.15 12.48 18.08A108.09 108.09 0 00207 336.15q6.32 8.22 17.86 13.65c7.82 3.62 18.2 5.48 31 5.48 17.62 0 32.09-3.73 42.94-11.08 10.74-7.12 15.88-15.75 15.88-26.25 0-8.28-2.69-14.82-8.29-19.95-5.83-5.37-13.42-9.57-22.87-12.37-9.69-3-22.87-6.18-39.21-9.56-22.17-4.67-41-10.27-56-16.57-15.28-6.42-27.65-15.4-36.76-26.48-9.22-11.32-13.77-25.55-13.77-42.24a67.86 67.86 0 0114.47-42.58c9.57-12.25 23.46-21.82 41.55-28.35 17.74-6.53 38.86-9.8 62.66-9.8 19.14 0 35.83 2.22 49.83 6.42s25.91 10.15 35.36 17.38 16.34 14.93 20.77 23 6.66 16.22 6.66 24c0 7.46-2.92 14.35-8.76 20.3a29.65 29.65 0 01-21.94 9.1c-7.93 0-14.12-1.87-18.43-5.6-4-3.5-8.17-8.87-12.72-16.69-5.37-9.91-11.79-17.85-19.14-23.45-7.24-5.36-19.14-8.16-35.71-8.16-15.29 0-27.77 3-37 9-8.87 5.72-13.19 12.37-13.19 20.18a18.26 18.26 0 004.32 12.25 38.13 38.13 0 0012.72 9.57 90.14 90.14 0 0017.15 6.53c6 1.64 15.87 4.09 29.53 7.12 17.38 3.62 33.25 7.82 47.26 12.13 14.24 4.55 26.49 10 36.52 16.45a72.93 72.93 0 0124.16 25.09c5.72 10 8.64 22.63 8.64 37.1A75.09 75.09 0 01368 359z'/></svg>\"\nexport const logoSlack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Slack</title><path d='M126.12 315.1A47.06 47.06 0 1179.06 268h47.06zM149.84 315.1a47.06 47.06 0 0194.12 0v117.84a47.06 47.06 0 11-94.12 0zM196.9 126.12A47.06 47.06 0 11244 79.06v47.06zM196.9 149.84a47.06 47.06 0 010 94.12H79.06a47.06 47.06 0 010-94.12zM385.88 196.9a47.06 47.06 0 1147.06 47.1h-47.06zM362.16 196.9a47.06 47.06 0 01-94.12 0V79.06a47.06 47.06 0 1194.12 0zM315.1 385.88a47.06 47.06 0 11-47.1 47.06v-47.06zM315.1 362.16a47.06 47.06 0 010-94.12h117.84a47.06 47.06 0 110 94.12z'/></svg>\"\nexport const logoSnapchat = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Snapchat</title><path d='M496 347.21a190.31 190.31 0 01-32.79-5.31c-27.28-6.63-54.84-24.26-68.12-52.43-6.9-14.63-2.64-18.59 11.86-24 14.18-5.27 29.8-7.72 36.86-23 5.89-12.76 1.13-27.76-10.41-35.49-15.71-10.53-30.35-.21-46.62 2.07 3.73-46.66 8.66-88.57-22.67-127.73C338.14 48.86 297.34 32 256.29 32s-81.86 16.86-107.81 49.33c-31.38 39.26-26.4 81.18-22.67 127.92-16.32-2.25-30.81-12.79-46.63-2.18-14.72 9.85-17 29.76-5.44 43s31.64 9.5 43.45 20.6c6.49 6.09 3.49 12.61-.35 20.14-14.48 28.4-39.26 45.74-69.84 51.56-4 .76-22.31 2.87-31 3.65 0 9.28.52 16.78 1.63 21.73 2.94 13.06 12.32 23.58 23.69 30.1 11.18 6.4 35.48 6.43 41.68 15.51 3 4.48 1.76 12.28 5.33 17.38a23.8 23.8 0 0015.37 9.75c18.61 3.61 37.32-7.2 56.42-2.1 14.85 3.95 26.52 15.87 39.26 24 15.51 9.85 32.34 16.42 50.83 17.49 38.1 2.21 59.93-18.91 90.58-36.42 19.5-11.14 38.15-3.86 58.88-2.68 20.1 1.15 23.53-9.25 29.62-24.88a27.37 27.37 0 001.54-4.85 10.52 10.52 0 002.28-1.47c2-1.57 10.55-2.34 12.76-2.86 10.28-2.44 20.34-5.15 29.17-11.2 11.31-7.76 17.65-18.5 19.58-32.64a93.73 93.73 0 001.38-15.67zM208 128c8.84 0 16 10.74 16 24s-7.16 24-16 24-16-10.74-16-24 7.16-24 16-24zm103.62 77.7c-15.25 15-35 23.3-55.62 23.3a78.37 78.37 0 01-55.66-23.34 8 8 0 0111.32-11.32A62.46 62.46 0 00256 213c16.39 0 32.15-6.64 44.39-18.7a8 8 0 0111.23 11.4zM304 176c-8.84 0-16-10.75-16-24s7.16-24 16-24 16 10.75 16 24-7.16 24-16 24z'/></svg>\"\nexport const logoSoundcloud = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Soundcloud</title><path d='M5.8 278a2.11 2.11 0 00-2 2L0 308.64l3.74 28.16a2.12 2.12 0 002.05 2 2.14 2.14 0 002-2l4.44-28.17L7.83 280a2.14 2.14 0 00-2-2zM26.85 262.32a2.13 2.13 0 00-4.26 0l-5 46.32 5 45.3a2.13 2.13 0 004.26 0l5.73-45.31-5.73-46.32zM106.17 219.59a4 4 0 00-3.87 3.87l-4 85.22 4 55.08a3.88 3.88 0 007.75 0l4.53-55.08-4.53-85.22a4 4 0 00-3.88-3.87zM65.12 249.21a3.09 3.09 0 00-3 3l-4.52 56.45 4.51 54.63a3 3 0 006 0l5.13-54.63-5.13-56.48a3.1 3.1 0 00-2.99-2.97zM147.88 367.6a4.83 4.83 0 004.75-4.74l3.93-54.15-3.93-113.46a4.75 4.75 0 00-9.5 0l-3.49 113.45 3.49 54.17a4.81 4.81 0 004.75 4.73zM233.28 367.85a6.6 6.6 0 006.5-6.52l2.74-52.6-2.74-131a6.5 6.5 0 10-13 0l-2.45 131c0 .08 2.45 52.67 2.45 52.67a6.59 6.59 0 006.5 6.45zM190.26 367.65a5.67 5.67 0 005.62-5.64l3.34-53.33-3.34-114.28a5.63 5.63 0 10-11.25 0l-3 114.29 3 53.32a5.66 5.66 0 005.63 5.6zM85.56 367.15a3.53 3.53 0 003.44-3.41l4.83-55.09-4.83-52.4a3.44 3.44 0 00-6.88 0l-4.26 52.38 4.26 55.08a3.5 3.5 0 003.44 3.44zM44.84 364.13a2.67 2.67 0 002.57-2.52l5.43-53-5.42-55a2.57 2.57 0 00-5.14 0l-4.78 55 4.78 53a2.62 2.62 0 002.56 2.53zM211.69 192.53a6.1 6.1 0 00-6.07 6.09l-2.71 110.11 2.71 53a6.07 6.07 0 0012.13 0l3-53-3-110.13a6.1 6.1 0 00-6.06-6.07zM127 367.71a4.41 4.41 0 004.31-4.3l4.23-54.71-4.28-104.7a4.32 4.32 0 00-8.63 0l-3.74 104.7 3.75 54.73a4.38 4.38 0 004.36 4.28zM174.17 362.54l3.63-53.8-3.63-117.28a5.19 5.19 0 10-10.37 0l-3.23 117.28 3.23 53.83a5.18 5.18 0 0010.36 0zM449 241.1a62.42 62.42 0 00-24.33 4.9c-5-57.18-52.61-102-110.66-102a111.92 111.92 0 00-40.28 7.58c-4.75 1.85-6 3.76-6.06 7.46V360.4a7.66 7.66 0 006.8 7.5l174.56.11c34.78 0 63-28.41 63-63.45s-28.2-63.46-63-63.46zM254.79 158.87a7 7 0 00-6.94 7L245 308.75l2.85 51.87a6.94 6.94 0 1013.87-.06v.06l3.09-51.87-3.09-142.93a7 7 0 00-6.93-6.95z'/></svg>\"\nexport const logoStackoverflow = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Stackoverflow</title><path d='M392 440V320h40v160H64V320h40v120z'/><path d='M149.1 308.77l198.57 40.87 8.4-39.32-198.57-40.87zm26.27-93.12L359.22 300 376 263.76l-183.82-84.84zm50.95-89l156 127.78 25.74-30.52-156-127.78zM328 32l-33.39 23.8 120.82 160.37L448 192zM144 400h204v-40H144z'/></svg>\"\nexport const logoSteam = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Steam</title><path d='M478.8 208.2a36 36 0 11-36-36 36 36 0 0136 36zM442.6 139a69.42 69.42 0 00-69.4 68.7l-43.2 62a48.86 48.86 0 00-5.4-.3 51.27 51.27 0 00-26.4 7.3L102.4 198a51.8 51.8 0 10-50.6 62.9 51.27 51.27 0 0026.4-7.3L274 332.2a51.76 51.76 0 00102.1-5.9l66.5-48.6a69.35 69.35 0 100-138.7zm0 22.9a46.45 46.45 0 11-46.5 46.5 46.54 46.54 0 0146.5-46.5zm-390.8 9a38.18 38.18 0 0133.7 20.2l-18.9-7.6v.1a30.21 30.21 0 00-22.6 56v.1l16.1 6.4a36.8 36.8 0 01-8.2.9 38.05 38.05 0 01-.1-76.1zm272.8 112.2a38.1 38.1 0 11-33.7 55.9c6.3 2.5 12.5 5 18.8 7.6a30.27 30.27 0 1022.5-56.2l-15.9-6.4a46.83 46.83 0 018.3-.9z'/></svg>\"\nexport const logoStencil = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Stencil</title><path d='M188.8 334.07h197.33L279.47 448H83.2zM512 199H106.61L0 313h405.39zM232.2 64h196.6L322.62 177.93H125.87z'/></svg>\"\nexport const logoTableau = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Tableau</title><path d='M242.69 340.3h26.62v-72.6h67v-25.82h-67v-72.6h-26.62v72.6h-66.15v25.82h66.15zM119.26 445.18h22.59v-64.54h59.7v-20.17h-59.7v-65.34h-22.59v65.34h-59.7v20.17h59.7zM370.15 212h22.59v-64.5h60.5v-19.37h-60.5V62.79h-22.59v65.34h-59.7v19.37h59.7zM246.72 496h19.36v-46h41.15v-16.92h-41.15v-46h-19.36v46h-40.33V450h40.33zM120.07 212h21v-65.31h60.51v-18.56H141V62.79h-21v65.34H59.56v18.56h60.51zM435.72 308.84h19.36v-45.18H496v-17.74h-40.92v-45.18h-19.36v45.18h-40.33v17.74h40.33z'/><path fill-rule='evenodd' d='M370.15 445.18h22.59v-64.54h60.5v-20.17h-60.5v-65.34h-22.59v65.34h-59.7v20.17h59.7z'/><path d='M307 74.08V60.37h-40.34V16h-14.52v44.37h-40.33v13.71h40.33v44.37h14.52V74.08zM56.11 305.61h14.52v-44.37H111v-13.71H70.63V204H56.11v43.56H16v14.52l40.11-.08z'/></svg>\"\nexport const logoTiktok = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Tiktok</title><path d='M412.19 118.66a109.27 109.27 0 01-9.45-5.5 132.87 132.87 0 01-24.27-20.62c-18.1-20.71-24.86-41.72-27.35-56.43h.1C349.14 23.9 350 16 350.13 16h-82.44v318.78c0 4.28 0 8.51-.18 12.69 0 .52-.05 1-.08 1.56 0 .23 0 .47-.05.71v.18a70 70 0 01-35.22 55.56 68.8 68.8 0 01-34.11 9c-38.41 0-69.54-31.32-69.54-70s31.13-70 69.54-70a68.9 68.9 0 0121.41 3.39l.1-83.94a153.14 153.14 0 00-118 34.52 161.79 161.79 0 00-35.3 43.53c-3.48 6-16.61 30.11-18.2 69.24-1 22.21 5.67 45.22 8.85 54.73v.2c2 5.6 9.75 24.71 22.38 40.82A167.53 167.53 0 00115 470.66v-.2l.2.2c39.91 27.12 84.16 25.34 84.16 25.34 7.66-.31 33.32 0 62.46-13.81 32.32-15.31 50.72-38.12 50.72-38.12a158.46 158.46 0 0027.64-45.93c7.46-19.61 9.95-43.13 9.95-52.53V176.49c1 .6 14.32 9.41 14.32 9.41s19.19 12.3 49.13 20.31c21.48 5.7 50.42 6.9 50.42 6.9v-81.84c-10.14 1.1-30.73-2.1-51.81-12.61z'/></svg>\"\nexport const logoTumblr = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Tumblr</title><path d='M390 32H120c-49.19 0-88 38.81-88 88v270c0 49.19 38.81 90 88 90h270c49.19 0 90-40.81 90-90V120c0-49.19-40.81-88-90-88zm-54 364h-52c-42.51 0-72-23.68-72-76v-80h-36v-48c42.51-11 57.95-48.32 60-80h44v72h52v56h-52l-.39 70.51c0 21.87 11 29.43 28.62 29.43L336 340z'/></svg>\"\nexport const logoTux = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Tux</title><path d='M443.66 405.05c-1.46-.79-2.85-1.54-4-2.2-6.47-3.83-13-10.52-11.85-17.83 2.42-15.94 2.89-23.47-.49-28.79a15.61 15.61 0 00-7.67-6.2v-.06c1.41-2.56 2.26-5.66 2.83-10.12 1.44-11-5-44-13.7-70.7-8.08-24.68-29.24-50-44.7-68.56l-3.61-4.34c-23.88-28.93-24.34-38.19-26.55-82.67-.32-6.47-.69-13.8-1.17-22C329.87 41.43 304 16 256 16c-25.2 0-44.62 7.15-57.72 21.26C187.79 48.55 182 64 182 80.78c0 29.52 2 53 2.15 54.29 1.4 35.7 1 41.22-8.31 57.55-2.23 3.93-8.38 10.87-14.89 18.21-8.48 9.57-18.09 20.41-23.36 29.22-3.77 6.31-5.88 12.63-8.11 19.33-3.4 10.21-7.26 21.78-18.15 36.57-12.57 17.07-15.52 29.61-11 47.45-4.94 6.45-4.83 14.37-4.75 20.23a25.84 25.84 0 01-.3 6.09c-2.29 7.59-12.42 9.4-22 10.18-1.58.12-3.1.21-4.55.29-7.26.39-13.53.74-17.13 6.3-3.47 5.36-1.12 13.8 2.14 25.48.72 2.58 1.46 5.25 2.19 8.06 1.83 7-.16 10.48-2.68 14.84-2.44 4.21-5.21 9-5.21 17.55 0 14.67 20 18 43.05 21.94 7.36 1.24 15 2.53 22.63 4.24a225.58 225.58 0 0134.08 10.68c9.72 3.73 17.4 6.68 26.43 6.68 16.18 0 28.25-9.77 39.92-19.21l2.15-1.75c5.53-4.49 21.5-4 34.34-3.64 3.46.1 6.73.2 9.65.2h6.22c13.48-.08 31.94-.18 42.23 2.5 3.75 1 6.2 3.72 9.29 7.19 5.87 6.56 13.17 14.75 33.39 14.75 19.39 0 29.55-8.71 41.32-18.8 7.16-6.13 14.56-12.48 25.07-17.86 3.92-2 7.62-3.87 11.08-5.61 22.64-11.38 35.11-17.65 35.11-27.82 0-9.91-12.24-16.5-20.34-20.86zM211.11 88.38a13.91 13.91 0 0112.47 9c1.95 5.55 1.81 10.42.21 12.94 0 0-.22-1-.36-1.44a14.85 14.85 0 00-6.44-8.59 11.35 11.35 0 00-8.94-1.47c-4.26 1.13-8.41 5-8.91 18.79-5.16-10.47-2.31-18 .92-23 2.31-3.73 7.47-6.33 11.05-6.23zm-17.5 375C192 479.24 175.2 479 170.09 478.59c-9.81-.82-21.66-4.69-33.13-8.43-4.52-1.47-9.19-3-13.73-4.34-13.2-3.89-30.12-6.74-43.72-9-3.22-.55-6.27-1.06-9.05-1.55s-4.61-1.27-5.2-2.3c-1-1.65.38-5.25 1.93-9.41C69.27 438 72.11 430.34 72 421c0-3.91-1.47-8.3-2.84-12.56-1.62-5-3.28-10.17-1.93-12.62 1.23-2.23 6.75-2.49 11.6-2.49h2.26c3.55 0 6.62.06 8.75-.53 6.51-1.81 14.86-6.92 17.81-13.88.9-2.17 1.37-6.94 2-14 .37-4.12.74-8.37 1.22-10.58a3.55 3.55 0 012.11-2.55c1.65-.77 6.78-1.91 18.63 4.08 11.18 5.65 22.88 25.84 34.2 45.37 3.56 6.14 6.92 11.94 10.3 17.36 14.04 22.54 18.83 31.6 17.5 44.8zm128.84-31.56a68.74 68.74 0 01-4.55 10.9.58.58 0 01-1.08-.42 56.61 56.61 0 002.11-18.43c-.25-4.73-.4-7.59-2.66-8.51s-4.26.83-9.45 5.54c-1.1 1-2.36 2.14-3.78 3.4-10.8 9.47-26.88 20.68-55.61 23.37-16.84 1.59-27.59-4.63-30.92-8.14a2.16 2.16 0 00-3.07-.08 2.23 2.23 0 00-.51 2.29c2.12 6.84 1.2 12.26-.49 16.19-.95 2.2-1.85 2.05-2-.34-.25-4.64-1-9.88-3-14.19-3.11-6.94-7-14.34-8.89-17.88v-.05c3.24-1.49 8.86-4.83 11.37-10.88s4.48-18-9.82-31.74c-6.28-6.05-22.1-17.16-36.06-27-10.9-7.65-22.17-15.56-23.65-17.51-4.49-5.89-6.37-9.3-6.94-19.65.07-2.3.13-4.59.19-6.89l.27-2.49a.58.58 0 011.15 0 63.07 63.07 0 002 9.72c1.08 3.73 2.4 7.58 3.62 9.18 3.19 4.22 7.56 7.39 11.67 8.49a5.48 5.48 0 005-.72c2.93-2.33 2.65-7.6 2.19-16.34-.47-9-1.11-21.34 1.85-34.55 5.62-25 10.91-32.51 17.61-42 .86-1.22 1.75-2.47 2.65-3.79 1.44-2.08 3-4.1 4.67-6.23 7.47-9.61 15.93-20.49 13.92-40.95-.51-5.19-.76-8.83-.86-11.39a1 1 0 011.88-.59l.49.77 1.21 2c4.86 8 13.64 22.57 25.1 22.57a13.62 13.62 0 002.36-.21c23.39-3.93 51.9-30.25 52.17-30.51 3.12-3 2.84-6.14 1.64-7.91a5.18 5.18 0 00-6.45-1.72c-3.29 1.4-7.14 3.15-11.22 5-13.82 6.27-37 16.75-42.25 14.34a23.11 23.11 0 01-6.32-5.13 1 1 0 011.14-1.65c5.59 2.29 9.55 1.45 14.2-.08l1-.34c9.37-3.09 14.2-4.77 30.76-12.08a97.55 97.55 0 0116.26-5.93c4-1 6.42-1.63 7.71-4.34a6.65 6.65 0 00-.5-7.13c-1.53-1.87-4.07-2.57-7-1.9-3.22.75-4.7 3-6.41 4.49-2.4 2.05-5 4.16-17.19 8.65-27 10-34.58 10.61-45.21 3.43-9.84-6.69-15.15-13.23-15.15-16 0-2.13 5.45-5.7 8.71-7.84 1.33-.87 2.59-1.69 3.62-2.46 4.34-3.22 13-11.39 13.38-11.73 5.4-5.41 17.91-2.18 25 2.58a2.23 2.23 0 001.72.41 2.14 2.14 0 001.68-2.58c-4.2-17.46-.13-27.34 4-32.55a22.58 22.58 0 0117.48-8.48c12.81 0 21.76 10 21.76 24.42 0 11-2.82 16.79-5.48 20.3a1.73 1.73 0 01-2.58.18 1.78 1.78 0 01-.24-2.2A24.61 24.61 0 00290 114a16.58 16.58 0 00-16.84-16.67c-3.94 0-13.48 1.5-16.77 15.44a29.81 29.81 0 00-.34 11.07l.08.71c.9 7.38 15.3 12.51 27.23 15.51 11.36 2.85 13 6.22 8.84 19.63s3.11 26.23 5.7 29.57a78.3 78.3 0 018.31 12.47 93.8 93.8 0 016.62 16.48c2.17 6.79 4.05 12.65 10.63 21.22 11.07 14.4 17.66 48.64 15 78-.21 2.41-.53 4.29-.77 5.67-.43 2.53-.72 4.2.66 5.38s3.16.7 7.26-.63l3.43-1.09a109.33 109.33 0 0112.58-2.8 2.15 2.15 0 001.59-1.16c3.43-6.91 3.85-15.22 4-22.47q0-1.31.06-2.79c.19-7.77.45-18.93-2.95-32a1 1 0 011.93-.64 93 93 0 016.66 25.55c2.55 22.58-1.9 32.09-1.94 32.17a1.61 1.61 0 00.95 2.25 17.12 17.12 0 016.95 4.67c1.46 1.66.93 2.4-1.14 1.62a36.26 36.26 0 00-12.77-2.29c-10.4 0-18.09 4.95-21.51 9.19-3.19 3.94-3.7 7.67-3.83 11.27l-.06.05c-7.48-.75-12.94 1.21-17.47 6.21l-.08.09c-6.26 7.75-4 24.63-1.29 38.48 1.28 6.45 5.59 25.52 1.73 37.68zm96.1 10.07c-15.71 6.71-25.43 14.51-34 21.39-5.65 4.53-11 8.81-17.28 12.14-10.12 5.34-24.91 6.53-33.27-7.7-2.37-4-.71-9.86 1.58-17.95 3.05-10.75 7.23-25.46 3.71-44.65-.94-5.12-1.77-9.51-2.49-13.31C334 377 332.9 371.43 334 367c.63-2.45 3.43-3 5.87-3a20.83 20.83 0 012.63.19 29.51 29.51 0 007 12.1c5.7 5.86 13.63 8.83 23.56 8.85 2.1.17 25.94 1.55 36.54-22.4 1.46.18 3.65.7 4.3 2.3 1.28 3.19-.27 8.91-1.52 13.5-.9 3.31-1.68 6.16-1.63 8.37.31 16 11 22.78 25.83 32.16 1.79 1.13 3.66 2.31 5.55 3.54S445 425 445 426c-.52 4.79-20 13.16-26.45 15.91z'/></svg>\"\nexport const logoTwitch = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Twitch</title><path d='M80 32l-32 80v304h96v64h64l64-64h80l112-112V32zm336 256l-64 64h-96l-64 64v-64h-80V80h304z'/><path d='M320 143h48v129h-48zM208 143h48v129h-48z'/></svg>\"\nexport const logoTwitter = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Twitter</title><path d='M496 109.5a201.8 201.8 0 01-56.55 15.3 97.51 97.51 0 0043.33-53.6 197.74 197.74 0 01-62.56 23.5A99.14 99.14 0 00348.31 64c-54.42 0-98.46 43.4-98.46 96.9a93.21 93.21 0 002.54 22.1 280.7 280.7 0 01-203-101.3A95.69 95.69 0 0036 130.4c0 33.6 17.53 63.3 44 80.7A97.5 97.5 0 0135.22 199v1.2c0 47 34 86.1 79 95a100.76 100.76 0 01-25.94 3.4 94.38 94.38 0 01-18.51-1.8c12.51 38.5 48.92 66.5 92.05 67.3A199.59 199.59 0 0139.5 405.6a203 203 0 01-23.5-1.4A278.68 278.68 0 00166.74 448c181.36 0 280.44-147.7 280.44-275.8 0-4.2-.11-8.4-.31-12.5A198.48 198.48 0 00496 109.5z'/></svg>\"\nexport const logoUsd = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Usd</title><path d='M240 480v-36.42C160.53 439 112.25 398.06 112 336h72c1.77 26.34 23.86 46.45 56 50v-98l-26.77-7c-61-14.18-93.64-49.39-93.64-102.08C119.59 116.81 164.08 76.08 240 70V32h32v38c77.39 6.3 119 47.74 120 106h-72c-.76-24.06-15.83-43.39-48-46v92l30.82 7.28C367.61 243.46 400 277 400 332c0 64.34-43.74 105.88-128 111.32V480zm0-264v-86c-27.59 1.52-47.27 18.47-47.27 42.53 0 22.3 16.39 36.88 47.27 43.47zm32 78v92c38.15-1.54 56.38-18.92 56.38-45.77 0-24.58-18.23-41.13-56.38-46.23z'/></svg>\"\nexport const logoVenmo = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Venmo</title><path d='M444.17 32H70.28C49.85 32 32 46.7 32 66.89V441.6c0 20.31 17.85 38.4 38.28 38.4h373.78c20.54 0 35.94-18.2 35.94-38.39V66.89C480.12 46.7 464.6 32 444.17 32zM278 387H174.32l-41.57-248.56 90.75-8.62 22 176.87c20.53-33.45 45.88-86 45.88-121.87 0-19.62-3.36-33-8.61-44l82.63-16.72c9.56 15.78 13.86 32 13.86 52.57-.01 65.5-55.92 150.59-101.26 210.33z'/></svg>\"\nexport const logoVercel = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Vercel</title><path fill-rule='evenodd' d='M256 48l240 416H16z'/></svg>\"\nexport const logoVimeo = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Vimeo</title><path d='M476.9 114c-5-23.39-17.51-38.78-40.61-46.27s-64.92-4.5-94.12 16.79c-26.79 19.51-46.26 54.42-54 78.28a4 4 0 005.13 5c10.77-3.8 21.72-7.1 34-6.45 15 .8 24.51 12 24.91 25.29.3 9.79-.2 18.69-3.6 27.68-10.74 28.68-27.61 56.46-47.55 80.75a72.49 72.49 0 01-10 9.89c-10.21 8.29-18.81 6.1-25.41-5.2-5.4-9.29-9-18.88-12.2-29.08-12.4-39.67-16.81-80.84-23.81-121.52-3.3-19.48-7-39.77-18-56.86-11.6-17.79-28.61-24.58-50-22-14.7 1.8-36.91 17.49-47.81 26.39 0 0-56 46.87-81.82 71.35l21.2 27s17.91-12.49 27.51-18.29c5.7-3.39 12.4-4.09 17.2.2 4.51 3.9 9.61 9 12.31 14.1 5.7 10.69 11.2 21.88 14.7 33.37 13.2 44.27 25.51 88.64 37.81 133.22 6.3 22.78 13.9 44.17 28 63.55 19.31 26.59 39.61 32.68 70.92 21.49 25.41-9.09 46.61-26.18 66-43.87 33.11-30.18 59.12-65.36 85.52-101.14 20.41-27.67 37.31-55.67 51.41-86.95C478.5 179.74 484 147.26 476.9 114z'/></svg>\"\nexport const logoVk = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Vk</title><path d='M484.7 132c3.56-11.28 0-19.48-15.75-19.48h-52.37c-13.21 0-19.31 7.18-22.87 14.86 0 0-26.94 65.6-64.56 108.13-12.2 12.3-17.79 16.4-24.4 16.4-3.56 0-8.14-4.1-8.14-15.37V131.47c0-13.32-4.06-19.47-15.25-19.47H199c-8.14 0-13.22 6.15-13.22 12.3 0 12.81 18.81 15.89 20.84 51.76V254c0 16.91-3 20-9.66 20-17.79 0-61-66.11-86.92-141.44C105 117.64 99.88 112 86.66 112H33.79C18.54 112 16 119.17 16 126.86c0 13.84 17.79 83.53 82.86 175.77 43.21 63 104.72 96.86 160.13 96.86 33.56 0 37.62-7.69 37.62-20.5v-47.66c0-15.37 3.05-17.93 13.73-17.93 7.62 0 21.35 4.09 52.36 34.33C398.28 383.6 404.38 400 424.21 400h52.36c15.25 0 22.37-7.69 18.3-22.55-4.57-14.86-21.86-36.38-44.23-62-12.2-14.34-30.5-30.23-36.09-37.92-7.62-10.25-5.59-14.35 0-23.57-.51 0 63.55-91.22 70.15-122' fill-rule='evenodd'/></svg>\"\nexport const logoVue = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Vue</title><path d='M256 144.03l-55.49-96.11h-79.43L256 281.61 390.92 47.92h-79.43L256 144.03z'/><path d='M409.4 47.92L256 313.61 102.6 47.92H15.74L256 464.08 496.26 47.92H409.4z'/></svg>\"\nexport const logoWebComponent = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Web Component</title><path d='M179.9 388l-76.16-132 76.16 132zM179.9 388h152.21l76.15-132-76.15-132H179.9l-76.16 132 76.16 132zM103.74 256l76.16-132-76.16 132z' class='ionicon-fill-none'/><path d='M496 256L376 48H239.74l-43.84 76h136.21l76.15 132-76.15 132H195.9l43.84 76H376l120-208z'/><path d='M179.9 388l-76.16-132 76.16-132 43.84-76H136L16 256l120 208h87.74l-43.84-76z'/></svg>\"\nexport const logoWechat = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Wechat</title><path data-name='XMLID 501 -1' d='M408.67 298.53a21 21 0 1120.9-21 20.85 20.85 0 01-20.9 21m-102.17 0a21 21 0 1120.9-21 20.84 20.84 0 01-20.9 21m152.09 118.86C491.1 394.08 512 359.13 512 319.51c0-71.08-68.5-129.35-154.41-129.35s-154.42 58.27-154.42 129.35 68.5 129.34 154.42 129.34c17.41 0 34.83-2.33 49.92-7 2.49-.86 3.48-1.17 4.64-1.17a16.67 16.67 0 018.13 2.34L454 462.83a11.62 11.62 0 003.48 1.17 5 5 0 004.65-4.66 14.27 14.27 0 00-.77-3.86c-.41-1.46-5-16-7.36-25.27a18.94 18.94 0 01-.33-3.47 11.4 11.4 0 015-9.35'/><path data-name='XMLID 505 -7' d='M246.13 178.51a24.47 24.47 0 010-48.94c12.77 0 24.38 11.65 24.38 24.47 1.16 12.82-10.45 24.47-24.38 24.47m-123.06 0A24.47 24.47 0 11147.45 154a24.57 24.57 0 01-24.38 24.47M184.6 48C82.43 48 0 116.75 0 203c0 46.61 24.38 88.56 63.85 116.53C67.34 321.84 68 327 68 329a11.38 11.38 0 01-.66 4.49C63.85 345.14 59.4 364 59.21 365s-1.16 3.5-1.16 4.66a5.49 5.49 0 005.8 5.83 7.15 7.15 0 003.49-1.17L108 351c3.49-2.33 5.81-2.33 9.29-2.33a16.33 16.33 0 015.81 1.16c18.57 5.83 39.47 8.16 60.37 8.16h10.45a133.24 133.24 0 01-5.81-38.45c0-78.08 75.47-141 168.35-141h10.45C354.1 105.1 277.48 48 184.6 48'/></svg>\"\nexport const logoWhatsapp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Whatsapp</title><path d='M414.73 97.1A222.14 222.14 0 00256.94 32C134 32 33.92 131.58 33.87 254a220.61 220.61 0 0029.78 111L32 480l118.25-30.87a223.63 223.63 0 00106.6 27h.09c122.93 0 223-99.59 223.06-222A220.18 220.18 0 00414.73 97.1zM256.94 438.66h-.08a185.75 185.75 0 01-94.36-25.72l-6.77-4-70.17 18.32 18.73-68.09-4.41-7A183.46 183.46 0 0171.53 254c0-101.73 83.21-184.5 185.48-184.5a185 185 0 01185.33 184.64c-.04 101.74-83.21 184.52-185.4 184.52zm101.69-138.19c-5.57-2.78-33-16.2-38.08-18.05s-8.83-2.78-12.54 2.78-14.4 18-17.65 21.75-6.5 4.16-12.07 1.38-23.54-8.63-44.83-27.53c-16.57-14.71-27.75-32.87-31-38.42s-.35-8.56 2.44-11.32c2.51-2.49 5.57-6.48 8.36-9.72s3.72-5.56 5.57-9.26.93-6.94-.46-9.71-12.54-30.08-17.18-41.19c-4.53-10.82-9.12-9.35-12.54-9.52-3.25-.16-7-.2-10.69-.2a20.53 20.53 0 00-14.86 6.94c-5.11 5.56-19.51 19-19.51 46.28s20 53.68 22.76 57.38 39.3 59.73 95.21 83.76a323.11 323.11 0 0031.78 11.68c13.35 4.22 25.5 3.63 35.1 2.2 10.71-1.59 33-13.42 37.63-26.38s4.64-24.06 3.25-26.37-5.11-3.71-10.69-6.48z' fill-rule='evenodd'/></svg>\"\nexport const logoWindows = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Windows</title><path d='M480 265H232v179l248 36V265zM216 265H32v150l184 26.7V265zM480 32L232 67.4V249h248V32zM216 69.7L32 96v153h184V69.7z'/></svg>\"\nexport const logoWordpress = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Wordpress</title><path d='M259 271.3L226.2 367h-.1l-25.4 73.1c1.8.5 3.5.9 5.3 1.4h.3a192.51 192.51 0 0049.5 6.5 157 157 0 0024.9-1.8 184.3 184.3 0 0032.5-7.1c2.6-.8 5.2-1.7 7.8-2.6-2.8-6-8.8-19.3-9.1-19.9zM80.8 180.5C70.8 203.1 64 230.9 64 256c0 6.3.3 12.6.9 18.8 6.9 71.2 52.9 131 116.1 157.9 2.6 1.1 5.3 2.2 8 3.2L96 180.6c-8-.3-9.5.2-15.2-.1z'/><path d='M430.2 175.4a188 188 0 00-15.1-26.6c-1.6-2.4-3.4-4.8-5.1-7.2A193 193 0 00325.1 77a189.2 189.2 0 00-69.2-13 191.51 191.51 0 00-149.4 71.7A196 196 0 0089 161.3c14.2.1 31.8.1 33.8.1 18.1 0 46-2.2 46-2.2 9.4-.6 10.4 13.1 1.1 14.2 0 0-9.4 1.1-19.8 1.6L213 362l37.8-113.3-26.8-73.6c-9.4-.5-18.1-1.6-18.1-1.6-9.4-.5-8.2-14.8 1-14.2 0 0 28.5 2.2 45.5 2.2 18.1 0 46-2.2 46-2.2 9.3-.6 10.5 13.1 1.1 14.2 0 0-9.3 1.1-19.7 1.6l62.3 185.6 17.3-57.6c8.7-22.4 13.1-40.9 13.1-55.7 0-21.3-7.7-36.1-14.3-47.6-8.7-14.3-16.9-26.3-16.9-40.4 0-15.9 12-30.7 29-30.7h2.2c26.2-.7 34.8 25.3 35.9 43v.6c.4 7.2.1 12.5.1 18.8 0 17.4-3.3 37.1-13.1 61.8l-39 112.8-22.3 65.7c1.8-.8 3.5-1.6 5.3-2.5 56.7-27.4 98-82 106.7-146.7a172.07 172.07 0 001.9-26 191.11 191.11 0 00-17.8-80.8z'/><path d='M256 48a208.06 208.06 0 0181 399.66A208.06 208.06 0 01175 64.34 206.7 206.7 0 01256 48m0-16C132.29 32 32 132.29 32 256s100.29 224 224 224 224-100.29 224-224S379.71 32 256 32z'/></svg>\"\nexport const logoXbox = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Xbox</title><path d='M126.8 248.3c39.7-58.6 77.9-92.8 77.9-92.8s-42.1-48.9-92.8-67.4l-3.3-.8A224.13 224.13 0 0077.2 391c0-4.4.6-70.3 49.6-142.7zM480 256a223.71 223.71 0 00-76.6-168.7l-3.2.9c-50.7 18.5-92.9 67.4-92.9 67.4s38.2 34.2 77.9 92.8c49 72.4 49.6 138.3 49.5 142.7A222.8 222.8 0 00480 256zM201.2 80.9c29.3 13.1 54.6 34.6 54.6 34.6s25.5-21.4 54.8-34.6c36.8-16.5 64.9-11.3 72.3-9.5a224.06 224.06 0 00-253.8 0c7.2-1.8 35.2-7.1 72.1 9.5zM358.7 292.9C312.4 236 255.8 199 255.8 199s-56.3 37-102.7 93.9c-39.8 48.9-54.6 84.8-62.6 107.8l-1.3 4.8a224 224 0 00333.6 0l-1.4-4.8c-8-23-22.9-58.9-62.7-107.8z'/></svg>\"\nexport const logoXing = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Xing</title><path d='M313.8 303.9L469 32H365L209.4 303.8a1.35 1.35 0 000 1.7l98.9 173.8c.4.7.8.7 1.6.7H413l-99.3-174.7a1.74 1.74 0 01.1-1.4zM221.9 216.2L163 113a2 2 0 00-2-1H65l58.9 104.4a1.13 1.13 0 01.1.8L43 352h96.8a1.54 1.54 0 001.6-.9l80.5-133.7a2.44 2.44 0 000-1.2z'/></svg>\"\nexport const logoYahoo = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Yahoo</title><path d='M410.32 37.13c-13.56 0-27-.93-39.12-5.13L256 218.67 140.8 32c-12.12 4.2-24.84 5.13-38.4 5.13-13.32 0-26.52-1.05-38.4-5.13l153.6 248.15V480c12-4.08 25-5.13 38.4-5.13s26.4 1.05 38.4 5.13V280.5L448 32c-11.88 4-24.36 5.13-37.68 5.13z'/></svg>\"\nexport const logoYen = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Yen</title><path d='M448 32h-80L256 253.13 144 32H64l112.37 208H128v48h73.56L216 319v17h-88v48h88v96h80v-96h88v-48h-88v-17l14.89-31H384v-48h-48.29z'/></svg>\"\nexport const logoYoutube = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Logo Youtube</title><path d='M508.64 148.79c0-45-33.1-81.2-74-81.2C379.24 65 322.74 64 265 64h-18c-57.6 0-114.2 1-169.6 3.6C36.6 67.6 3.5 104 3.5 149 1 184.59-.06 220.19 0 255.79q-.15 53.4 3.4 106.9c0 45 33.1 81.5 73.9 81.5 58.2 2.7 117.9 3.9 178.6 3.8q91.2.3 178.6-3.8c40.9 0 74-36.5 74-81.5 2.4-35.7 3.5-71.3 3.4-107q.34-53.4-3.26-106.9zM207 353.89v-196.5l145 98.2z'/></svg>\"\nexport const magnet = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Magnet</title><path stroke-linecap='round' stroke-miterlimit='10' d='M191.98 463.79v-48M90.16 421.61l33.94-33.94M47.98 319.79h48' class='ionicon-stroke-width'/><path d='M267.56 312.32l-31.11 31.11a16 16 0 000 22.63l45.26 45.25a16 16 0 0022.62 0l31.12-31.11a4 4 0 000-5.66l-62.23-62.22a4 4 0 00-5.66 0zM131.8 176.55l-31.11 31.12a16 16 0 000 22.62l45.25 45.26a16 16 0 0022.63 0l31.11-31.11a4 4 0 000-5.66l-62.22-62.23a4 4 0 00-5.66 0zM428.85 83.28a144 144 0 00-203.71-.06l-65.06 65.05a4 4 0 000 5.66l62.23 62.22a4 4 0 005.66 0l65-65.05a48 48 0 0168.46.59c18.3 18.92 17.47 49.24-1.14 67.85L295.85 284a4 4 0 000 5.66l62.22 62.23a4 4 0 005.66 0l64.08-64.08c56.37-56.34 57.37-148.13 1.04-204.53z'/></svg>\"\nexport const magnetOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Magnet</title><path d='M421.83 293.82A144 144 0 00218.18 90.17M353.94 225.94a48 48 0 00-67.88-67.88' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M192 464v-48M90.18 421.82l33.94-33.94M48 320h48' class='ionicon-stroke-width'/><path d='M286.06 158.06L172.92 271.19a32 32 0 01-45.25 0L105 248.57a32 32 0 010-45.26L218.18 90.17M421.83 293.82L308.69 407a32 32 0 01-45.26 0l-22.62-22.63a32 32 0 010-45.26l113.13-113.17M139.6 169.98l67.88 67.89M275.36 305.75l67.89 67.88' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const magnetSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Magnet</title><path stroke-linecap='square' stroke-miterlimit='10' d='M191.98 463.58v-48M90.16 421.4l33.94-33.94M47.98 319.58h48' class='ionicon-stroke-width'/><path d='M422.2 89.82a144 144 0 00-203.71-.07l-67.88 67.88 67.88 67.89 67.88-67.89a48 48 0 0168.46.59c18.3 18.92 17.48 49.24-1.14 67.86l-67.32 67.32 67.88 67.88 66.91-66.91c56.37-56.37 57.37-148.15 1.04-204.55zM82.718 225.517l45.255-45.254 67.883 67.882L150.6 293.4zM218.49 361.27l45.254-45.254 67.882 67.882-45.255 45.255z'/></svg>\"\nexport const mail = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail</title><path d='M424 80H88a56.06 56.06 0 00-56 56v240a56.06 56.06 0 0056 56h336a56.06 56.06 0 0056-56V136a56.06 56.06 0 00-56-56zm-14.18 92.63l-144 112a16 16 0 01-19.64 0l-144-112a16 16 0 1119.64-25.26L256 251.73l134.18-104.36a16 16 0 0119.64 25.26z'/></svg>\"\nexport const mailOpen = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail Open</title><path d='M448.67 154.45L274.1 68.2a41.1 41.1 0 00-36.2 0L63.33 154.45A55.6 55.6 0 0032 204.53v184.61c0 30.88 25.42 56 56.67 56h334.66c31.25 0 56.67-25.12 56.67-56V204.53a55.6 55.6 0 00-31.33-50.08zM252.38 96.82a8.22 8.22 0 017.24 0L429 180.48l-172 85a8.22 8.22 0 01-7.24 0L80.35 181.81z'/></svg>\"\nexport const mailOpenOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail Open</title><path d='M441.6 171.61L266.87 85.37a24.57 24.57 0 00-21.74 0L70.4 171.61A40 40 0 0048 207.39V392c0 22.09 18.14 40 40.52 40h335c22.38 0 40.52-17.91 40.52-40V207.39a40 40 0 00-22.44-35.78z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M397.33 368L268.07 267.46a24 24 0 00-29.47 0L109.33 368M309.33 295l136-103M61.33 192l139 105' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const mailOpenSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail Open</title><path d='M471.05 168.36L263.24 65.69a16.37 16.37 0 00-14.48 0L41 168.36a16 16 0 00-9 14.31V432a16.09 16.09 0 0016.19 16h415.62A16.09 16.09 0 00480 432V182.67a16 16 0 00-8.95-14.31zM256 97.89l173 85.44-175.7 86.78-173-85.44z'/></svg>\"\nexport const mailOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail</title><rect x='48' y='96' width='416' height='320' rx='40' ry='40' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M112 160l144 112 144-112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const mailSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail</title><path d='M464 80H48a16 16 0 00-16 16v320a16 16 0 0016 16h416a16 16 0 0016-16V96a16 16 0 00-16-16zM265.82 284.63a16 16 0 01-19.64 0L89.55 162.81l19.64-25.26L256 251.73l146.81-114.18 19.64 25.26z'/></svg>\"\nexport const mailUnread = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail Unread</title><path d='M496 128.05A64 64 0 00389.62 80a64.52 64.52 0 00-12.71 15.3v.06c-.54.9-1.05 1.82-1.55 2.74l-.24.49c-.42.79-.81 1.59-1.19 2.4-.12.25-.23.5-.34.75-.33.73-.65 1.47-.95 2.22-.13.31-.25.62-.37.93-.27.7-.53 1.4-.78 2.11l-.36 1.06c-.22.68-.43 1.37-.63 2.06-.12.39-.23.77-.33 1.16-.19.67-.35 1.35-.51 2-.1.41-.2.82-.29 1.23-.14.68-.27 1.37-.39 2-.08.42-.16.84-.23 1.26-.11.7-.2 1.41-.29 2.12-.05.41-.11.82-.16 1.24-.08.77-.13 1.54-.19 2.32 0 .36-.06.72-.08 1.08-.06 1.14-.1 2.28-.1 3.44 0 1 0 2 .08 2.94v.64q.08 1.41.21 2.82l.06.48c.09.85.19 1.69.32 2.52 0 .17 0 .35.07.52.14.91.31 1.81.49 2.71 0 .22.09.43.13.65.18.86.38 1.72.6 2.57v.19c.23.89.48 1.76.75 2.63l.21.68c.27.85.55 1.68.85 2.51.06.18.13.36.2.54.27.71.55 1.42.84 2.12.08.21.16.41.25.61.34.79.69 1.58 1.06 2.36l.33.67c.35.7.7 1.4 1.07 2.09a64.34 64.34 0 0022.14 23.81 62.22 62.22 0 007.62 4.15l.39.18q2.66 1.2 5.43 2.16l.95.32 1.5.47c.45.14.9.26 1.36.39l1.92.5 1.73.4 1.15.23 1.83.33.94.15c.9.13 1.81.25 2.72.35l.77.07c.73.06 1.47.12 2.21.16l.86.05c1 0 1.94.08 2.92.08 1.16 0 2.3 0 3.44-.1l1.08-.08c.78-.06 1.55-.11 2.32-.19l1.25-.16c.7-.09 1.41-.18 2.11-.29l1.26-.23c.68-.12 1.37-.25 2-.39l1.23-.29c.68-.16 1.36-.32 2-.51.39-.1.77-.21 1.16-.33.69-.2 1.38-.41 2.06-.63l1.06-.36c.71-.25 1.41-.51 2.11-.78l.93-.37c.75-.3 1.49-.62 2.22-.95l.75-.34c.81-.38 1.61-.77 2.4-1.19l.49-.24c.92-.5 1.84-1 2.74-1.55h.06A64.52 64.52 0 00480 170.38a63.81 63.81 0 0016-42.33z'/><path d='M371.38 202.53l-105.56 82.1a16 16 0 01-19.64 0l-144-112a16 16 0 1119.64-25.26L256 251.73l94.22-73.28A95.86 95.86 0 01348.81 80H88a56.06 56.06 0 00-56 56v240a56.06 56.06 0 0056 56h336a56.06 56.06 0 0056-56V211.19a95.85 95.85 0 01-108.62-8.66z'/></svg>\"\nexport const mailUnreadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail Unread</title><path d='M320 96H88a40 40 0 00-40 40v240a40 40 0 0040 40h334.73a40 40 0 0040-40V239' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M112 160l144 112 87-65.67' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='431.95' cy='128.05' r='47.95'/><path d='M432 192a63.95 63.95 0 1163.95-63.95A64 64 0 01432 192zm0-95.9a32 32 0 1031.95 32 32 32 0 00-31.95-32z'/></svg>\"\nexport const mailUnreadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mail Unread</title><path d='M374.09 101c-.11.23-.21.46-.31.7-.34.75-.67 1.5-1 2.26l-.36.9c-.27.71-.54 1.42-.79 2.14-.12.35-.24.7-.35 1-.23.68-.44 1.37-.64 2.07l-.33 1.15q-.27 1-.51 2c-.1.41-.2.82-.28 1.23-.15.67-.28 1.36-.4 2-.08.42-.16.84-.23 1.27-.11.69-.2 1.4-.29 2.1-.05.42-.11.83-.16 1.25-.08.77-.13 1.54-.19 2.31 0 .36-.06.72-.08 1.09-.06 1.13-.09 2.27-.09 3.41 0 1 0 2 .07 2.94v.62c.05.95.12 1.89.21 2.83l.06.46c.09.87.2 1.72.32 2.57 0 .15 0 .31.07.46.14.92.31 1.84.49 2.75l.12.59c.2.92.4 1.84.64 2.75.23.92.5 1.82.77 2.71.06.19.12.38.17.57.28.88.57 1.74.88 2.59.05.15.11.29.16.43.29.78.6 1.55.92 2.32.05.14.11.28.17.42.35.83.73 1.65 1.11 2.47l.27.53c.4.82.81 1.64 1.24 2.44a64.21 64.21 0 0029.56 27.63l.37.17c1.78.8 3.59 1.53 5.45 2.17l.95.32 1.5.47c.45.14.9.26 1.36.39l1.92.5c.57.14 1.14.27 1.72.39l1.15.24 1.83.32.93.16c.9.13 1.81.24 2.72.34l.77.07c.73.07 1.47.13 2.22.17l.85.05c1 0 1.94.07 2.93.07 1.15 0 2.29 0 3.43-.09l1.09-.09c.77 0 1.54-.11 2.3-.19.42 0 .83-.1 1.25-.16.7-.08 1.41-.17 2.1-.28l1.27-.23c.68-.12 1.36-.25 2-.39l1.24-.29c.67-.16 1.35-.32 2-.51.39-.1.78-.21 1.16-.33.69-.2 1.37-.41 2.05-.63l1.07-.36c.7-.24 1.4-.5 2.1-.77l.94-.37c.74-.3 1.47-.62 2.19-.95l.77-.34c.8-.37 1.58-.77 2.36-1.17.17-.09.35-.17.52-.27.91-.48 1.8-1 2.68-1.5l.12-.07a63.95 63.95 0 10-89.21-84.88l-.21.39c-.3 1.03-.72 1.86-1.11 2.69z'/><path d='M371.51 202.43l-105.69 82.2a16 16 0 01-19.64 0L89.55 162.81l19.64-25.26L256 251.73l94.36-73.39A95.81 95.81 0 01349 80H48a16 16 0 00-16 16v320a16 16 0 0016 16h416a16 16 0 0016-16V211.13a95.75 95.75 0 01-108.49-8.7z'/></svg>\"\nexport const male = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Male</title><path d='M442 48h-90a22 22 0 000 44h36.89l-60.39 60.39c-68.19-52.86-167-48-229.54 14.57C31.12 234.81 31.12 345.19 99 413a174.21 174.21 0 00246 0c62.57-62.58 67.43-161.35 14.57-229.54L420 123.11V160a22 22 0 0044 0V70a22 22 0 00-22-22zM313.92 381.92a130.13 130.13 0 01-183.84 0c-50.69-50.68-50.69-133.16 0-183.84s133.16-50.69 183.84 0 50.69 133.16 0 183.84z'/></svg>\"\nexport const maleFemale = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Male Female</title><path d='M426 16h-74a22 22 0 000 44h20.89l-37.1 37.09A157.68 157.68 0 00216 42c-87.12 0-158 70.88-158 158 0 79.66 59.26 145.72 136 156.46V394h-28a22 22 0 000 44h28v36a22 22 0 0044 0v-36h28a22 22 0 000-44h-28v-37.54c76.74-10.74 136-76.8 136-156.46a157.15 157.15 0 00-14-64.92l44-44V112a22 22 0 0044 0V38a22 22 0 00-22-22zM216 314a114 114 0 11114-114 114.13 114.13 0 01-114 114z'/></svg>\"\nexport const maleFemaleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Male Female</title><circle cx='216' cy='200' r='136' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M216 352v128M272 416H160M432 112V32h-80M335.28 128.72L432 32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const maleFemaleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Male Female</title><path d='M330 16v44h42.89l-37.1 37.09A157.67 157.67 0 00216 42c-87.12 0-158 70.88-158 158 0 79.66 59.26 145.72 136 156.46V394h-50v44h50v58h44v-58h50v-44h-50v-37.54c76.74-10.74 136-76.8 136-156.46a157.23 157.23 0 00-14-64.93l44-44V134h44V16zM216 314a114 114 0 11114-114 114.13 114.13 0 01-114 114z'/></svg>\"\nexport const maleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Male</title><circle cx='216' cy='296' r='152' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M448 160V64h-96M324 188L448 64' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const maleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Male</title><path d='M330 48v44h58.89l-60.39 60.39c-68.2-52.86-167-48-229.54 14.57C31.12 234.81 31.12 345.19 99 413a174.21 174.21 0 00246 0c62.57-62.58 67.43-161.34 14.57-229.54L420 123.11V182h44V48zm-16.08 333.92a130.13 130.13 0 01-183.84 0c-50.69-50.68-50.69-133.16 0-183.84s133.16-50.69 183.84 0 50.69 133.16 0 183.84z'/></svg>\"\nexport const man = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Man</title><circle cx='256' cy='56' r='56'/><path d='M304 128h-96a64.19 64.19 0 00-64 64v107.52c0 10.85 8.43 20.08 19.27 20.47A20 20 0 00184 300v-99.73a8.18 8.18 0 017.47-8.25 8 8 0 018.53 8V489a23 23 0 0023 23 23 23 0 0023-23V346.34a10.24 10.24 0 019.33-10.34A10 10 0 01266 346v143a23 23 0 0023 23 23 23 0 0023-23V200.27a8.18 8.18 0 017.47-8.25 8 8 0 018.53 8v99.52c0 10.85 8.43 20.08 19.27 20.47A20 20 0 00368 300V192a64.19 64.19 0 00-64-64z'/></svg>\"\nexport const manOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Man</title><path d='M208 208v264a23.73 23.73 0 0024 24h0a23.73 23.73 0 0024-24' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 336v136a23.73 23.73 0 0024 24h0a23.73 23.73 0 0024-24V208' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M208 192v88a23.72 23.72 0 01-24 24h0a23.72 23.72 0 01-24-24v-88a48 48 0 0148-48h96a48 48 0 0148 48v88a23.72 23.72 0 01-24 24h0a23.72 23.72 0 01-24-24v-88' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='56' r='40' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const manSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Man</title><circle cx='256' cy='56' r='56'/><path d='M336 128H176a32 32 0 00-32 32v160h48V192h8v320h52V328h8v184h52V192h8v128h48V160a32 32 0 00-32-32z'/></svg>\"\nexport const map = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Map</title><path d='M48.17 113.34A32 32 0 0032 141.24V438a32 32 0 0047 28.37c.43-.23.85-.47 1.26-.74l84.14-55.05a8 8 0 003.63-6.72V46.45a8 8 0 00-12.51-6.63zM212.36 39.31A8 8 0 00200 46v357.56a8 8 0 003.63 6.72l96 62.42A8 8 0 00312 466V108.67a8 8 0 00-3.64-6.73zM464.53 46.47a31.64 31.64 0 00-31.5-.88 12.07 12.07 0 00-1.25.74l-84.15 55a8 8 0 00-3.63 6.72v357.46a8 8 0 0012.52 6.63l107.07-73.46a32 32 0 0016.41-28v-296a32.76 32.76 0 00-15.47-28.21z'/></svg>\"\nexport const mapOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Map</title><path d='M313.27 124.64L198.73 51.36a32 32 0 00-29.28.35L56.51 127.49A16 16 0 0048 141.63v295.8a16 16 0 0023.49 14.14l97.82-63.79a32 32 0 0129.5-.24l111.86 73a32 32 0 0029.27-.11l115.43-75.94a16 16 0 008.63-14.2V74.57a16 16 0 00-23.49-14.14l-98 63.86a32 32 0 01-29.24.35zM328 128v336M184 48v336' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const mapSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Map</title><path d='M327.71 130.93L184 39 32 144v336l152.29-98.93L328 473l152-105V32zM312 421l-112-72V91l112 72z'/></svg>\"\nexport const medal = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medal</title><circle cx='256' cy='352' r='32'/><path d='M99.78 32a48 48 0 00-42.94 26.53l-31 62A48.26 48.26 0 0024.28 160h278.2a4 4 0 003.39-1.87l75.5-120A4 4 0 00378 32z'/><path d='M486.17 120.56l-31-62a47.7 47.7 0 00-32.79-25.46L342.5 160 298 231.08a128 128 0 00-84 0l-23.32-37.2a4 4 0 00-3.39-1.88H51.14a4 4 0 00-3.36 6.16l82.7 128.73a128 128 0 10251 0L483.62 168a48.22 48.22 0 002.55-47.44zm-226 295.31a64 64 0 1159.69-59.69 64.08 64.08 0 01-59.68 59.69z'/></svg>\"\nexport const medalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medal</title><circle cx='256' cy='352' r='112' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='352' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M147 323L41.84 159.32a32 32 0 01-1.7-31.61l31-62A32 32 0 0199.78 48h312.44a32 32 0 0128.62 17.69l31 62a32 32 0 01-1.7 31.61L365 323M371 144H37M428.74 52.6L305 250M140.55 144L207 250' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const medalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medal</title><path d='M80 32L16 160h289.11l80.22-128H80z'/><path d='M496 144L424 32 298 231.08a128 128 0 00-84 0L189.53 192H43.82l86.66 134.89a128 128 0 10251 0zM256 422a70 70 0 1170-70 70.08 70.08 0 01-70 70z'/><circle cx='256' cy='352' r='32'/></svg>\"\nexport const medical = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medical</title><path d='M272 464h-32a32 32 0 01-32-32l.05-85.82a4 4 0 00-6-3.47l-74.34 43.06a31.48 31.48 0 01-43-11.52l-16.5-28.64-.06-.1a31.65 31.65 0 0111.56-42.8l74.61-43.25a4 4 0 000-6.92l-74.54-43.21a31.41 31.41 0 01-11.55-43l16.44-28.55a31.48 31.48 0 0119.27-14.74 31.14 31.14 0 0123.8 3.2l74.31 43a4 4 0 006-3.47L208 80a32 32 0 0132-32h32a32 32 0 0132 32v85.72a4 4 0 006 3.47l74.34-43.06a31.51 31.51 0 0143 11.52l16.49 28.64.06.09a31.52 31.52 0 01-11.64 42.86l-74.53 43.2a4 4 0 000 6.92l74.53 43.2a31.42 31.42 0 0111.56 43l-16.44 28.55a31.48 31.48 0 01-19.27 14.74 31.14 31.14 0 01-23.8-3.2l-74.31-43a4 4 0 00-6 3.46L304 432a32 32 0 01-32 32zm-93.56-197.48zm0-21zm155.1-.08zm0 0z'/></svg>\"\nexport const medicalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medical</title><path d='M429.93 174.27l-16.47-28.59a15.49 15.49 0 00-21.15-5.7l-98.39 57a4 4 0 01-6-3.5L288 80a16 16 0 00-16-16h-32a16 16 0 00-16 16l.07 113.57a4 4 0 01-6 3.5l-98.39-57a15.49 15.49 0 00-21.15 5.7l-16.46 28.6a15.42 15.42 0 005.69 21.1l98.49 57.08a4 4 0 010 6.9l-98.49 57.08a15.54 15.54 0 00-5.69 21.1l16.47 28.59a15.49 15.49 0 0021.15 5.7l98.39-57a4 4 0 016 3.5L224 432a16 16 0 0016 16h32a16 16 0 0016-16l-.07-113.67a4 4 0 016-3.5l98.39 57a15.49 15.49 0 0021.15-5.7l16.47-28.59a15.42 15.42 0 00-5.69-21.1l-98.49-57.08a4 4 0 010-6.9l98.49-57.08a15.51 15.51 0 005.68-21.11z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const medicalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medical</title><path d='M351.9 256L460 193.6l-48-83.2-108 62.4V48h-96v124.8l-108-62.4-48 83.2L160.1 256 52 318.4l48 83.2 108-62.4V464h96V339.2l108 62.4 48-83.2L351.9 256z'/></svg>\"\nexport const medkit = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medkit</title><path d='M336 64H176a16 16 0 00-16 16v16h192V80a16 16 0 00-16-16z' class='ionicon-fill-none'/><path d='M432 96h-48V80a48.05 48.05 0 00-48-48H176a48.05 48.05 0 00-48 48v16H80a64.07 64.07 0 00-64 64v256a64 64 0 0064 64h352a64 64 0 0064-64V160a64.07 64.07 0 00-64-64zm-96 208h-64v64a16 16 0 01-32 0v-64h-64a16 16 0 010-32h64v-64a16 16 0 0132 0v64h64a16 16 0 010 32zm16-208H160V80a16 16 0 0116-16h160a16 16 0 0116 16z'/></svg>\"\nexport const medkitOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medkit</title><rect x='32' y='112' width='448' height='352' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M144 112V80a32 32 0 0132-32h160a32 32 0 0132 32v32M256 208v160M336 288H176' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const medkitSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Medkit</title><path d='M168 72h176v24H168z' class='ionicon-fill-none'/><path d='M484 96H384V40a8 8 0 00-8-8H136a8 8 0 00-8 8v56H28a12 12 0 00-12 12v360a12 12 0 0012 12h456a12 12 0 0012-12V108a12 12 0 00-12-12zM168 72h176v24H168zm184 238h-74v74h-44v-74h-74v-44h74v-74h44v74h74z'/></svg>\"\nexport const megaphone = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Megaphone</title><path d='M48 176v.66a17.38 17.38 0 01-4.2 11.23v.05C38.4 194.32 32 205.74 32 224c0 16.55 5.3 28.23 11.68 35.91A19 19 0 0148 272a32 32 0 0032 32h8a8 8 0 008-8V152a8 8 0 00-8-8h-8a32 32 0 00-32 32zM452.18 186.55l-.93-.17a4 4 0 01-3.25-3.93V62c0-12.64-8.39-24-20.89-28.32-11.92-4.11-24.34-.76-31.68 8.53a431.18 431.18 0 01-51.31 51.69c-23.63 20-46.24 34.25-67 42.31a8 8 0 00-5.15 7.47V299a16 16 0 009.69 14.69c19.34 8.29 40.24 21.83 62 40.28a433.74 433.74 0 0151.68 52.16 26.22 26.22 0 0021.1 9.87 33.07 33.07 0 0010.44-1.74C439.71 410 448 399.05 448 386.4V265.53a4 4 0 013.33-3.94l.85-.14C461.8 258.84 480 247.67 480 224s-18.2-34.84-27.82-37.45zM240 320V152a8 8 0 00-8-8h-96a8 8 0 00-8 8v304a24 24 0 0024 24h52.45a32.66 32.66 0 0025.93-12.45 31.65 31.65 0 005.21-29.05c-1.62-5.18-3.63-11-5.77-17.19-7.91-22.9-18.34-37.07-21.12-69.32A32 32 0 00240 320z'/></svg>\"\nexport const megaphoneOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Megaphone</title><path d='M407.94 52.22S321.3 160 240 160H80a16 16 0 00-16 16v96a16 16 0 0016 16h160c81.3 0 167.94 108.23 167.94 108.23 6.06 8 24.06 2.52 24.06-9.83V62c0-12.31-17-18.82-24.06-9.78zM64 256s-16-6-16-32 16-32 16-32M448 246s16-4.33 16-22-16-22-16-22M256 160v128M112 160v128' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M144 288v168a8 8 0 008 8h53a16 16 0 0015.29-20.73C211.91 416.39 192 386.08 192 336h16a16 16 0 0016-16v-16a16 16 0 00-16-16h-16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const megaphoneSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Megaphone</title><path d='M128 144v332a4 4 0 004 4h100.07a8 8 0 007.82-9.7L208.71 352H232a8 8 0 008-8V144zM452.18 186.55L448 185.5V36a4 4 0 00-4-4h-42.5a4 4 0 00-2.63 1L272 144v160l126.87 111a4 4 0 002.63 1H444a4 4 0 004-4V262.5l4.18-1.05C461.8 258.84 480 247.67 480 224s-18.2-34.84-27.82-37.45zM96 144H52a4 4 0 00-4 4v35.59a43 43 0 00-4.24 4.35C38.4 194.32 32 205.74 32 224c0 20.19 7.89 33.13 16 40.42V300a4 4 0 004 4h44z'/></svg>\"\nexport const menu = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Menu</title><path stroke-linecap='round' stroke-miterlimit='10' stroke-width='48' d='M88 152h336M88 256h336M88 360h336' class='ionicon-fill-none'/></svg>\"\nexport const menuOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Menu</title><path stroke-linecap='round' stroke-miterlimit='10' d='M80 160h352M80 256h352M80 352h352' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const menuSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Menu</title><path d='M64 384h384v-42.67H64zm0-106.67h384v-42.66H64zM64 128v42.67h384V128z'/></svg>\"\nexport const mic = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic</title><path stroke-linecap='round' stroke-linejoin='round' d='M192 448h128M384 208v32c0 70.4-57.6 128-128 128h0c-70.4 0-128-57.6-128-128v-32M256 368v80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 320a78.83 78.83 0 01-56.55-24.1A80.89 80.89 0 01176 239V128a79.69 79.69 0 0180-80c44.86 0 80 35.14 80 80v111c0 44.66-35.89 81-80 81z'/></svg>\"\nexport const micCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-48 128a48.14 48.14 0 0148-48 48.14 48.14 0 0148 48v64a48.14 48.14 0 01-48 48 48.14 48.14 0 01-48-48zm144 72.22c0 23.36-10.94 45.61-30.79 62.66A103.71 103.71 0 01272 334.26V352h16a16 16 0 010 32h-64a16 16 0 010-32h16v-17.74a103.71 103.71 0 01-49.21-23.38c-19.85-17.05-30.79-39.3-30.79-62.66V224.3a16 16 0 0132 0v23.92c0 25.66 28 55.48 64 55.48 29.6 0 64-24.23 64-55.48V224.3a16 16 0 1132 0z'/></svg>\"\nexport const micCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M224 368h64M336 224.3v23.92c0 39.42-40.58 71.48-80 71.48h0c-39.42 0-80-32.06-80-71.48V224.3M256 320v48' class='ionicon-fill-none ionicon-stroke-width'/><rect x='208' y='128' width='96' height='160' rx='48' ry='48'/></svg>\"\nexport const micCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-48 128a48.14 48.14 0 0148-48 48.14 48.14 0 0148 48v64a48.14 48.14 0 01-48 48 48.14 48.14 0 01-48-48zm144 72.22c0 23.36-10.94 45.61-30.79 62.66A103.71 103.71 0 01272 334.26V352h32v32h-96v-32h32v-17.74a103.71 103.71 0 01-49.21-23.38c-19.85-17.05-30.79-39.3-30.79-62.66V208.3h32v39.92c0 25.66 28 55.48 64 55.48 29.6 0 64-24.23 64-55.48V208.3h32z'/></svg>\"\nexport const micOff = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Off</title><path stroke-linecap='round' stroke-miterlimit='10' d='M432 400L96 64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M400 240v-31.55c0-8.61-6.62-16-15.23-16.43A16 16 0 00368 208v32a111.68 111.68 0 01-2.68 24.38 2 2 0 00.53 1.84l22.59 22.59a2 2 0 003.29-.72A143.27 143.27 0 00400 240zM256 352a112.36 112.36 0 01-112-112v-31.55c0-8.61-6.62-16-15.23-16.43A16 16 0 00112 208v32c0 74 56.1 135.12 128 143.11V432h-47.55c-8.61 0-16 6.62-16.43 15.23A16 16 0 00192 464h127.55c8.61 0 16-6.62 16.43-15.23A16 16 0 00320 432h-48v-48.89a143.08 143.08 0 0052-16.22 4 4 0 00.91-6.35l-18.4-18.39a3 3 0 00-3.41-.58A111 111 0 01256 352zM257.14 48a79.66 79.66 0 00-68.47 36.57 4 4 0 00.54 5L332.59 233a2 2 0 003.41-1.42V128.91C336 85 301 48.6 257.14 48z'/><path d='M179.41 215a2 2 0 00-3.41 1.42V239a80.89 80.89 0 0023.45 56.9 78.55 78.55 0 0077.8 21.19 2 2 0 00.86-3.35z'/></svg>\"\nexport const micOffCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Off Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm0 80a48.14 48.14 0 0148 48v64a47.84 47.84 0 01-.63 7.71 2 2 0 01-3.46 1l-84.42-92.86a4 4 0 01-.47-4.77A48.08 48.08 0 01256 128zm32 256h-63.55c-8.61 0-16-6.62-16.43-15.23A16 16 0 01224 352h16v-17.74a103.71 103.71 0 01-49.21-23.38c-19.85-17.05-30.79-39.3-30.79-62.66V224a15.91 15.91 0 0116.39-16A16.26 16.26 0 01192 224.4v23.82c0 25.66 28 55.48 64 55.48 1.67 0 3.37-.09 5.06-.24a3.94 3.94 0 013.29 1.29l21.07 23.19a2 2 0 01-.89 3.26 100.33 100.33 0 01-12.53 3.06V352h15.55c8.61 0 16 6.62 16.43 15.23A16 16 0 01288 384zm-77.89-138.91l36.46 40.11a1 1 0 01-.95 1.66 48.26 48.26 0 01-37.25-41 1 1 0 011.74-.77zm152.65 119.75a16 16 0 01-22.6-1.08l-192-210a16 16 0 0123.68-21.52l192 210a16 16 0 01-1.08 22.6zM352 248.22a77.12 77.12 0 01-11.93 40.87 2 2 0 01-3.19.3l-19.19-21.1a4 4 0 01-.76-4.16 43.35 43.35 0 003.07-15.91v-23.8a16.3 16.3 0 0113.64-16.24c9.88-1.48 18.36 6.51 18.36 16.12z'/></svg>\"\nexport const micOffCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Off Circle</title><path d='M256 464c-114.69 0-208-93.31-208-208S141.31 48 256 48s208 93.31 208 208-93.31 208-208 208zm0-384c-97 0-176 79-176 176s79 176 176 176 176-78.95 176-176S353.05 80 256 80z'/><path d='M352 369a15.93 15.93 0 01-11.84-5.24l-192-210a16 16 0 0123.68-21.52l192 210A16 16 0 01352 369zM352 248.22v-23.8a16.3 16.3 0 00-13.64-16.24c-9.88-1.48-18.36 6.51-18.36 16.12v23.92a43.35 43.35 0 01-3.07 15.91 4 4 0 00.76 4.16l19.19 21.1a2 2 0 003.19-.3A77.12 77.12 0 00352 248.22zM304 240v-64a48.14 48.14 0 00-48-48 48.08 48.08 0 00-41 23.1 4 4 0 00.47 4.77l84.42 92.86a2 2 0 003.46-1A47.84 47.84 0 00304 240zM246.57 285.2l-36.46-40.11a1 1 0 00-1.74.8 48.26 48.26 0 0037.25 41 1 1 0 00.95-1.69z'/><path d='M287.55 352H272v-17.74a100.33 100.33 0 0012.53-3.06 2 2 0 00.89-3.26l-21.07-23.19a3.94 3.94 0 00-3.29-1.29c-1.69.15-3.39.24-5.06.24-36 0-64-29.82-64-55.48V224.4a16.26 16.26 0 00-15.61-16.4A15.91 15.91 0 00160 224v24.22c0 23.36 10.94 45.61 30.79 62.66A103.71 103.71 0 00240 334.26V352h-15.55c-8.61 0-16 6.62-16.43 15.23A16 16 0 00224 384h64a16 16 0 0016-16.77c-.42-8.61-7.84-15.23-16.45-15.23z'/></svg>\"\nexport const micOffCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Off Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm64 200.22V208h32v40.22a77.53 77.53 0 01-13.37 43.11L316 266.4a44.11 44.11 0 004-18.18zM256 128a48.14 48.14 0 0148 48v64a48.07 48.07 0 01-1.44 11.64l-89-97.92A48.13 48.13 0 01256 128zm48 256h-96v-32h32v-17.74a103.71 103.71 0 01-49.21-23.38c-19.85-17.05-30.79-39.3-30.79-62.66V208h32v40.22c0 25.66 28 55.48 64 55.48a56.91 56.91 0 007-.45l24.52 27a99.57 99.57 0 01-15.5 4V352h32zm-95.91-141.13l40.5 44.55a48.2 48.2 0 01-40.5-44.55zm136.07 124.89l-200.5-218.5 23.68-21.52 200.5 218.5z'/></svg>\"\nexport const micOffOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Off</title><path stroke-linecap='round' stroke-miterlimit='10' d='M432 400L96 64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M400 240v-31.55c0-8.61-6.62-16-15.23-16.43A16 16 0 00368 208v32a111.58 111.58 0 01-2.45 23.31 4.05 4.05 0 001.07 3.69l21.82 21.81a2 2 0 003.29-.72A143.27 143.27 0 00400 240zM256 352a112.36 112.36 0 01-112-112v-31.55c0-8.61-6.62-16-15.23-16.43A16 16 0 00112 208v32c0 74 56.1 135.12 128 143.11V432h-47.55c-8.61 0-16 6.62-16.43 15.23A16 16 0 00192 464h127.55c8.61 0 16-6.62 16.43-15.23A16 16 0 00320 432h-48v-48.89a143.08 143.08 0 0052-16.22 4 4 0 00.91-6.35L307 342.63a4 4 0 00-4.51-.78A110.78 110.78 0 01256 352zM256 80a47.18 47.18 0 0148 48v74.72a4 4 0 001.17 2.82L332.59 233a2 2 0 003.41-1.42V128.91C336 85 301 48.6 257.14 48a79.66 79.66 0 00-68.47 36.57 4 4 0 00.54 5l19.54 19.54a2 2 0 003.25-.63A47.44 47.44 0 01256 80z'/><path d='M207.27 242.9L179.41 215a2 2 0 00-3.41 1.42V239a80.89 80.89 0 0023.45 56.9 78.55 78.55 0 0077.8 21.19 2 2 0 00.86-3.35l-24.91-24.91a4.08 4.08 0 00-2.42-1.15c-21.65-2.52-39.48-20.44-42.37-42.43a4 4 0 00-1.14-2.35z'/></svg>\"\nexport const micOffSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic Off</title><path stroke-linecap='square' stroke-miterlimit='10' d='M432 400L96 64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M368 192v48a111.74 111.74 0 01-2.93 25.45L390.65 291a143.07 143.07 0 009.35-51v-48zM272 432v-48.89a143.11 143.11 0 0056.65-18.83L305 340.65A112.13 112.13 0 01144 240v-48h-32v48c0 74 56.1 135.12 128 143.11V432h-64v32h160v-32zM336 236.37V128c0-44.86-35.14-80-80-80a79.68 79.68 0 00-69 39.34'/><path d='M176 211.63V239a80.89 80.89 0 0023.45 56.9 78.55 78.55 0 0081 20.21z'/></svg>\"\nexport const micOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic</title><path stroke-linecap='round' stroke-linejoin='round' d='M192 448h128M384 208v32c0 70.4-57.6 128-128 128h0c-70.4 0-128-57.6-128-128v-32M256 368v80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 64a63.68 63.68 0 00-64 64v111c0 35.2 29 65 64 65s64-29 64-65V128c0-36-28-64-64-64z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const micSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Mic</title><path stroke-linecap='square' stroke-miterlimit='10' d='M192 448h128M384 208v32c0 70.4-57.6 128-128 128h0c-70.4 0-128-57.6-128-128v-32M256 368v80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 320a78.83 78.83 0 01-56.55-24.1A80.89 80.89 0 01176 239V128a79.69 79.69 0 0180-80c44.86 0 80 35.14 80 80v111c0 44.66-35.89 81-80 81z'/></svg>\"\nexport const moon = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Moon</title><path d='M264 480A232 232 0 0132 248c0-94 54-178.28 137.61-214.67a16 16 0 0121.06 21.06C181.07 76.43 176 104.66 176 136c0 110.28 89.72 200 200 200 31.34 0 59.57-5.07 81.61-14.67a16 16 0 0121.06 21.06C442.28 426 358 480 264 480z'/></svg>\"\nexport const moonOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Moon</title><path d='M160 136c0-30.62 4.51-61.61 16-88C99.57 81.27 48 159.32 48 248c0 119.29 96.71 216 216 216 88.68 0 166.73-51.57 200-128-26.39 11.49-57.38 16-88 16-119.29 0-216-96.71-216-216z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const moonSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Moon</title><path d='M152.62 126.77c0-33 4.85-66.35 17.23-94.77C87.54 67.83 32 151.89 32 247.38 32 375.85 136.15 480 264.62 480c95.49 0 179.55-55.54 215.38-137.85-28.42 12.38-61.8 17.23-94.77 17.23-128.47 0-232.61-104.14-232.61-232.61z'/></svg>\"\nexport const move = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Move</title><path stroke-linecap='round' stroke-linejoin='round' d='M176 112l80-80 80 80M255.98 32l.02 448M176 400l80 80 80-80M400 176l80 80-80 80M112 176l-80 80 80 80M32 256h448' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const moveOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Move</title><path stroke-linecap='round' stroke-linejoin='round' d='M176 112l80-80 80 80M255.98 32l.02 448M176 400l80 80 80-80M400 176l80 80-80 80M112 176l-80 80 80 80M32 256h448' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const moveSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Move</title><path stroke-miterlimit='10' d='M176 112l80-80 80 80M255.98 32l.02 448M176 400l80 80 80-80M400 176l80 80-80 80M112 176l-80 80 80 80M32 256h448' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const musicalNote = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Musical Note</title><path d='M183.83 480a55.2 55.2 0 01-32.36-10.55A56.64 56.64 0 01128 423.58a50.26 50.26 0 0134.14-47.73L213 358.73a16.25 16.25 0 0011-15.49V92a32.1 32.1 0 0124.09-31.15l108.39-28.14A22 22 0 01384 54v57.75a32.09 32.09 0 01-24.2 31.19l-91.65 23.13A16.24 16.24 0 00256 181.91V424a48.22 48.22 0 01-32.78 45.81l-21.47 7.23a56 56 0 01-17.92 2.96z'/></svg>\"\nexport const musicalNoteOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Musical Note</title><path d='M240 343.31V424a32.28 32.28 0 01-21.88 30.65l-21.47 7.23c-25.9 8.71-52.65-10.75-52.65-38.32h0A34.29 34.29 0 01167.25 391l50.87-17.12A32.29 32.29 0 00240 343.24V92a16.13 16.13 0 0112.06-15.66L360.49 48.2A6 6 0 01368 54v57.76a16.13 16.13 0 01-12.12 15.67l-91.64 23.13A32.25 32.25 0 00240 181.91v39.39' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const musicalNoteSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Musical Note</title><path d='M381.55 32.05c-18.13 4.28-126.57 31.07-156 38.19a2 2 0 00-1.55 1.94V353.3a2 2 0 01-1.32 1.88L182 369.88c-29.82 10.66-54 18.94-54 59.06 0 32.47 23.53 47.18 37.95 50a81.77 81.77 0 0015 1.08c8.89 0 31-3.59 47.52-14.24C256 448 256 448 256 415.93V169.16a2 2 0 011.49-1.94l125-33a2 2 0 001.49-1.94V34a2 2 0 00-2.43-1.95z'/></svg>\"\nexport const musicalNotes = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Musical Notes</title><path d='M421.84 37.37a25.86 25.86 0 00-22.6-4.46L199.92 86.49A32.3 32.3 0 00176 118v226c0 6.74-4.36 12.56-11.11 14.83l-.12.05-52 18C92.88 383.53 80 402 80 423.91a55.54 55.54 0 0023.23 45.63A54.78 54.78 0 00135.34 480a55.82 55.82 0 0017.75-2.93l.38-.13 21.84-7.94A47.84 47.84 0 00208 423.91v-212c0-7.29 4.77-13.21 12.16-15.07l.21-.06L395 150.14a4 4 0 015 3.86v141.93c0 6.75-4.25 12.38-11.11 14.68l-.25.09-50.89 18.11A49.09 49.09 0 00304 375.92a55.67 55.67 0 0023.23 45.8 54.63 54.63 0 0049.88 7.35l.36-.12 21.84-7.95A47.83 47.83 0 00432 375.92V58a25.74 25.74 0 00-10.16-20.63z'/></svg>\"\nexport const musicalNotesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Musical Notes</title><path d='M192 218v-6c0-14.84 10-27 24.24-30.59l174.59-46.68A20 20 0 01416 154v22' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M416 295.94v80c0 13.91-8.93 25.59-22 30l-22 8c-25.9 8.72-52-10.42-52-38h0a33.37 33.37 0 0123-32l51-18.15c13.07-4.4 22-15.94 22-29.85V58a10 10 0 00-12.6-9.61L204 102a16.48 16.48 0 00-12 16v226c0 13.91-8.93 25.6-22 30l-52 18c-13.88 4.68-22 17.22-22 32h0c0 27.58 26.52 46.55 52 38l22-8c13.07-4.4 22-16.08 22-30v-80' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const musicalNotesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Musical Notes</title><path d='M429.46 32.07c-23.6 6.53-205.55 58.81-250.54 71.43a4 4 0 00-2.92 3.83v247a2 2 0 01-1.33 1.89l-27.85 9.55c-19 7.44-66.82 16.68-66.82 59.19 0 35.54 24.63 51.54 45.86 54.28a52.06 52.06 0 007.81.8c7.37 0 36.38-7.08 53.3-18.08C208 448.25 208 448 208 412V202c0-.9.62-.84 1.48-1.07l188-51.92a2 2 0 012.53 2v155.54a2 2 0 01-1.36 1.89c-8.9 3-19.23 6.5-26.48 9.12C341.39 328.68 304 335.65 304 376c0 38.51 28.26 54.58 46.3 55.83a87.37 87.37 0 0021.33-1c9-1.38 24.09-5.9 38.14-14.86C432 401.79 432 401.51 432 360V34a2 2 0 00-2.54-1.93z'/></svg>\"\nexport const navigate = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Navigate</title><path d='M272 464a16 16 0 01-16-16.42V264.13a8 8 0 00-8-8H64.41a16.31 16.31 0 01-15.49-10.65 16 16 0 018.41-19.87l384-176.15a16 16 0 0121.22 21.19l-176 384A16 16 0 01272 464z'/></svg>\"\nexport const navigateCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Navigate Circle</title><path d='M258.9 48C141.92 46.42 46.42 141.92 48 258.9c1.56 112.19 92.91 203.54 205.1 205.1 117 1.6 212.48-93.9 210.88-210.88C462.44 140.91 371.09 49.56 258.9 48zM351 175.24l-82.24 186.52c-4.79 10.47-20.78 7-20.78-4.56V268a4 4 0 00-4-4H154.8c-11.52 0-15-15.87-4.57-20.67L336.76 161A10.73 10.73 0 01351 175.24z'/></svg>\"\nexport const navigateCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Navigate Circle</title><path d='M336.76 161l-186.53 82.35c-10.47 4.8-6.95 20.67 4.57 20.67H244a4 4 0 014 4v89.18c0 11.52 16 15 20.78 4.56L351 175.24A10.73 10.73 0 00336.76 161z'/><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const navigateCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Navigate Circle</title><path d='M256 48A208.23 208.23 0 0048 256c0 114.68 93.31 208 208 208a208.23 208.23 0 00208-208c0-114.69-93.31-208-208-208zm-8 361V264H103l259-114.11z'/></svg>\"\nexport const navigateOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Navigate</title><path d='M448 64L64 240.14h200a8 8 0 018 8V448z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const navigateSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Navigate</title><path d='M480 32L32 240h240v240L480 32z'/></svg>\"\nexport const newspaper = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Newspaper</title><path d='M439.91 112h-23.82a.09.09 0 00-.09.09V416a32 32 0 0032 32 32 32 0 0032-32V152.09A40.09 40.09 0 00439.91 112z'/><path d='M384 416V72a40 40 0 00-40-40H72a40 40 0 00-40 40v352a56 56 0 0056 56h342.85a1.14 1.14 0 001.15-1.15 1.14 1.14 0 00-.85-1.1A64.11 64.11 0 01384 416zM96 128a16 16 0 0116-16h64a16 16 0 0116 16v64a16 16 0 01-16 16h-64a16 16 0 01-16-16zm208 272H112.45c-8.61 0-16-6.62-16.43-15.23A16 16 0 01112 368h191.55c8.61 0 16 6.62 16.43 15.23A16 16 0 01304 400zm0-64H112.45c-8.61 0-16-6.62-16.43-15.23A16 16 0 01112 304h191.55c8.61 0 16 6.62 16.43 15.23A16 16 0 01304 336zm0-64H112.45c-8.61 0-16-6.62-16.43-15.23A16 16 0 01112 240h191.55c8.61 0 16 6.62 16.43 15.23A16 16 0 01304 272zm0-64h-63.55c-8.61 0-16-6.62-16.43-15.23A16 16 0 01240 176h63.55c8.61 0 16 6.62 16.43 15.23A16 16 0 01304 208zm0-64h-63.55c-8.61 0-16-6.62-16.43-15.23A16 16 0 01240 112h63.55c8.61 0 16 6.62 16.43 15.23A16 16 0 01304 144z'/></svg>\"\nexport const newspaperOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Newspaper</title><path d='M368 415.86V72a24.07 24.07 0 00-24-24H72a24.07 24.07 0 00-24 24v352a40.12 40.12 0 0040 40h328' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M416 464h0a48 48 0 01-48-48V128h72a24 24 0 0124 24v264a48 48 0 01-48 48z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M240 128h64M240 192h64M112 256h192M112 320h192M112 384h192' class='ionicon-fill-none ionicon-stroke-width'/><path d='M176 208h-64a16 16 0 01-16-16v-64a16 16 0 0116-16h64a16 16 0 0116 16v64a16 16 0 01-16 16z'/></svg>\"\nexport const newspaperSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Newspaper</title><rect x='96' y='112' width='96' height='96' rx='16' ry='16' class='ionicon-fill-none'/><path d='M468 112h-52v304a32 32 0 0032 32 32 32 0 0032-32V124a12 12 0 00-12-12z'/><path d='M431.15 477.75A64.11 64.11 0 01384 416V44a12 12 0 00-12-12H44a12 12 0 00-12 12v380a56 56 0 0056 56h342.85a1.14 1.14 0 00.3-2.25zM96 208v-96h96v96zm224 192H96v-32h224zm0-64H96v-32h224zm0-64H96v-32h224zm0-64h-96v-32h96zm0-64h-96v-32h96z'/></svg>\"\nexport const notifications = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications</title><path d='M440.08 341.31c-1.66-2-3.29-4-4.89-5.93-22-26.61-35.31-42.67-35.31-118 0-39-9.33-71-27.72-95-13.56-17.73-31.89-31.18-56.05-41.12a3 3 0 01-.82-.67C306.6 51.49 282.82 32 256 32s-50.59 19.49-59.28 48.56a3.13 3.13 0 01-.81.65c-56.38 23.21-83.78 67.74-83.78 136.14 0 75.36-13.29 91.42-35.31 118-1.6 1.93-3.23 3.89-4.89 5.93a35.16 35.16 0 00-4.65 37.62c6.17 13 19.32 21.07 34.33 21.07H410.5c14.94 0 28-8.06 34.19-21a35.17 35.17 0 00-4.61-37.66zM256 480a80.06 80.06 0 0070.44-42.13 4 4 0 00-3.54-5.87H189.12a4 4 0 00-3.55 5.87A80.06 80.06 0 00256 480z'/></svg>\"\nexport const notificationsCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm0 336c-20.9 0-37.52-8.86-39.75-27.58a4 4 0 014-4.42h71.45a4 4 0 014 4.48C293.15 374.85 276.68 384 256 384zm98-48H158c-11.84 0-18-15-11.19-23 16.33-19.34 27.87-27.47 27.87-80.8 0-48.87 25.74-66.21 47-74.67a11.35 11.35 0 006.33-6.68C231.7 138.6 242.14 128 256 128s24.28 10.6 28 22.86a11.39 11.39 0 006.34 6.68c21.21 8.44 47 25.81 47 74.67 0 53.33 11.53 61.46 27.86 80.8 6.74 7.99.57 22.99-11.2 22.99z'/></svg>\"\nexport const notificationsCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M365.2 313c-16.33-19.34-27.86-27.47-27.86-80.8 0-48.86-25.78-66.23-47-74.67a11.39 11.39 0 01-6.34-6.68C280.29 138.6 269.88 128 256 128s-24.31 10.6-28 22.86a11.35 11.35 0 01-6.33 6.68c-21.24 8.46-47 25.8-47 74.67 0 53.33-11.54 61.46-27.87 80.8-6.77 8-.65 23 11.19 23H354C365.77 336 371.94 321 365.2 313zM220.24 352a4 4 0 00-4 4.42C218.49 375.14 235.11 384 256 384c20.67 0 37.14-9.15 39.66-27.52a4 4 0 00-4-4.48z'/></svg>\"\nexport const notificationsCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Circle</title><path d='M295.68 351.43v.57h.32z'/><path d='M256 384c22.28 0 39.36-10.63 39.66-32H216c0 21.75 17.53 32 40 32zM295.67 352h.33l-.32-.57c0 .19-.01.38-.01.57z' class='ionicon-fill-none'/><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm0 336c-22.48 0-40-10.25-40-32h80c-.3 21.37-17.71 32-40 32zm112-48H144v-28l28-36v-32.3c0-40.41 15.82-75.35 56-84.27l4-27.43h48l4 27.43c40 8.92 56 44 56 84.27V272l28 36z'/></svg>\"\nexport const notificationsOff = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Off</title><path d='M448 464a15.92 15.92 0 01-11.31-4.69l-384-384a16 16 0 0122.62-22.62l384 384A16 16 0 01448 464zM440.08 341.31c-1.66-2-3.29-4-4.89-5.93-22-26.61-35.31-42.67-35.31-118 0-39-9.33-71-27.72-95-13.56-17.73-31.89-31.18-56.05-41.12a3 3 0 01-.82-.67C306.6 51.49 282.82 32 256 32s-50.59 19.49-59.28 48.56a3.13 3.13 0 01-.81.65 157.88 157.88 0 00-21.88 11 8 8 0 00-1.49 12.49l261.78 261.74a8 8 0 0013.6-6.63 35.39 35.39 0 00-7.84-18.5zM112.14 217.35c0 75.36-13.29 91.42-35.31 118-1.6 1.93-3.23 3.89-4.89 5.93a35.16 35.16 0 00-4.65 37.62c6.17 13 19.32 21.07 34.33 21.07H312.8a8 8 0 005.66-13.66l-192-192a8 8 0 00-13.62 5q-.7 8.69-.7 18.04zM256 480a80.06 80.06 0 0070.44-42.13 4 4 0 00-3.54-5.87H189.12a4 4 0 00-3.55 5.87A80.06 80.06 0 00256 480z'/></svg>\"\nexport const notificationsOffCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Off Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zM146.83 313c16.33-19.34 27.86-27.47 27.86-80.8q0-3.75.2-7.26a4 4 0 017-2.52l98 106.87a4 4 0 01-2.94 6.7H158C146.18 336 140.06 321 146.83 313zm148.93 43.41C293.53 375.14 276.92 384 256 384s-37.51-8.86-39.75-27.58a4 4 0 014-4.42h71.53a4 4 0 013.98 4.42zm67 17.42a16 16 0 01-22.6-1.08l-192-212a16 16 0 0123.68-21.52l192 212a16 16 0 01-1.08 22.61zM361 323.21L216.49 165.53a4 4 0 011.3-6.36c1.31-.58 2.61-1.12 3.89-1.63a11.33 11.33 0 006.32-6.68c3.72-12.26 14.15-22.86 28-22.86s24.29 10.6 28 22.86a11.34 11.34 0 006.34 6.68c21.21 8.44 47 25.81 47 74.67 0 53.33 11.54 61.46 27.87 80.8a12.09 12.09 0 012.76 7.25 4 4 0 01-6.97 2.95z'/></svg>\"\nexport const notificationsOffCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Off Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M220.24 352a4 4 0 00-4 4.42C218.49 375.14 235.11 384 256 384s37.5-8.86 39.73-27.58a4 4 0 00-4-4.42zM352 378a15.93 15.93 0 01-11.84-5.24l-192-212a16 16 0 0123.68-21.52l192 212A16 16 0 01352 378zM174.68 232.21c0 53.33-11.54 61.46-27.87 80.8-6.77 8-.65 23 11.19 23h118.83a4 4 0 002.95-6.7l-98-106.87a4 4 0 00-6.94 2.52c-.1 2.33-.16 4.75-.16 7.25zM365.2 313c-16.33-19.34-27.86-27.47-27.86-80.8 0-48.86-25.78-66.23-47-74.67a11.39 11.39 0 01-6.34-6.68C280.29 138.6 269.88 128 256 128s-24.31 10.6-28 22.86a11.35 11.35 0 01-6.33 6.68c-1.28.51-2.57 1.05-3.88 1.63a4 4 0 00-1.3 6.36L361 323.21a4 4 0 006.94-2.95 12 12 0 00-2.74-7.26z'/></svg>\"\nexport const notificationsOffCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Off Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zM144 308l28-36v-32.3a131.83 131.83 0 012.34-25.42L285.92 336H144zm112.18 76C233.6 384 216 373.75 216 352h80c-.3 21.37-17.45 32-39.82 32zm93.48-3.74l-211-227 23.68-21.52 211 227zM368 330.85l-.32-.38-155.5-169.63a73.4 73.4 0 0115.82-5.41l4-27.43h48l4 27.43c40 8.92 56 44 56 84.27V272l28 36z'/></svg>\"\nexport const notificationsOffOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Off</title><path d='M128.51 204.59q-.37 6.15-.37 12.76C128.14 304 110 320 84.33 351.43 73.69 364.45 83 384 101.62 384H320M414.5 335.3c-18.48-23.45-30.62-47.05-30.62-118 0-79.3-40.52-107.57-73.88-121.3-4.43-1.82-8.6-6-9.95-10.55C294.21 65.54 277.82 48 256 48s-38.2 17.55-44 37.47c-1.35 4.6-5.52 8.71-10 10.53a149.57 149.57 0 00-18 8.79M320 384v16a64 64 0 01-128 0v-16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M448 448L64 64' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const notificationsOffSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications Off</title><path d='M41.37 64l22.628-22.628L470.627 448l-22.628 22.627zM256 480a80.09 80.09 0 0073.3-48H182.7a80.09 80.09 0 0073.3 48zM112 227.47V288l-48 64v48h268.12L115.87 183.75a236.75 236.75 0 00-3.87 43.72zM448 352l-48-64v-60.53C400 157 372.64 95.61 304 80l-8-48h-80l-8 48a117.45 117.45 0 00-41.95 18.17l282 282z'/></svg>\"\nexport const notificationsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications</title><path d='M427.68 351.43C402 320 383.87 304 383.87 217.35 383.87 138 343.35 109.73 310 96c-4.43-1.82-8.6-6-9.95-10.55C294.2 65.54 277.8 48 256 48s-38.21 17.55-44 37.47c-1.35 4.6-5.52 8.71-9.95 10.53-33.39 13.75-73.87 41.92-73.87 121.35C128.13 304 110 320 84.32 351.43 73.68 364.45 83 384 101.61 384h308.88c18.51 0 27.77-19.61 17.19-32.57zM320 384v16a64 64 0 01-128 0v-16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const notificationsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Notifications</title><path d='M256 480a80.09 80.09 0 0073.3-48H182.7a80.09 80.09 0 0073.3 48zM400 288v-60.53C400 157 372.64 95.61 304 80l-8-48h-80l-8 48c-68.88 15.61-96 76.76-96 147.47V288l-48 64v48h384v-48z'/></svg>\"\nexport const nuclear = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Nuclear</title><path d='M258.9 48C141.92 46.42 46.42 141.92 48 258.9c1.56 112.19 92.91 203.54 205.1 205.1 117 1.6 212.48-93.9 210.88-210.88C462.44 140.91 371.09 49.56 258.9 48zM429 239.92l-93.08-.1a2 2 0 01-1.95-1.57 80.08 80.08 0 00-27.44-44.17 2 2 0 01-.54-2.43l41.32-83.43a2 2 0 012.87-.81A176.2 176.2 0 01431 237.71a2 2 0 01-2 2.21zm-220.8 20.46a48 48 0 1143.42 43.42 48 48 0 01-43.42-43.42zm-43.55-152.16L206 191.65a2 2 0 01-.54 2.43A80.08 80.08 0 00178 238.25a2 2 0 01-2 1.57l-93.08.1a2 2 0 01-2-2.21 176.2 176.2 0 0180.82-130.3 2 2 0 012.91.81zm-.37 295.34l56.31-74.09a2 2 0 012.43-.6 79.84 79.84 0 0066 0 2 2 0 012.43.6l56.31 74.09a2 2 0 01-.54 2.92 175.65 175.65 0 01-182.36 0 2 2 0 01-.58-2.92z'/></svg>\"\nexport const nuclearOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Nuclear</title><circle cx='256' cy='256' r='192' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='64' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M224 192L171 85M288 192l53-107M327.55 255.81l119.41.13M299.09 313.13l72.25 95.06M184.45 255.81l-119.41.13M212.91 313.13l-72.25 95.06' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const nuclearSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Nuclear</title><circle cx='256' cy='256' r='48'/><path d='M223.47 335.59l-51.71 68a169.73 169.73 0 00168.48 0l-51.71-68' class='ionicon-fill-none'/><path d='M403.08 108.92a208 208 0 00-294.16 294.16 208 208 0 00294.16-294.16zM342 256a86.13 86.13 0 01-53.47 79.59l51.71 68a169.73 169.73 0 01-168.48 0l51.71-68a86 86 0 01-50.56-101.77l-85.48.09a170.21 170.21 0 0173.83-119l37.94 76.59a85.78 85.78 0 01113.6 0l37.94-76.59a170.21 170.21 0 0173.83 119l-85.48-.09A85.87 85.87 0 01342 256z'/></svg>\"\nexport const nutrition = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Nutrition</title><path d='M439 166.29c-18.67-32.57-47.46-50.81-85.57-54.23-20.18-1.8-39 3.37-57.23 8.38-14.15 3.89-27.52 7.56-40.2 7.56s-26-3.68-40.06-7.57c-18.28-5-37.18-10.26-57.43-8.36-36.39 3.41-65.51 22.11-84.31 54.08C56.82 195.76 48 236.76 48 288c0 40.4 15 90.49 40 134 12.82 22.25 47 74 87.16 74 30.77 0 47.15-9.44 59.11-16.33 8.3-4.78 13.31-7.67 21.69-7.67s13.39 2.89 21.69 7.67c12 6.89 28.35 16.33 59.15 16.33 40.17 0 74.34-51.76 87.16-74 25.07-43.5 40-93.59 40-134 .04-52.57-8.14-92.38-24.96-121.71zM216 352c-13.25 0-24-21.49-24-48s10.75-48 24-48 24 21.49 24 48-10.75 48-24 48zm80 0c-13.25 0-24-21.49-24-48s10.75-48 24-48 24 21.49 24 48-10.75 48-24 48z'/><path d='M265.1 111.93c13.16-1.75 37.86-7.83 58.83-28.79a98 98 0 0028-58.2 8 8 0 00-8.55-8.94c-12.71.95-36.76 5.87-58.73 27.85A97.6 97.6 0 00256 103.2a8 8 0 009.1 8.73z'/></svg>\"\nexport const nutritionOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Nutrition</title><path d='M352 128c-32.26-2.89-64 16-96 16s-63.75-19-96-16c-64 6-96 64-96 160 0 80 64 192 111.2 192s51.94-24 80.8-24 33.59 24 80.8 24S448 368 448 288c0-96-29-154-96-160z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M323.92 83.14c-21 21-45.66 27-58.82 28.79a8 8 0 01-9.1-8.73 97.6 97.6 0 0128.61-59.33c22-22 46-26.9 58.72-27.85a8 8 0 018.67 8.92 98 98 0 01-28.08 58.2z'/><ellipse cx='216' cy='304' rx='24' ry='48'/><ellipse cx='296' cy='304' rx='24' ry='48'/></svg>\"\nexport const nutritionSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Nutrition</title><path d='M438.71 159.43c-17.6-28.31-45.5-43.8-85.28-47.37-22.82-2-50.23 4.94-72.25 10.55C271.26 125.14 260 128 256 128s-15.18-2.86-25-5.39c-22.08-5.65-49.56-12.69-72.45-10.54-38.53 3.61-66 19.19-84 47.62S48 229 48 288c0 61.28 29.53 114.58 47.13 140.89C116.82 461.34 149.25 496 175.2 496c18.57 0 34.12-7.23 47.82-13.64C243 473 256 472 256 472s11 0 31.94 10.11C301.65 488.73 317.3 496 336.8 496c26.58 0 59.08-34.69 80.63-67.15C434.82 402.65 464 349.52 464 288c0-60-8-100.83-25.29-128.57zM216 352c-13.25 0-24-21.49-24-48s10.75-48 24-48 24 21.49 24 48-10.75 48-24 48zm80 0c-13.25 0-24-21.49-24-48s10.75-48 24-48 24 21.49 24 48-10.75 48-24 48z'/><path d='M323.72 82.76C353.68 52.82 352 16.18 352 16.14s-35.77-3.76-67.23 27.67S256.06 112 256.06 112s37.68.71 67.66-29.24z'/></svg>\"\nexport const open = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Open</title><path d='M224 304a16 16 0 01-11.31-27.31l157.94-157.94A55.7 55.7 0 00344 112H104a56.06 56.06 0 00-56 56v240a56.06 56.06 0 0056 56h240a56.06 56.06 0 0056-56V168a55.7 55.7 0 00-6.75-26.63L235.31 299.31A15.92 15.92 0 01224 304z'/><path d='M448 48H336a16 16 0 000 32h73.37l-38.74 38.75a56.35 56.35 0 0122.62 22.62L432 102.63V176a16 16 0 0032 0V64a16 16 0 00-16-16z'/></svg>\"\nexport const openOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Open</title><path d='M384 224v184a40 40 0 01-40 40H104a40 40 0 01-40-40V168a40 40 0 0140-40h167.48M336 64h112v112M224 288L440 72' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const openSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Open</title><path d='M201.37 288l176-176H48v352h352V134.63l-176 176L201.37 288z'/><path d='M320 48v32h89.37l-32 32L400 134.63l32-32V192h32V48H320z'/></svg>\"\nexport const options = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Options</title><path d='M64 144h226.75a48 48 0 0090.5 0H448a16 16 0 000-32h-66.75a48 48 0 00-90.5 0H64a16 16 0 000 32zM448 368h-66.75a48 48 0 00-90.5 0H64a16 16 0 000 32h226.75a48 48 0 0090.5 0H448a16 16 0 000-32zM448 240H221.25a48 48 0 00-90.5 0H64a16 16 0 000 32h66.75a48 48 0 0090.5 0H448a16 16 0 000-32z'/></svg>\"\nexport const optionsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Options</title><path stroke-linecap='round' stroke-linejoin='round' d='M368 128h80M64 128h240M368 384h80M64 384h240M208 256h240M64 256h80' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='336' cy='128' r='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='176' cy='256' r='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='336' cy='384' r='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const optionsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Options</title><path d='M381.25 112a48 48 0 00-90.5 0H48v32h242.75a48 48 0 0090.5 0H464v-32zM176 208a48.09 48.09 0 00-45.25 32H48v32h82.75a48 48 0 0090.5 0H464v-32H221.25A48.09 48.09 0 00176 208zM336 336a48.09 48.09 0 00-45.25 32H48v32h242.75a48 48 0 0090.5 0H464v-32h-82.75A48.09 48.09 0 00336 336z'/></svg>\"\nexport const paperPlane = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Paper Plane</title><path d='M473 39.05a24 24 0 00-25.5-5.46L47.47 185h-.08a24 24 0 001 45.16l.41.13 137.3 58.63a16 16 0 0015.54-3.59L422 80a7.07 7.07 0 0110 10L226.66 310.26a16 16 0 00-3.59 15.54l58.65 137.38c.06.2.12.38.19.57 3.2 9.27 11.3 15.81 21.09 16.25h1a24.63 24.63 0 0023-15.46L478.39 64.62A24 24 0 00473 39.05z'/></svg>\"\nexport const paperPlaneOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Paper Plane</title><path d='M53.12 199.94l400-151.39a8 8 0 0110.33 10.33l-151.39 400a8 8 0 01-15-.34l-67.4-166.09a16 16 0 00-10.11-10.11L53.46 215a8 8 0 01-.34-15.06zM460 52L227 285' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const paperPlaneSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Paper Plane</title><path d='M496 16L15.88 208 195 289 448 64 223 317l81 179L496 16z'/></svg>\"\nexport const partlySunny = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Partly Sunny</title><path d='M340 480H106c-29.5 0-54.92-7.83-73.53-22.64C11.23 440.44 0 415.35 0 384.8c0-26.66 10.08-49.8 29.14-66.91 15.24-13.68 36.17-23.21 59-26.84.06 0 .08 0 .09-.05 6.44-39 23.83-72.09 50.31-95.68A140.24 140.24 0 01232 160c30.23 0 58.48 9.39 81.71 27.17a142.24 142.24 0 0142.19 53.21 16 16 0 0011.19 9c26 5.61 48.4 17.29 65.17 34C453 304.11 464 331.71 464 363.2c0 32.85-13.13 62.87-37 84.52-22.89 20.82-53.8 32.28-87 32.28zm19-232.18zM387.89 221.68a168.8 168.8 0 0134.76 14.71 4 4 0 005.82-2.44 97 97 0 003.53-26.68c-.39-52.43-43.48-95.22-95.91-95.27A95.46 95.46 0 00281 129.33h-.06a3.38 3.38 0 001 6 162.45 162.45 0 0151.28 26.4 173.92 173.92 0 0145.32 52.51 16 16 0 009.35 7.44zM496 224h-32a16 16 0 010-32h32a16 16 0 010 32zM336 96a16 16 0 01-16-16V48a16 16 0 0132 0v32a16 16 0 01-16 16zM245.49 133.49a15.92 15.92 0 01-11.31-4.69l-22.63-22.62a16 16 0 0122.63-22.63l22.62 22.63a16 16 0 01-11.31 27.31zM426.51 133.49a16 16 0 01-11.31-27.31l22.62-22.63a16 16 0 0122.63 22.63l-22.63 22.62a15.92 15.92 0 01-11.31 4.69z'/></svg>\"\nexport const partlySunnyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Partly Sunny</title><path d='M90.61 306.85A16.07 16.07 0 00104 293.6C116.09 220.17 169.63 176 232 176c57.93 0 96.62 37.75 112.2 77.74a15.84 15.84 0 0012.2 9.87c50 8.15 91.6 41.54 91.6 99.59 0 59.4-48.6 100.8-108 100.8H106c-49.5 0-90-24.7-90-79.2 0-48.47 38.67-72.22 74.61-77.95z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M384.8 271.4a80 80 0 10-123.55-92M464 208h32M336 48v32M222.86 94.86l22.63 22.63M449.14 94.86l-22.63 22.63' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const partlySunnySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Partly Sunny</title><path d='M340 480H106c-29.5 0-54.92-7.83-73.53-22.64C11.23 440.44 0 415.35 0 384.8c0-26.66 10.08-49.8 29.14-66.91 15.24-13.68 36.17-23.21 59-26.84.06 0 .08 0 .09-.05 6.44-39 23.83-72.09 50.31-95.68A140.24 140.24 0 01232 160c30.23 0 58.48 9.39 81.71 27.17a142.69 142.69 0 0145.36 60.66c29.41 4.82 54.72 17.11 73.19 35.54C453 304.11 464 331.71 464 363.2c0 32.85-13.13 62.87-37 84.52-22.89 20.82-53.8 32.28-87 32.28zm19-232.18zM381.5 219.89a169.23 169.23 0 0145.44 19A96 96 0 00281 129.33q-2.85 2-5.54 4.2a162.47 162.47 0 0157.73 28.23 174.53 174.53 0 0148.31 58.13zM448 192h64v32h-64zM320 32h32v64h-32zM255.35 129.63l12.45-12.45-44.62-44.63-22.63 22.63 33.17 33.17h.6a172 172 0 0121.03 1.28zM404.203 117.17l44.626-44.625 22.627 22.628-44.625 44.625z'/></svg>\"\nexport const pause = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pause</title><path d='M208 432h-48a16 16 0 01-16-16V96a16 16 0 0116-16h48a16 16 0 0116 16v320a16 16 0 01-16 16zM352 432h-48a16 16 0 01-16-16V96a16 16 0 0116-16h48a16 16 0 0116 16v320a16 16 0 01-16 16z'/></svg>\"\nexport const pauseCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pause Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-32 272a16 16 0 01-32 0V192a16 16 0 0132 0zm96 0a16 16 0 01-32 0V192a16 16 0 0132 0z'/></svg>\"\nexport const pauseCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pause Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M208 192v128M304 192v128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pauseCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pause Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-32 288h-32V176h32zm96 0h-32V176h32z'/></svg>\"\nexport const pauseOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pause</title><path stroke-linecap='round' stroke-linejoin='round' d='M176 96h16v320h-16zM320 96h16v320h-16z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pauseSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pause</title><path d='M224 432h-80V80h80zM368 432h-80V80h80z'/></svg>\"\nexport const paw = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Paw</title><path d='M490.39 182.75c-5.55-13.19-14.77-22.7-26.67-27.49l-.16-.06a46.46 46.46 0 00-17-3.2h-.64c-27.24.41-55.05 23.56-69.19 57.61-10.37 24.9-11.56 51.68-3.18 71.64 5.54 13.2 14.78 22.71 26.73 27.5l.13.05a46.53 46.53 0 0017 3.2c27.5 0 55.6-23.15 70-57.65 10.24-24.87 11.37-51.63 2.98-71.6zM381.55 329.61c-15.71-9.44-30.56-18.37-40.26-34.41C314.53 250.8 298.37 224 256 224s-58.57 26.8-85.39 71.2c-9.72 16.06-24.6 25-40.36 34.48-18.07 10.86-36.74 22.08-44.8 44.16a66.93 66.93 0 00-4.65 25c0 35.95 28 65.2 62.4 65.2 17.75 0 36.64-6.15 56.63-12.66 19.22-6.26 39.09-12.73 56.27-12.73s37 6.47 56.15 12.73C332.2 457.85 351 464 368.8 464c34.35 0 62.3-29.25 62.3-65.2a67 67 0 00-4.75-25c-8.06-22.1-26.74-33.33-44.8-44.19zM150 188.85c11.9 14.93 27 23.15 42.52 23.15a42.88 42.88 0 006.33-.47c32.37-4.76 52.54-44.26 45.92-90C242 102.3 234.6 84.39 224 71.11 212.12 56.21 197 48 181.49 48a42.88 42.88 0 00-6.33.47c-32.37 4.76-52.54 44.26-45.92 90 2.76 19.2 10.16 37.09 20.76 50.38zM313.16 211.53a42.88 42.88 0 006.33.47c15.53 0 30.62-8.22 42.52-23.15 10.59-13.29 17.95-31.18 20.75-50.4 6.62-45.72-13.55-85.22-45.92-90a42.88 42.88 0 00-6.33-.47C315 48 299.88 56.21 288 71.11c-10.6 13.28-18 31.19-20.76 50.44-6.62 45.72 13.55 85.22 45.92 89.98zM111.59 308.8l.14-.05c11.93-4.79 21.16-14.29 26.69-27.48 8.38-20 7.2-46.75-3.15-71.65C120.94 175.16 92.85 152 65.38 152a46.4 46.4 0 00-17 3.2l-.14.05c-11.9 4.75-21.13 14.29-26.66 27.48-8.38 20-7.2 46.75 3.15 71.65C39.06 288.84 67.15 312 94.62 312a46.4 46.4 0 0016.97-3.2z'/></svg>\"\nexport const pawOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Paw</title><path d='M457.74 170.1a30.26 30.26 0 00-11.16-2.1h-.4c-20.17.3-42.79 19.19-54.66 47.76-14.23 34.18-7.68 69.15 14.74 78.14a30.21 30.21 0 0011.15 2.1c20.27 0 43.2-19 55.17-47.76 14.13-34.18 7.48-69.15-14.84-78.14zM327.6 303.48C299.8 257.35 287.8 240 256 240s-43.9 17.46-71.7 63.48c-23.8 39.36-71.9 42.64-83.9 76.07a50.91 50.91 0 00-3.6 19.25c0 27.19 20.8 49.2 46.4 49.2 31.8 0 75.1-25.39 112.9-25.39S337 448 368.8 448c25.6 0 46.3-22 46.3-49.2a51 51 0 00-3.7-19.25c-12-33.55-60-36.71-83.8-76.07zM192.51 196a26.53 26.53 0 004-.3c23.21-3.37 37.7-35.53 32.44-71.85C224 89.61 203.22 64 181.49 64a26.53 26.53 0 00-4 .3c-23.21 3.37-37.7 35.53-32.44 71.85C150 170.29 170.78 196 192.51 196zM366.92 136.15c5.26-36.32-9.23-68.48-32.44-71.85a26.53 26.53 0 00-4-.3c-21.73 0-42.47 25.61-47.43 59.85-5.26 36.32 9.23 68.48 32.44 71.85a26.53 26.53 0 004 .3c21.73 0 42.51-25.71 47.43-59.85zM105.77 293.9c22.39-9 28.93-44 14.72-78.14C108.53 187 85.62 168 65.38 168a30.21 30.21 0 00-11.15 2.1c-22.39 9-28.93 44-14.72 78.14C51.47 277 74.38 296 94.62 296a30.21 30.21 0 0011.15-2.1z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pawSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Paw</title><path d='M442.8 361.82c-8.8-25.1-29.31-37.82-49.11-50.12-17.23-10.71-33.5-20.83-44.14-39-29.33-50.33-45.44-80.7-93.49-80.7s-64.21 30.38-93.61 80.69c-10.65 18.21-27 28.35-44.25 39.08-19.8 12.31-40.27 25-49.1 50.05a78.06 78.06 0 00-5.1 28.29C64 430.85 96.45 464 132.4 464s83.31-18.13 123.76-18.13S343.31 464 379.71 464 448 430.85 448 390.11a78.3 78.3 0 00-5.2-28.29z'/><ellipse cx='72' cy='216' rx='56' ry='72'/><ellipse cx='184' cy='120' rx='56' ry='72'/><ellipse cx='328' cy='120' rx='56' ry='72'/><ellipse cx='440' cy='216' rx='56' ry='72'/></svg>\"\nexport const pencil = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pencil</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='44' d='M358.62 129.28L86.49 402.08 70 442l39.92-16.49 272.8-272.13-24.1-24.1zM413.07 74.84l-11.79 11.78 24.1 24.1 11.79-11.79a16.51 16.51 0 000-23.34l-.75-.75a16.51 16.51 0 00-23.35 0z' class='ionicon-fill-none'/></svg>\"\nexport const pencilOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pencil</title><path stroke-linecap='round' stroke-linejoin='round' d='M364.13 125.25L87 403l-23 45 44.99-23 277.76-277.13-22.62-22.62zM420.69 68.69l-22.62 22.62 22.62 22.63 22.62-22.63a16 16 0 000-22.62h0a16 16 0 00-22.62 0z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pencilSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pencil</title><path d='M103 464H48v-55L358.14 98.09l55.77 55.78L103 464zM425.72 142L370 86.28l31.66-30.66C406.55 50.7 414.05 48 421 48a25.91 25.91 0 0118.42 7.62l17 17A25.87 25.87 0 01464 91c0 7-2.71 14.45-7.62 19.36zm-7.52-70.83z'/></svg>\"\nexport const people = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>People</title><path d='M336 256c-20.56 0-40.44-9.18-56-25.84-15.13-16.25-24.37-37.92-26-61-1.74-24.62 5.77-47.26 21.14-63.76S312 80 336 80c23.83 0 45.38 9.06 60.7 25.52 15.47 16.62 23 39.22 21.26 63.63-1.67 23.11-10.9 44.77-26 61C376.44 246.82 356.57 256 336 256zm66-88zM467.83 432H204.18a27.71 27.71 0 01-22-10.67 30.22 30.22 0 01-5.26-25.79c8.42-33.81 29.28-61.85 60.32-81.08C264.79 297.4 299.86 288 336 288c36.85 0 71 9 98.71 26.05 31.11 19.13 52 47.33 60.38 81.55a30.27 30.27 0 01-5.32 25.78A27.68 27.68 0 01467.83 432zM147 260c-35.19 0-66.13-32.72-69-72.93-1.42-20.6 5-39.65 18-53.62 12.86-13.83 31-21.45 51-21.45s38 7.66 50.93 21.57c13.1 14.08 19.5 33.09 18 53.52-2.87 40.2-33.8 72.91-68.93 72.91zM212.66 291.45c-17.59-8.6-40.42-12.9-65.65-12.9-29.46 0-58.07 7.68-80.57 21.62-25.51 15.83-42.67 38.88-49.6 66.71a27.39 27.39 0 004.79 23.36A25.32 25.32 0 0041.72 400h111a8 8 0 007.87-6.57c.11-.63.25-1.26.41-1.88 8.48-34.06 28.35-62.84 57.71-83.82a8 8 0 00-.63-13.39c-1.57-.92-3.37-1.89-5.42-2.89z'/></svg>\"\nexport const peopleCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>People Circle</title><path d='M258.9 48C141.92 46.42 46.42 141.92 48 258.9c1.56 112.19 92.91 203.54 205.1 205.1 117 1.6 212.48-93.9 210.88-210.88C462.44 140.91 371.09 49.56 258.9 48zm-3.68 152.11c.21-1.2.44-2.4.71-3.59a66.46 66.46 0 0116.29-31.21c12.89-13.73 31.16-21.31 51.45-21.31a74.05 74.05 0 0125.06 4.26 66.69 66.69 0 0126.27 17.2 68.15 68.15 0 0118 42.14 78.46 78.46 0 010 11.4 86.19 86.19 0 01-8.2 31q-.76 1.59-1.59 3.15c-1.11 2.07-2.3 4.1-3.58 6.06a79.47 79.47 0 01-8.63 11c-13.12 14-29.92 21.73-47.31 21.73a59.61 59.61 0 01-19.17-3.18 63.47 63.47 0 01-6.1-2.43 70.76 70.76 0 01-22.07-16.12 83.76 83.76 0 01-22-51.32q-.27-3.88-.18-7.68a75.62 75.62 0 011.05-11.08zm-149.73 24.34a59.87 59.87 0 015.2-20.64 56.76 56.76 0 012.78-5.3 54.49 54.49 0 017.19-9.56 55.62 55.62 0 0114-10.82 56.84 56.84 0 018.11-3.64 63.85 63.85 0 0133.35-2.39 57 57 0 0130.78 17 57.86 57.86 0 0115.41 38.62c.05 2.11 0 4.23-.15 6.38a71.58 71.58 0 01-6 23.84 69.49 69.49 0 01-5.73 10.42 65.39 65.39 0 01-15.76 16.57c-1.5 1.07-3.06 2.07-4.67 3.07a54.21 54.21 0 01-10 4.65 49.31 49.31 0 01-16.2 2.76c-.93 0-1.86 0-2.78-.08a47.6 47.6 0 01-5.48-.62 51.19 51.19 0 01-5.35-1.23 53.54 53.54 0 01-7.72-2.89c-.84-.39-1.66-.8-2.48-1.23-18-9.49-31.57-29.16-34.23-52.12-.12-1.05-.22-2.1-.29-3.16a66.59 66.59 0 01.02-9.63zm53.92 178.6a177.27 177.27 0 01-61.94-70.65 4 4 0 011.62-5.26C117.67 316.69 141.4 311 163.82 311c17 0 30.7 2 42.69 5.88a8 8 0 012.59 13.77c-23.35 19-38.4 42.54-45.47 70.75a2.77 2.77 0 01-4.22 1.65zM256 432a175.12 175.12 0 01-65.7-12.72 4 4 0 01-2.4-4.46c.4-2.05.84-3.92 1.23-5.48 7.12-28.43 24.76-52 51-68.18 23.29-14.35 53-22.25 83.52-22.25 31.16 0 60 7.58 83.48 21.91a2.72 2.72 0 01.91 3.67A176.1 176.1 0 01256 432z'/><path d='M161 295.28a47.6 47.6 0 01-5.48-.62 47.6 47.6 0 005.48.62zM134.64 178.13a55.62 55.62 0 00-14 10.82 54.49 54.49 0 00-7.19 9.56 54.49 54.49 0 017.19-9.56 55.62 55.62 0 0114-10.82zM216.17 257.89a71.58 71.58 0 006-23.84c.15-2.15.2-4.27.15-6.38q.08 3.15-.15 6.38a71.58 71.58 0 01-6 23.84zM134.64 178.13a56.84 56.84 0 018.11-3.64 56.84 56.84 0 00-8.11 3.64zM150.21 293.43a53.54 53.54 0 01-7.72-2.89 53.54 53.54 0 007.72 2.89zM105.78 237.19c2.66 23 16.26 42.63 34.23 52.12-18.01-9.49-31.57-29.16-34.23-52.12zM254.34 219a83.76 83.76 0 0022 51.32 70.76 70.76 0 0022.07 16.12 70.76 70.76 0 01-22.07-16.12 83.76 83.76 0 01-22-51.32q-.27-3.88-.18-7.68-.09 3.75.18 7.68zM304.5 288.82a63.47 63.47 0 01-6.1-2.43 63.47 63.47 0 006.1 2.43zM255.93 196.54a66.46 66.46 0 0116.29-31.21 66.46 66.46 0 00-16.29 31.21zM375 165.46a68.15 68.15 0 0118 42.14 68.15 68.15 0 00-18-42.14 66.69 66.69 0 00-26.27-17.2 66.69 66.69 0 0126.27 17.2zM393 219a86.19 86.19 0 01-8.2 31 86.19 86.19 0 008.2-31zM254.16 211.27a75.62 75.62 0 011.06-11.14 75.62 75.62 0 00-1.06 11.14zM383.19 253.16zM206.88 189.05a57.86 57.86 0 0115.41 38.62 57.86 57.86 0 00-15.41-38.62 57 57 0 00-30.78-17 57 57 0 0130.78 17zM190 288a54.21 54.21 0 01-10 4.65 54.21 54.21 0 0010-4.65zM105.49 224.45a59.87 59.87 0 015.2-20.64 59.87 59.87 0 00-5.2 20.64zM194.68 284.88C193.17 286 191.61 287 190 288c1.61-1 3.17-2 4.68-3.12zM216.17 257.89a69.49 69.49 0 01-5.73 10.42 69.49 69.49 0 005.73-10.42zM110.69 203.81a56.76 56.76 0 012.78-5.3 56.76 56.76 0 00-2.78 5.3zM194.68 284.88a65.39 65.39 0 0015.76-16.57 65.39 65.39 0 01-15.76 16.57z'/></svg>\"\nexport const peopleCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>People Circle</title><path d='M256 464c-114.69 0-208-93.31-208-208S141.31 48 256 48s208 93.31 208 208-93.31 208-208 208zm0-384c-97 0-176 79-176 176s79 176 176 176 176-78.95 176-176S353.05 80 256 80z'/><path d='M323.67 292c-17.4 0-34.21-7.72-47.34-21.73a83.76 83.76 0 01-22-51.32c-1.47-20.7 4.88-39.75 17.88-53.62S303.38 144 323.67 144c20.14 0 38.37 7.62 51.33 21.46s19.47 33 18 53.51a84 84 0 01-22 51.3C357.86 284.28 341.06 292 323.67 292zm55.81-74zM163.82 295.36c-29.76 0-55.93-27.51-58.33-61.33-1.23-17.32 4.15-33.33 15.17-45.08s26.22-18 43.15-18 32.12 6.44 43.07 18.14 16.5 27.82 15.25 45c-2.44 33.77-28.6 61.27-58.31 61.27zM420.37 355.28c-1.59-4.7-5.46-9.71-13.22-14.46-23.46-14.33-52.32-21.91-83.48-21.91-30.57 0-60.23 7.9-83.53 22.25-26.25 16.17-43.89 39.75-51 68.18-1.68 6.69-4.13 19.14-1.51 26.11a192.18 192.18 0 00232.75-80.17zM163.63 401.37c7.07-28.21 22.12-51.73 45.47-70.75a8 8 0 00-2.59-13.77c-12-3.83-25.7-5.88-42.69-5.88-23.82 0-49.11 6.45-68.14 18.17-5.4 3.33-10.7 4.61-14.78 5.75a192.84 192.84 0 0077.78 86.64l1.79-.14a102.82 102.82 0 013.16-20.02z'/></svg>\"\nexport const peopleCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>People Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm69.3 96.17a72.5 72.5 0 11-72.6 72.5 72.55 72.55 0 0172.6-72.5zm-155.1 26.36a59.32 59.32 0 11-59.4 59.32 59.35 59.35 0 0159.4-59.32zm-75.85 155c24.5-13.29 55.87-19.94 75.85-19.94 15 0 34.32 3 53.33 10.2a133.05 133.05 0 00-34 27.11c-13.19 15-20.76 32.92-20.76 50.83v15a177.06 177.06 0 01-74.42-83.15zM256 432a175.12 175.12 0 01-59.4-10.33v-27.05c0-52.59 85.75-79.09 128.7-79.09 23 0 58.38 7.63 86.21 22.81A176.14 176.14 0 01256 432z'/></svg>\"\nexport const peopleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>People</title><path d='M402 168c-2.93 40.67-33.1 72-66 72s-63.12-31.32-66-72c-3-42.31 26.37-72 66-72s69 30.46 66 72z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M336 304c-65.17 0-127.84 32.37-143.54 95.41-2.08 8.34 3.15 16.59 11.72 16.59h263.65c8.57 0 13.77-8.25 11.72-16.59C463.85 335.36 401.18 304 336 304z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M200 185.94c-2.34 32.48-26.72 58.06-53 58.06s-50.7-25.57-53-58.06C91.61 152.15 115.34 128 147 128s55.39 24.77 53 57.94z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M206 306c-18.05-8.27-37.93-11.45-59-11.45-52 0-102.1 25.85-114.65 76.2-1.65 6.66 2.53 13.25 9.37 13.25H154' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const peopleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>People</title><circle cx='152' cy='184' r='72'/><path d='M234 296c-28.16-14.3-59.24-20-82-20-44.58 0-136 27.34-136 82v42h150v-16.07c0-19 8-38.05 22-53.93 11.17-12.68 26.81-24.45 46-34z'/><path d='M340 288c-52.07 0-156 32.16-156 96v48h312v-48c0-63.84-103.93-96-156-96z'/><circle cx='340' cy='168' r='88'/></svg>\"\nexport const person = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person</title><path d='M332.64 64.58C313.18 43.57 286 32 256 32c-30.16 0-57.43 11.5-76.8 32.38-19.58 21.11-29.12 49.8-26.88 80.78C156.76 206.28 203.27 256 256 256s99.16-49.71 103.67-110.82c2.27-30.7-7.33-59.33-27.03-80.6zM432 480H80a31 31 0 01-24.2-11.13c-6.5-7.77-9.12-18.38-7.18-29.11C57.06 392.94 83.4 353.61 124.8 326c36.78-24.51 83.37-38 131.2-38s94.42 13.5 131.2 38c41.4 27.6 67.74 66.93 76.18 113.75 1.94 10.73-.68 21.34-7.18 29.11A31 31 0 01432 480z'/></svg>\"\nexport const personAdd = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Add</title><path d='M288 256c52.79 0 99.43-49.71 104-110.82 2.27-30.7-7.36-59.33-27.12-80.6C345.33 43.57 318 32 288 32c-30.24 0-57.59 11.5-77 32.38-19.63 21.11-29.2 49.8-27 80.78C188.49 206.28 235.12 256 288 256zM495.38 439.76c-8.44-46.82-34.79-86.15-76.19-113.75C382.42 301.5 335.83 288 288 288s-94.42 13.5-131.19 38c-41.4 27.6-67.75 66.93-76.19 113.75-1.93 10.73.69 21.34 7.19 29.11A30.94 30.94 0 00112 480h352a30.94 30.94 0 0024.21-11.13c6.48-7.77 9.1-18.38 7.17-29.11zM104 288v-40h40a16 16 0 000-32h-40v-40a16 16 0 00-32 0v40H32a16 16 0 000 32h40v40a16 16 0 0032 0z'/></svg>\"\nexport const personAddOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Add</title><path d='M376 144c-3.92 52.87-44 96-88 96s-84.15-43.12-88-96c-4-55 35-96 88-96s92 42 88 96z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M288 304c-87 0-175.3 48-191.64 138.6-2 10.92 4.21 21.4 15.65 21.4H464c11.44 0 17.62-10.48 15.65-21.4C463.3 352 375 304 288 304z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M88 176v112M144 232H32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const personAddSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Add</title><path d='M106 304v-54h54v-36h-54v-54H70v54H16v36h54v54h36z'/><circle cx='288' cy='144' r='112'/><path d='M288 288c-69.42 0-208 42.88-208 128v64h416v-64c0-85.12-138.58-128-208-128z'/></svg>\"\nexport const personCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-50.22 116.82C218.45 151.39 236.28 144 256 144s37.39 7.44 50.11 20.94c12.89 13.68 19.16 32.06 17.68 51.82C320.83 256 290.43 288 256 288s-64.89-32-67.79-71.25c-1.47-19.92 4.79-38.36 17.57-51.93zM256 432a175.49 175.49 0 01-126-53.22 122.91 122.91 0 0135.14-33.44C190.63 329 222.89 320 256 320s65.37 9 90.83 25.34A122.87 122.87 0 01382 378.78 175.45 175.45 0 01256 432z'/></svg>\"\nexport const personCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Circle</title><path d='M258.9 48C141.92 46.42 46.42 141.92 48 258.9c1.56 112.19 92.91 203.54 205.1 205.1 117 1.6 212.48-93.9 210.88-210.88C462.44 140.91 371.09 49.56 258.9 48zm126.42 327.25a4 4 0 01-6.14-.32 124.27 124.27 0 00-32.35-29.59C321.37 329 289.11 320 256 320s-65.37 9-90.83 25.34a124.24 124.24 0 00-32.35 29.58 4 4 0 01-6.14.32A175.32 175.32 0 0180 259c-1.63-97.31 78.22-178.76 175.57-179S432 158.81 432 256a175.32 175.32 0 01-46.68 119.25z'/><path d='M256 144c-19.72 0-37.55 7.39-50.22 20.82s-19 32-17.57 51.93C191.11 256 221.52 288 256 288s64.83-32 67.79-71.24c1.48-19.74-4.8-38.14-17.68-51.82C293.39 151.44 275.59 144 256 144z'/></svg>\"\nexport const personCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm2 96a72 72 0 11-72 72 72 72 0 0172-72zm-2 288a175.55 175.55 0 01-129.18-56.6C135.66 329.62 215.06 320 256 320s120.34 9.62 129.18 55.39A175.52 175.52 0 01256 432z'/></svg>\"\nexport const personOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person</title><path d='M344 144c-3.92 52.87-44 96-88 96s-84.15-43.12-88-96c-4-55 35-96 88-96s92 42 88 96z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 304c-87 0-175.3 48-191.64 138.6C62.39 453.52 68.57 464 80 464h352c11.44 0 17.62-10.48 15.65-21.4C431.3 352 343 304 256 304z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const personRemove = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Remove</title><path d='M288 256c52.79 0 99.43-49.71 104-110.82 2.27-30.7-7.36-59.33-27.12-80.6C345.33 43.57 318 32 288 32c-30.24 0-57.59 11.5-77 32.38-19.63 21.11-29.2 49.8-27 80.78C188.49 206.28 235.12 256 288 256zM495.38 439.76c-8.44-46.82-34.79-86.15-76.19-113.75C382.42 301.5 335.83 288 288 288s-94.42 13.5-131.19 38c-41.4 27.6-67.75 66.93-76.19 113.75-1.93 10.73.69 21.34 7.19 29.11A30.94 30.94 0 00112 480h352a30.94 30.94 0 0024.21-11.13c6.48-7.77 9.1-18.38 7.17-29.11zM144 216H32a16 16 0 000 32h112a16 16 0 000-32z'/></svg>\"\nexport const personRemoveOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Remove</title><path d='M376 144c-3.92 52.87-44 96-88 96s-84.15-43.12-88-96c-4-55 35-96 88-96s92 42 88 96z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M288 304c-87 0-175.3 48-191.64 138.6-2 10.92 4.21 21.4 15.65 21.4H464c11.44 0 17.62-10.48 15.65-21.4C463.3 352 375 304 288 304z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M144 232H32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const personRemoveSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person Remove</title><path d='M16 214h144v36H16z'/><circle cx='288' cy='144' r='112'/><path d='M288 288c-69.42 0-208 42.88-208 128v64h416v-64c0-85.12-138.58-128-208-128z'/></svg>\"\nexport const personSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Person</title><path d='M256 256a112 112 0 10-112-112 112 112 0 00112 112zm0 32c-69.42 0-208 42.88-208 128v64h416v-64c0-85.12-138.58-128-208-128z'/></svg>\"\nexport const phoneLandscape = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Phone Landscape</title><path d='M0 176v160a64 64 0 0064 64h384a64 64 0 0064-64V176a64 64 0 00-64-64H64a64 64 0 00-64 64zm448-32a32 32 0 0132 32v160a32 32 0 01-32 32H64a32 32 0 01-32-32v-11.35a7.94 7.94 0 014.75-7.3A32 32 0 0056 288v-64a32 32 0 00-19.25-29.35 7.94 7.94 0 01-4.75-7.3V176a32 32 0 0132-32z'/><path d='M48 176a11.88 11.88 0 004.69 9.53A48 48 0 0172 224v64a48 48 0 01-19.31 38.47A11.88 11.88 0 0048 336a16 16 0 0016 16h384a16 16 0 0016-16V176a16 16 0 00-16-16H64a16 16 0 00-16 16z'/><path d='M0 176v160a64 64 0 0064 64h384a64 64 0 0064-64V176a64 64 0 00-64-64H64a64 64 0 00-64 64zm448-32a32 32 0 0132 32v160a32 32 0 01-32 32H64a32 32 0 01-32-32v-11.35a7.94 7.94 0 014.75-7.3A32 32 0 0056 288v-64a32 32 0 00-19.25-29.35 7.94 7.94 0 01-4.75-7.3V176a32 32 0 0132-32z'/></svg>\"\nexport const phoneLandscapeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Phone Landscape</title><rect x='128' y='16' width='256' height='480' rx='48' ry='48' transform='rotate(-90 256 256)' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M16 336v-24a8 8 0 018-8h0a16 16 0 0016-16v-64a16 16 0 00-16-16h0a8 8 0 01-8-8v-24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const phoneLandscapeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Phone Landscape</title><path d='M0 130v252a18 18 0 0018 18h476a18 18 0 0018-18V130a18 18 0 00-18-18H18a18 18 0 00-18 18zm448 234H64V148h384z'/></svg>\"\nexport const phonePortrait = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Phone Portrait</title><path d='M336 0H176a64 64 0 00-64 64v384a64 64 0 0064 64h160a64 64 0 0064-64V64a64 64 0 00-64-64zm32 448a32 32 0 01-32 32H176a32 32 0 01-32-32V64a32 32 0 0132-32h11.35a7.94 7.94 0 017.3 4.75A32 32 0 00224 56h64a32 32 0 0029.35-19.25 7.94 7.94 0 017.3-4.75H336a32 32 0 0132 32z'/><path d='M336 48a11.88 11.88 0 00-9.53 4.69A48 48 0 01288 72h-64a48 48 0 01-38.47-19.31A11.88 11.88 0 00176 48a16 16 0 00-16 16v384a16 16 0 0016 16h160a16 16 0 0016-16V64a16 16 0 00-16-16z'/><path d='M336 0H176a64 64 0 00-64 64v384a64 64 0 0064 64h160a64 64 0 0064-64V64a64 64 0 00-64-64zm32 448a32 32 0 01-32 32H176a32 32 0 01-32-32V64a32 32 0 0132-32h11.35a7.94 7.94 0 017.3 4.75A32 32 0 00224 56h64a32 32 0 0029.35-19.25 7.94 7.94 0 017.3-4.75H336a32 32 0 0132 32z'/></svg>\"\nexport const phonePortraitOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Phone Portrait</title><rect x='128' y='16' width='256' height='480' rx='48' ry='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M176 16h24a8 8 0 018 8h0a16 16 0 0016 16h64a16 16 0 0016-16h0a8 8 0 018-8h24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const phonePortraitSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Phone Portrait</title><path d='M382 0H130a18 18 0 00-18 18v476a18 18 0 0018 18h252a18 18 0 0018-18V18a18 18 0 00-18-18zM148 448V64h216v384z'/></svg>\"\nexport const pieChart = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pie Chart</title><path d='M66.1 357a16 16 0 01-14.61-9.46A224 224 0 01256 32a16 16 0 0116 16v208a16 16 0 01-9.47 14.61l-189.9 84.95A15.93 15.93 0 0166.1 357z'/><path d='M313.59 68.18A8 8 0 00304 76v180a48.07 48.07 0 01-28.4 43.82L103.13 377a8 8 0 00-3.35 11.81 208.42 208.42 0 0048.46 50.41A206.32 206.32 0 00272 480c114.69 0 208-93.31 208-208 0-100.45-71.58-184.5-166.41-203.82z'/></svg>\"\nexport const pieChartOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pie Chart</title><path d='M256.05 80.65Q263.94 80 272 80c106 0 192 86 192 192s-86 192-192 192A192.09 192.09 0 0189.12 330.65' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 48C141.12 48 48 141.12 48 256a207.29 207.29 0 0018.09 85L256 256z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pieChartSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pie Chart</title><path d='M58 362.09l-6.51-14.59A224 224 0 01256 32h16v234.37z'/><path d='M304 66.46v220.65L94.62 380.78A208.31 208.31 0 00272 480c114.69 0 208-93.31 208-208 0-103.81-76.45-190.1-176-205.54z'/></svg>\"\nexport const pin = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pin</title><path d='M336 96a80 80 0 10-96 78.39v283.17a32.09 32.09 0 002.49 12.38l10.07 24a3.92 3.92 0 006.88 0l10.07-24a32.09 32.09 0 002.49-12.38V174.39A80.13 80.13 0 00336 96zm-56 0a24 24 0 1124-24 24 24 0 01-24 24z'/></svg>\"\nexport const pinOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pin</title><circle cx='256' cy='96' r='64' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M272 164a9 9 0 00-9-9h-14a9 9 0 00-9 9v293.56a32.09 32.09 0 002.49 12.38l10.07 24a3.92 3.92 0 006.88 0l10.07-24a32.09 32.09 0 002.49-12.38z'/><circle cx='280' cy='72' r='24'/></svg>\"\nexport const pinSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pin</title><path d='M339 99a83 83 0 10-102 80.8V464l19 32 19-32V179.8A83.28 83.28 0 00339 99zm-59-6a21 21 0 1121-21 21 21 0 01-21 21z'/></svg>\"\nexport const pint = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pint</title><path d='M399 99.29c-.15-2.13-.3-4.35-.44-6.68L395.69 46a32 32 0 00-31.91-30H148.21a32 32 0 00-31.91 30l-2.91 46.63c-.14 2.31-.29 4.51-.43 6.62-1.29 19.24-2.23 33.14 3.73 65.66 1.67 9.11 5.22 22.66 9.73 39.82 12.61 48 33.71 128.36 33.71 195.63V472a24 24 0 0024 24h143.74a24 24 0 0024-24v-71.62c0-77.09 21.31-153.29 34-198.81 4.38-15.63 7.83-28 9.41-36.62 5.99-32.51 5.05-46.42 3.72-65.66zm-35-47.54l1.5 24a4 4 0 01-4 4.25h-211a4 4 0 01-4-4.25l1.48-24A4 4 0 01152 48h208a4 4 0 014 3.75z'/></svg>\"\nexport const pintOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pint</title><path d='M132.43 162c-6.24-34-4.49-45.55-3.07-68.39L132.27 47a16 16 0 0115.94-15h215.57a16 16 0 0115.94 15l2.91 46.61c1.43 22.86 3.19 34.39-3.06 68.45-5.93 32.29-43.71 133.27-43.71 238.32V472a8 8 0 01-8 8H184.12a8 8 0 01-8-8v-71.63c.01-92.47-37.46-204.3-43.69-238.37zM135.21 96h241.58' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pintSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pint</title><path d='M399 99.29L394 16H118.45L113 99.26c-1.29 19.24-2.23 33.14 3.73 65.66 1.67 9.11 5.22 22.66 9.73 39.82 12.61 48 33.71 128.36 33.71 195.63V496h191.68v-95.62c0-77.09 21.31-153.29 34-198.81 4.38-15.63 7.83-28 9.41-36.62 6.01-32.51 5.07-46.42 3.74-65.66zM146.23 80l2-32h215.52l2 32z'/></svg>\"\nexport const pizza = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pizza</title><path d='M441.82 67.83C383.44 44.73 317.3 32 255.56 32 192 32 125.76 44.53 69 67.26 48.7 75.49 45.21 90 48.71 100.82L52.78 111a16 16 0 0021.31 8.69c10.8-4.76 23.93-10.54 27-11.78C145.1 89.64 198.71 80 256 80c57.47 0 108.09 9.24 154.76 28.25 4.42 1.8 14.88 6.42 26.17 11.46a16 16 0 0021.35-8.59L462 102l.34-.9c3.45-10.21.14-25.05-20.52-33.27z'/><path d='M409.18 140.86C363.67 122.53 307.68 112 255.56 112a425 425 0 00-153.74 28.89c-.53.21-2.06.88-4.29 1.88a16 16 0 00-8 21.27c4 8.71 9.42 20.58 15.5 33.89C137.94 270 199.21 404 227.26 462A31.74 31.74 0 00256 480a31.73 31.73 0 0028.76-18.06l.06-.13 137.3-297.57a15.94 15.94 0 00-8.31-21.45c-2.26-.95-3.85-1.61-4.5-1.87zm-215.1 83.07a32 32 0 1129.85-29.85 32 32 0 01-29.85 29.85zm64 128a32 32 0 1129.85-29.85 32 32 0 01-29.85 29.85zm64-112a32 32 0 1129.85-29.85 32 32 0 01-29.85 29.85z'/></svg>\"\nexport const pizzaOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pizza</title><path d='M404.76 123.08C358.37 104.18 309.69 96 256 96s-106.1 9-148.9 26.68c-8.08 3.3-15.26 9-10.07 19.5C101.24 150.71 203 375 241.66 455a15.94 15.94 0 0028.72 0l144.05-312.22c3.19-6.9.9-15.4-9.67-19.7z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M436.38 82.68C384.31 62.08 320.17 48 256 48S128.65 60.78 75.48 82.08C70.79 84 62 88.43 64.41 95.88L74.09 120c4 8.2 8.67 8.2 15.06 8.2 1.79 0 4.29-1 7.28-2.18A442.46 442.46 0 01256 96c56.76 0 114.91 12 159.6 30 3.59 1.4 5.59 2.18 7.28 2.18 6.58 0 10.38 2.19 15-8.1L447.65 96c2.01-6-4.99-10.82-11.27-13.32z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='192' cy='192' r='32'/><circle cx='320' cy='208' r='32'/><circle cx='256' cy='320' r='32'/></svg>\"\nexport const pizzaSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pizza</title><path d='M442.3 67.82C383.92 44.72 317.78 32 256 32c-63.57 0-129.8 12.51-186.56 35.25C49.18 75.48 42 80 42 80l22 44 37.53-16.14C147.58 89.53 199.19 80 256.51 80c57.49 0 108.09 9.23 154.75 28.25L448 124l22-44s-7-4-27.7-12.18z'/><ellipse cx='320.48' cy='207.99' rx='31.97' ry='32.03' transform='rotate(-44.98 320.503 207.996)' class='ionicon-fill-none'/><ellipse cx='192.48' cy='191.99' rx='31.97' ry='32.03' transform='rotate(-44.98 192.49 191.992)' class='ionicon-fill-none'/><ellipse cx='256.48' cy='319.99' rx='31.97' ry='32.03' transform='rotate(-44.98 256.505 320)' class='ionicon-fill-none'/><path d='M409.66 140.85C364.15 122.52 308.16 112 256 112a425 425 0 00-153.7 28.9c-.25.1-9.24 4.23-19 8.71 7.46 16.22 18 39.16 22.2 48.33L256 480l173.74-330.84-19.92-8.24zm-185.25 53.22a32 32 0 11-34-34 32.12 32.12 0 0134 34zm64 128a32 32 0 11-34-34 32.12 32.12 0 0134 34zm64-112a32 32 0 11-34-34 32.12 32.12 0 0134 34z'/></svg>\"\nexport const planet = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Planet</title><path d='M96.85 286.62a8 8 0 00-12.53 8.25C102.07 373.28 172.3 432 256 432a175.31 175.31 0 0052.41-8 8 8 0 00.79-15 1120 1120 0 01-109.48-55.61 1126.24 1126.24 0 01-102.87-66.77zM492.72 339.51c-4.19-5.58-9.11-11.44-14.7-17.53a15.83 15.83 0 00-26.56 5.13c0 .16-.11.31-.17.47a15.75 15.75 0 003.15 16.06c22.74 25 26.42 38.51 25.48 41.36-2 2.23-17.05 6.89-58.15-3.53q-8.83-2.24-19.32-5.46-6.76-2.08-13.79-4.49a176.76 176.76 0 0019.54-27.25c.17-.29.35-.58.52-.88A175.39 175.39 0 00432 256a178.87 178.87 0 00-1-19c-9.57-88.17-84.4-157-175-157a175.37 175.37 0 00-106.4 35.89 177.4 177.4 0 00-45.83 51.84c-.16.29-.34.58-.51.87a175.48 175.48 0 00-13.83 30.52q-5.59-4.87-10.79-9.67c-5.39-5-10.17-9.63-14.42-14-29.57-30.26-33.09-45.61-32.16-48.45 2-2.23 15.54-5.87 48.62 1.31A15.82 15.82 0 0096.22 123l.36-.44a15.74 15.74 0 00-8.67-25.43A237.38 237.38 0 0064.13 93c-30.72-3.53-50.83 2.52-59.78 18-3.24 5.58-6.35 15.09-2.72 28.6C7 159.66 26.14 184 53.23 209.5c8.63 8.13 18.06 16.37 28.12 24.64 7.32 6 15 12.06 22.9 18.08q7.91 6 16.15 12T137.1 276c25.41 17.61 52.26 34.52 78.59 49.69q14.34 8.26 28.64 16t28.37 14.81c21.9 11 43.35 20.92 63.86 29.43q13.19 5.48 25.81 10.16c11.89 4.42 23.37 8.31 34.31 11.59l1.1.33c25.73 7.66 47.42 11.69 64.48 12H464c21.64 0 36.3-6.38 43.58-19 9.09-15.62 4.08-36.32-14.86-61.5z'/></svg>\"\nexport const planetOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Planet</title><path d='M413.48 284.46c58.87 47.24 91.61 89 80.31 108.55-17.85 30.85-138.78-5.48-270.1-81.15S.37 149.84 18.21 119c11.16-19.28 62.58-12.32 131.64 14.09' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='160' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const planetSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Planet</title><path d='M81 274.71C90.36 363 165.26 432 256 432a174.91 174.91 0 0071.49-15.19c-40.3-16.53-84.05-38.17-127.77-63.36C157 328.86 115.84 301.5 81 274.71zM492.72 339.51c-8.5-11.31-20-23.8-34-37a205.25 205.25 0 01-11 34c28.72 29.5 33.2 45.34 32.17 48.45-2 2.23-17.05 6.89-58.15-3.53q-8.83-2.24-19.32-5.46-6.76-2.08-13.79-4.49a176.76 176.76 0 0019.54-27.25c.17-.29.35-.58.52-.88A175.39 175.39 0 00432 256a178.87 178.87 0 00-1-19c-9.57-88.17-84.4-157-175-157a175.37 175.37 0 00-106.4 35.89 177.4 177.4 0 00-45.83 51.84c-.16.29-.34.58-.51.87a175.48 175.48 0 00-13.83 30.52q-5.59-4.87-10.79-9.67c-5.39-5-10.17-9.63-14.42-14-29.57-30.26-33.09-45.61-32.16-48.45 2.16-2.43 18.1-6.54 58.13 3.55a209.88 209.88 0 0124-26.56c-18.86-5.61-35.79-9.35-50.05-11C33.41 89.47 13.3 95.52 4.35 111c-3.24 5.58-6.35 15.09-2.72 28.6C7 159.66 26.14 184 53.23 209.5c8.63 8.13 18.06 16.37 28.12 24.64 7.32 6 15 12.06 22.9 18.08q7.91 6 16.15 12T137.1 276c25.41 17.61 52.26 34.52 78.59 49.69q14.34 8.26 28.64 16t28.37 14.81c21.9 11 43.35 20.92 63.86 29.43q13.19 5.48 25.81 10.16c11.89 4.42 23.37 8.31 34.31 11.59l1.1.33c25.73 7.66 47.42 11.69 64.48 12H464c21.64 0 36.3-6.38 43.58-19 9.09-15.62 4.08-36.32-14.86-61.5z'/></svg>\"\nexport const play = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play</title><path d='M133 440a35.37 35.37 0 01-17.5-4.67c-12-6.8-19.46-20-19.46-34.33V111c0-14.37 7.46-27.53 19.46-34.33a35.13 35.13 0 0135.77.45l247.85 148.36a36 36 0 010 61l-247.89 148.4A35.5 35.5 0 01133 440z'/></svg>\"\nexport const playBack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Back</title><path d='M30.71 229.47l188.87-113a30.54 30.54 0 0131.09-.39 33.74 33.74 0 0116.76 29.47v79.05l180.72-108.16a30.54 30.54 0 0131.09-.39A33.74 33.74 0 01496 145.52v221A33.73 33.73 0 01479.24 396a30.54 30.54 0 01-31.09-.39L267.43 287.4v79.08A33.73 33.73 0 01250.67 396a30.54 30.54 0 01-31.09-.39l-188.87-113a31.27 31.27 0 010-53z'/></svg>\"\nexport const playBackCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Back Circle</title><path d='M48 256c0 114.69 93.31 208 208 208s208-93.31 208-208S370.69 48 256 48 48 141.31 48 256zm69.23-9.3l114.45-69.14a10.78 10.78 0 0116.32 9.31v53.32l103.68-62.63a10.78 10.78 0 0116.32 9.31v138.26a10.78 10.78 0 01-16.32 9.31L248 271.81v53.32a10.78 10.78 0 01-16.32 9.31L117.23 265.3a10.89 10.89 0 010-18.6z'/></svg>\"\nexport const playBackCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Back Circle</title><path d='M256 448c106 0 192-86 192-192S362 64 256 64 64 150 64 256s86 192 192 192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M117.23 246.7l114.45-69.14a10.78 10.78 0 0116.32 9.31v53.32l103.68-62.63a10.78 10.78 0 0116.32 9.31v138.26a10.78 10.78 0 01-16.32 9.31L248 271.81v53.32a10.78 10.78 0 01-16.32 9.31L117.23 265.3a10.89 10.89 0 010-18.6z'/></svg>\"\nexport const playBackCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Back Circle</title><path d='M48 256c0 114.69 93.31 208 208 208s208-93.31 208-208S370.69 48 256 48 48 141.31 48 256zm63.47 0L248 168v72.16l120-72.48v176.45l-120-72.32v71.44z'/></svg>\"\nexport const playBackOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Back</title><path d='M480 145.52v221c0 13.28-13 21.72-23.63 15.35L267.5 268.8c-9.24-5.53-9.24-20.07 0-25.6l188.87-113C467 123.8 480 132.24 480 145.52zM251.43 145.52v221c0 13.28-13 21.72-23.63 15.35L38.93 268.8c-9.24-5.53-9.24-20.07 0-25.6l188.87-113c10.64-6.4 23.63 2.04 23.63 15.32z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const playBackSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Back</title><path d='M496 400L256 256l240-144v288zM256 400L16 256l240-144v288z'/></svg>\"\nexport const playCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm74.77 217.3l-114.45 69.14a10.78 10.78 0 01-16.32-9.31V186.87a10.78 10.78 0 0116.32-9.31l114.45 69.14a10.89 10.89 0 010 18.6z'/></svg>\"\nexport const playCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M216.32 334.44l114.45-69.14a10.89 10.89 0 000-18.6l-114.45-69.14a10.78 10.78 0 00-16.32 9.31v138.26a10.78 10.78 0 0016.32 9.31z'/></svg>\"\nexport const playCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-56 296V168l144 88z'/></svg>\"\nexport const playForward = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Forward</title><path d='M481.29 229.47l-188.87-113a30.54 30.54 0 00-31.09-.39 33.74 33.74 0 00-16.76 29.47v79.05L63.85 116.44a30.54 30.54 0 00-31.09-.39A33.74 33.74 0 0016 145.52v221A33.74 33.74 0 0032.76 396a30.54 30.54 0 0031.09-.39L244.57 287.4v79.08A33.74 33.74 0 00261.33 396a30.54 30.54 0 0031.09-.39l188.87-113a31.27 31.27 0 000-53z'/></svg>\"\nexport const playForwardCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Forward Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm138.77 217.3l-114.45 69.14a10.78 10.78 0 01-16.32-9.31v-53.32l-103.68 62.63a10.78 10.78 0 01-16.32-9.31V186.87a10.78 10.78 0 0116.32-9.31L264 240.19v-53.32a10.78 10.78 0 0116.32-9.31l114.45 69.14a10.89 10.89 0 010 18.6z'/></svg>\"\nexport const playForwardCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Forward Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M394.77 246.7l-114.45-69.14a10.78 10.78 0 00-16.32 9.31v53.32l-103.68-62.63a10.78 10.78 0 00-16.32 9.31v138.26a10.78 10.78 0 0016.32 9.31L264 271.81v53.32a10.78 10.78 0 0016.32 9.31l114.45-69.14a10.89 10.89 0 000-18.6z'/></svg>\"\nexport const playForwardCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Forward Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm8 295.25v-71.44l-120 72.32V167.71l120 72.48V168l136.53 88z'/></svg>\"\nexport const playForwardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Forward</title><path d='M32 145.52v221c0 13.28 13 21.72 23.63 15.35l188.87-113c9.24-5.53 9.24-20.07 0-25.6l-188.87-113C45 123.8 32 132.24 32 145.52zM260.57 145.52v221c0 13.28 13 21.72 23.63 15.35l188.87-113c9.24-5.53 9.24-20.07 0-25.6l-188.87-113c-10.64-6.47-23.63 1.97-23.63 15.25z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const playForwardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Forward</title><path d='M16 400l240-144L16 112v288zM256 400l240-144-240-144v288z'/></svg>\"\nexport const playOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play</title><path d='M112 111v290c0 17.44 17 28.52 31 20.16l247.9-148.37c12.12-7.25 12.12-26.33 0-33.58L143 90.84c-14-8.36-31 2.72-31 20.16z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const playSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play</title><path d='M96 448l320-192L96 64v384z'/></svg>\"\nexport const playSkipBack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Back</title><path d='M112 64a16 16 0 0116 16v136.43L360.77 77.11a35.13 35.13 0 0135.77-.44c12 6.8 19.46 20 19.46 34.33v290c0 14.37-7.46 27.53-19.46 34.33a35.14 35.14 0 01-35.77-.45L128 295.57V432a16 16 0 01-32 0V80a16 16 0 0116-16z'/></svg>\"\nexport const playSkipBackCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Back Circle</title><path d='M48 256c0 114.69 93.31 208 208 208s208-93.31 208-208S370.69 48 256 48 48 141.31 48 256zm128-64a16 16 0 0132 0v53l111.68-67.46a10.78 10.78 0 0116.32 9.33v138.26a10.78 10.78 0 01-16.32 9.31L208 267v53a16 16 0 01-32 0z'/></svg>\"\nexport const playSkipBackCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Back Circle</title><path d='M256 448c106 0 192-86 192-192S362 64 256 64 64 150 64 256s86 192 192 192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M192 176a16 16 0 0116 16v53l111.68-67.46a10.78 10.78 0 0116.32 9.33v138.26a10.78 10.78 0 01-16.32 9.31L208 267v53a16 16 0 01-32 0V192a16 16 0 0116-16z'/></svg>\"\nexport const playSkipBackCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Back Circle</title><path d='M48 256c0 114.69 93.31 208 208 208s208-93.31 208-208S370.69 48 256 48 48 141.31 48 256zm128-80h32v69l128-77.53v176.9L208 267v69h-32z'/></svg>\"\nexport const playSkipBackOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Back</title><path d='M400 111v290c0 17.44-17 28.52-31 20.16L121.09 272.79c-12.12-7.25-12.12-26.33 0-33.58L369 90.84c14-8.36 31 2.72 31 20.16z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M112 80v352' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const playSkipBackSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Back</title><path d='M143.47 64v163.52L416 64v384L143.47 284.48V448H96V64h47.47z'/></svg>\"\nexport const playSkipForward = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Forward</title><path d='M400 64a16 16 0 00-16 16v136.43L151.23 77.11a35.13 35.13 0 00-35.77-.44C103.46 83.47 96 96.63 96 111v290c0 14.37 7.46 27.53 19.46 34.33a35.14 35.14 0 0035.77-.45L384 295.57V432a16 16 0 0032 0V80a16 16 0 00-16-16z'/></svg>\"\nexport const playSkipForwardCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Forward Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm80 272a16 16 0 01-32 0v-53l-111.68 67.44a10.78 10.78 0 01-16.32-9.31V186.87a10.78 10.78 0 0116.32-9.31L304 245v-53a16 16 0 0132 0z'/></svg>\"\nexport const playSkipForwardCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Forward Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M320 176a16 16 0 00-16 16v53l-111.68-67.44a10.78 10.78 0 00-16.32 9.31v138.26a10.78 10.78 0 0016.32 9.31L304 267v53a16 16 0 0032 0V192a16 16 0 00-16-16z'/></svg>\"\nexport const playSkipForwardCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Forward Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm80 288h-32v-69l-128 77.37V167.49L304 245v-69h32z'/></svg>\"\nexport const playSkipForwardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Forward</title><path d='M112 111v290c0 17.44 17 28.52 31 20.16l247.9-148.37c12.12-7.25 12.12-26.33 0-33.58L143 90.84c-14-8.36-31 2.72-31 20.16z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M400 80v352' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const playSkipForwardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Play Skip Forward</title><path d='M368.53 64v163.52L96 64v384l272.53-163.52V448H416V64h-47.47z'/></svg>\"\nexport const podium = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Podium</title><path d='M320 32H192a32 32 0 00-32 32v412a4 4 0 004 4h184a4 4 0 004-4V64a32 32 0 00-32-32zM464 192h-72a8 8 0 00-8 8v272a8 8 0 008 8h80a24 24 0 0024-24V224a32 32 0 00-32-32zM48 128a32 32 0 00-32 32v296a24 24 0 0024 24h80a8 8 0 008-8V136a8 8 0 00-8-8z'/></svg>\"\nexport const podiumOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Podium</title><path d='M32 160v296a8 8 0 008 8h136V160a16 16 0 00-16-16H48a16 16 0 00-16 16zM320 48H192a16 16 0 00-16 16v400h160V64a16 16 0 00-16-16zM464 208H352a16 16 0 00-16 16v240h136a8 8 0 008-8V224a16 16 0 00-16-16z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const podiumSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Podium</title><path d='M160 32h192v448H160zM384 192h112v288H384zM16 128h112v352H16z'/></svg>\"\nexport const power = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Power</title><path d='M256 464c-114.69 0-208-93.47-208-208.35 0-62.45 27.25-121 74.76-160.55a22 22 0 1128.17 33.8C113.48 160.1 92 206.3 92 255.65 92 346.27 165.57 420 256 420s164-73.73 164-164.35A164 164 0 00360.17 129a22 22 0 1128-33.92A207.88 207.88 0 01464 255.65C464 370.53 370.69 464 256 464z'/><path d='M256 272a22 22 0 01-22-22V70a22 22 0 0144 0v180a22 22 0 01-22 22z'/></svg>\"\nexport const powerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Power</title><path d='M378 108a191.41 191.41 0 0170 148c0 106-86 192-192 192S64 362 64 256a192 192 0 0169-148M256 64v192' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const powerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Power</title><path d='M256 464c-114.69 0-208-93.23-208-207.82a207.44 207.44 0 0174.76-160.13l16.9-14 28.17 33.72-16.9 14A163.72 163.72 0 0092 256.18c0 90.39 73.57 163.93 164 163.93s164-73.54 164-163.93a163.38 163.38 0 00-59.83-126.36l-17-14 28-33.82 17 14A207.13 207.13 0 01464 256.18C464 370.77 370.69 464 256 464z'/><path d='M234 48h44v224h-44z'/></svg>\"\nexport const pricetag = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pricetag</title><path d='M467 45.2A44.45 44.45 0 00435.29 32H312.36a30.63 30.63 0 00-21.52 8.89L45.09 286.59a44.82 44.82 0 000 63.32l117 117a44.83 44.83 0 0063.34 0l245.65-245.6A30.6 30.6 0 00480 199.8v-123a44.24 44.24 0 00-13-31.6zM384 160a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const pricetagOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pricetag</title><path d='M435.25 48h-122.9a14.46 14.46 0 00-10.2 4.2L56.45 297.9a28.85 28.85 0 000 40.7l117 117a28.85 28.85 0 0040.7 0L459.75 210a14.46 14.46 0 004.2-10.2v-123a28.66 28.66 0 00-28.7-28.8z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M384 160a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const pricetagSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pricetag</title><path d='M304 32L16 320l176 176 288-288V32zm80 128a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const pricetags = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pricetags</title><path d='M448 183.8v-123A44.66 44.66 0 00403.29 16H280.36a30.62 30.62 0 00-21.51 8.89L13.09 270.58a44.86 44.86 0 000 63.34l117 117a44.84 44.84 0 0063.33 0l245.69-245.61A30.6 30.6 0 00448 183.8zM352 144a32 32 0 1132-32 32 32 0 01-32 32z'/><path d='M496 64a16 16 0 00-16 16v127.37L218.69 468.69a16 16 0 1022.62 22.62l262-262A29.84 29.84 0 00512 208V80a16 16 0 00-16-16z'/></svg>\"\nexport const pricetagsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pricetags</title><path d='M403.29 32H280.36a14.46 14.46 0 00-10.2 4.2L24.4 281.9a28.85 28.85 0 000 40.7l117 117a28.86 28.86 0 0040.71 0L427.8 194a14.46 14.46 0 004.2-10.2v-123A28.66 28.66 0 00403.29 32z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M352 144a32 32 0 1132-32 32 32 0 01-32 32z'/><path d='M230 480l262-262a13.81 13.81 0 004-10V80' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pricetagsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pricetags</title><path d='M288 16L0 304l176 176 288-288V16zm80 128a32 32 0 1132-32 32 32 0 01-32 32z'/><path d='M480 64v144L216.9 471.1 242 496l270-272V64h-32z'/></svg>\"\nexport const print = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Print</title><path d='M408 112H106a58 58 0 00-58 58v158a56 56 0 0056 56h8v39.68A40.32 40.32 0 00152.32 464h207.36A40.32 40.32 0 00400 423.68V384h8a56 56 0 0056-56V168a56 56 0 00-56-56zm-40 311.68a8.35 8.35 0 01-8.32 8.32H152.32a8.35 8.35 0 01-8.32-8.32V264.32a8.35 8.35 0 018.32-8.32h207.36a8.35 8.35 0 018.32 8.32zm26-215.76a24 24 0 1122-22 24 24 0 01-22 22zM344 48H168a56.09 56.09 0 00-55.42 48h286.84A56.09 56.09 0 00344 48z'/></svg>\"\nexport const printOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Print</title><path d='M384 368h24a40.12 40.12 0 0040-40V168a40.12 40.12 0 00-40-40H104a40.12 40.12 0 00-40 40v160a40.12 40.12 0 0040 40h24' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='128' y='240' width='256' height='208' rx='24.32' ry='24.32' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M384 128v-24a40.12 40.12 0 00-40-40H168a40.12 40.12 0 00-40 40v24' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='392' cy='184' r='24'/></svg>\"\nexport const printSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Print</title><path d='M400 96V56a8 8 0 00-8-8H120a8 8 0 00-8 8v40'/><rect x='152' y='264' width='208' height='160' rx='4' ry='4' class='ionicon-fill-none'/><rect x='152' y='264' width='208' height='160' rx='4' ry='4' class='ionicon-fill-none'/><path d='M408 112H104a56 56 0 00-56 56v208a8 8 0 008 8h56v72a8 8 0 008 8h272a8 8 0 008-8v-72h56a8 8 0 008-8V168a56 56 0 00-56-56zm-48 308a4 4 0 01-4 4H156a4 4 0 01-4-4V268a4 4 0 014-4h200a4 4 0 014 4zm34-212.08a24 24 0 1122-22 24 24 0 01-22 22z'/></svg>\"\nexport const prism = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Prism</title><path d='M487.83 319.44L295.63 36.88a48 48 0 00-79.26 0L24.17 319.44a47.1 47.1 0 0016.93 68.13l192.2 102.75a48.05 48.05 0 0045.4 0l192.2-102.75a47.1 47.1 0 0016.93-68.13zm-431.26 41a16.12 16.12 0 01-8-10.38 16.8 16.8 0 012.37-13.62L232.66 69.26c2.18-3.21 7.34-1.72 7.34 2.13v374c0 5.9-6.54 9.63-11.87 6.78z'/></svg>\"\nexport const prismOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Prism</title><path d='M229.73 45.88L37.53 327.79a31.79 31.79 0 0011.31 46L241 476.26a31.77 31.77 0 0029.92 0l192.2-102.51a31.79 31.79 0 0011.31-46L282.27 45.88a31.8 31.8 0 00-52.54 0zM256 32v448' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const prismSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Prism</title><path d='M256 16L16 352l240 144 240-144zm-20 96.82v324.53L73.73 340z'/></svg>\"\nexport const pulse = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pulse</title><path d='M432 272a48.09 48.09 0 00-45.25 32h-39.22l-28.35-85.06a16 16 0 00-30.56.66l-44.51 155.76-52.33-314a16 16 0 00-31.3-1.25L99.51 304H48a16 16 0 000 32h64a16 16 0 0015.52-12.12l45.34-181.37 51.36 308.12A16 16 0 00239.1 464h.91a16 16 0 0015.37-11.6l49.8-174.28 15.64 46.94A16 16 0 00336 336h50.75A48 48 0 10432 272z'/></svg>\"\nexport const pulseOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pulse</title><path stroke-linecap='round' stroke-linejoin='round' d='M48 320h64l64-256 64 384 64-224 32 96h64' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='432' cy='320' r='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pulseSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Pulse</title><path d='M426 266a54.07 54.07 0 00-49.3 32h-24.84l-27-81a22 22 0 00-42 .92l-37.2 130.2-48-281.74a22 22 0 00-43-1.72L94.82 298H32v44h80a22 22 0 0021.34-16.66L171.69 172l46.61 273.62A22 22 0 00238.76 464H240a22 22 0 0021.15-16l44.47-149.62 9.51 28.62A22 22 0 00336 342h40.7a54 54 0 1049.3-76z'/></svg>\"\nexport const push = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Push</title><path d='M376 352H272V198.63l52.69 52.68a16 16 0 0022.62-22.62l-80-80a16 16 0 00-22.62 0l-80 80a16 16 0 0022.62 22.62L240 198.63V352H136a56.06 56.06 0 01-56-56V88a56.06 56.06 0 0156-56h240a56.06 56.06 0 0156 56v208a56.06 56.06 0 01-56 56zM272 464a16 16 0 01-32 0V352h32z'/></svg>\"\nexport const pushOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Push</title><path d='M336 336h40a40 40 0 0040-40V88a40 40 0 00-40-40H136a40 40 0 00-40 40v208a40 40 0 0040 40h40' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M176 240l80-80 80 80M256 464V176' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const pushSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Push</title><path d='M272 352V204.63l64 64L358.63 246 256 143.37 153.37 246 176 268.63l64-64V352H92a12 12 0 01-12-12V44a12 12 0 0112-12h328a12 12 0 0112 12v296a12 12 0 01-12 12zM240 352h32v128h-32z'/></svg>\"\nexport const qrCode = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Qr Code</title><rect x='336' y='336' width='80' height='80' rx='8' ry='8'/><rect x='272' y='272' width='64' height='64' rx='8' ry='8'/><rect x='416' y='416' width='64' height='64' rx='8' ry='8'/><rect x='432' y='272' width='48' height='48' rx='8' ry='8'/><rect x='272' y='432' width='48' height='48' rx='8' ry='8'/><path d='M448 32H304a32 32 0 00-32 32v144a32 32 0 0032 32h144a32 32 0 0032-32V64a32 32 0 00-32-32zm-32 136a8 8 0 01-8 8h-64a8 8 0 01-8-8v-64a8 8 0 018-8h64a8 8 0 018 8zM208 32H64a32 32 0 00-32 32v144a32 32 0 0032 32h144a32 32 0 0032-32V64a32 32 0 00-32-32zm-32 136a8 8 0 01-8 8h-64a8 8 0 01-8-8v-64a8 8 0 018-8h64a8 8 0 018 8zM208 272H64a32 32 0 00-32 32v144a32 32 0 0032 32h144a32 32 0 0032-32V304a32 32 0 00-32-32zm-32 136a8 8 0 01-8 8h-64a8 8 0 01-8-8v-64a8 8 0 018-8h64a8 8 0 018 8z'/></svg>\"\nexport const qrCodeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Qr Code</title><rect x='336' y='336' width='80' height='80' rx='8' ry='8'/><rect x='272' y='272' width='64' height='64' rx='8' ry='8'/><rect x='416' y='416' width='64' height='64' rx='8' ry='8'/><rect x='432' y='272' width='48' height='48' rx='8' ry='8'/><rect x='272' y='432' width='48' height='48' rx='8' ry='8'/><rect x='336' y='96' width='80' height='80' rx='8' ry='8'/><rect x='288' y='48' width='176' height='176' rx='16' ry='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='96' width='80' height='80' rx='8' ry='8'/><rect x='48' y='48' width='176' height='176' rx='16' ry='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='336' width='80' height='80' rx='8' ry='8'/><rect x='48' y='288' width='176' height='176' rx='16' ry='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const qrCodeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Qr Code</title><path d='M336 336h80v80h-80zM272 272h64v64h-64zM416 416h64v64h-64zM432 272h48v48h-48zM272 432h48v48h-48zM336 96h80v80h-80z'/><path d='M480 240H272V32h208zm-164-44h120V76H316zM96 96h80v80H96z'/><path d='M240 240H32V32h208zM76 196h120V76H76zM96 336h80v80H96z'/><path d='M240 480H32V272h208zM76 436h120V316H76z'/></svg>\"\nexport const radio = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio</title><circle cx='256' cy='256' r='36'/><path d='M190.24 341.77a22 22 0 01-16.46-7.38 118 118 0 010-156.76 22 22 0 1132.87 29.24 74 74 0 000 98.29 22 22 0 01-16.43 36.61zM321.76 341.77a22 22 0 01-16.43-36.61 74 74 0 000-98.29 22 22 0 1132.87-29.24 118 118 0 010 156.76 22 22 0 01-16.44 7.38z'/><path d='M139.29 392.72a21.92 21.92 0 01-16.08-7 190 190 0 010-259.49 22 22 0 1132.13 30.06 146 146 0 000 199.38 22 22 0 01-16.06 37zM372.71 392.72a22 22 0 01-16.06-37 146 146 0 000-199.38 22 22 0 1132.13-30.06 190 190 0 010 259.49 21.92 21.92 0 01-16.07 6.95z'/><path d='M429 438a22 22 0 01-16.39-36.67 218.34 218.34 0 000-290.66 22 22 0 0132.78-29.34 262.34 262.34 0 010 349.34A22 22 0 01429 438zM83 438a21.94 21.94 0 01-16.41-7.33 262.34 262.34 0 010-349.34 22 22 0 0132.78 29.34 218.34 218.34 0 000 290.66A22 22 0 0183 438z'/></svg>\"\nexport const radioButtonOff = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio Button Off</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const radioButtonOffOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio Button Off</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const radioButtonOffSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio Button Off</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const radioButtonOn = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio Button On</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='144'/></svg>\"\nexport const radioButtonOnOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio Button On</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='144'/></svg>\"\nexport const radioButtonOnSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio Button On</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='144'/></svg>\"\nexport const radioOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio</title><circle cx='256' cy='256.02' r='32'/><path d='M184.25 192.25a96 96 0 000 127.52M327.77 319.77a96 96 0 000-127.52M133.28 141.28a168 168 0 000 229.44M378.72 370.72a168 168 0 000-229.44M435 416a240.34 240.34 0 000-320M77 96a240.34 240.34 0 000 320' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const radioSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Radio</title><ellipse cx='256' cy='256' rx='36' ry='35.99'/><path d='M188.4 350.8l-14.62-16.44a117.91 117.91 0 010-156.71l14.62-16.43 32.87 29.24-14.62 16.43a73.93 73.93 0 000 98.25l14.62 16.44zM323.6 350.8l-32.89-29.22 14.62-16.44a73.93 73.93 0 000-98.25l-14.62-16.43 32.87-29.24 14.62 16.43a117.91 117.91 0 010 156.71z'/><path d='M138.24 401.76l-15-16.06a189.85 189.85 0 010-259.4l15-16.07 32.14 30.05-15 16.06a145.88 145.88 0 000 199.32l15 16.06zM373.76 401.76l-32.14-30 15-16.06a145.88 145.88 0 000-199.32l-15-16.06 32.14-30 15 16.07a189.85 189.85 0 010 259.4z'/><path d='M430.73 447l-32.79-29.33 14.66-16.39a218.2 218.2 0 000-290.56l-14.67-16.38L430.72 65l14.67 16.39a262.18 262.18 0 010 349.22zM81.27 447L66.6 430.61a262.18 262.18 0 010-349.22L81.28 65l32.79 29.34-14.68 16.38a218.2 218.2 0 000 290.56l14.66 16.39z'/></svg>\"\nexport const rainy = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rainy</title><path d='M456.26 139.37c-16.77-16.73-39.17-28.41-65.17-34a16 16 0 01-11.19-9 142.24 142.24 0 00-42.19-53.21C314.48 25.39 286.23 16 256 16a140.24 140.24 0 00-93.5 35.32c-24.2 21.56-40.91 51.34-48.43 85.83a16.05 16.05 0 01-11.72 12.18c-25 6.3-35.71 12.54-49.21 24.56C34 190.93 24 214.14 24 240.8c0 30.55 11.23 55.64 32.47 72.56C75.08 328.17 100.5 336 130 336h234c33.2 0 64.11-11.46 87-32.28 23.84-21.65 37-51.67 37-84.52 0-31.49-11-59.09-31.74-79.83zM112 448a16 16 0 01-13.3-24.88l32-48a16 16 0 0126.62 17.76l-32 48A16 16 0 01112 448zM160 496a16 16 0 01-13.29-24.88l64-96a16 16 0 0126.62 17.76l-64 96A16 16 0 01160 496zM272 448a16 16 0 01-13.3-24.88l32-48a16 16 0 0126.62 17.76l-32 48A16 16 0 01272 448zM320 496a16 16 0 01-13.3-24.88l64-96a16 16 0 0126.62 17.76l-64 96A16 16 0 01320 496z'/></svg>\"\nexport const rainyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rainy</title><path d='M114.61 162.85A16.07 16.07 0 00128 149.6C140.09 76.17 193.63 32 256 32c57.93 0 96.62 37.75 112.2 77.74a15.84 15.84 0 0012.2 9.87c50 8.15 91.6 41.54 91.6 99.59 0 59.4-48.6 100.8-108 100.8H130c-49.5 0-90-24.7-90-79.2 0-48.47 38.67-72.22 74.61-77.95z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M144 384l-32 48M224 384l-64 96M304 384l-32 48M384 384l-64 96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const rainySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rainy</title><path d='M364 336H130c-29.5 0-54.92-7.83-73.53-22.64C35.23 296.44 24 271.35 24 240.8c0-26.66 10.08-49.8 29.14-66.91 15.24-13.68 36.17-23.21 59-26.84.06 0 .08 0 .09-.05 6.44-39 23.83-72.09 50.31-95.68A140.24 140.24 0 01256 16c30.23 0 58.48 9.39 81.71 27.17a142.69 142.69 0 0145.36 60.66c29.41 4.82 54.72 17.11 73.19 35.54C477 160.11 488 187.71 488 219.2c0 32.85-13.13 62.87-37 84.52-22.89 20.82-53.8 32.28-87 32.28zm19-232.18zM93.82 430.422l49.75-74.626 26.626 17.75-49.751 74.627zM141.816 478.429L223.568 355.8l26.625 17.75-81.751 122.628zM253.811 430.424l49.751-74.626 26.626 17.75-49.751 74.627zM301.808 478.43l81.752-122.627 26.625 17.75-81.751 122.628z'/></svg>\"\nexport const reader = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reader</title><path d='M368 32H144a64.07 64.07 0 00-64 64v320a64.07 64.07 0 0064 64h224a64.07 64.07 0 0064-64V96a64.07 64.07 0 00-64-64zM256 304h-80a16 16 0 010-32h80a16 16 0 010 32zm80-80H176a16 16 0 010-32h160a16 16 0 010 32zm0-80H176a16 16 0 010-32h160a16 16 0 010 32z'/></svg>\"\nexport const readerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reader</title><rect x='96' y='48' width='320' height='416' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M176 128h160M176 208h160M176 288h80' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const readerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reader</title><path d='M80 44v424a12 12 0 0012 12h328a12 12 0 0012-12V44a12 12 0 00-12-12H92a12 12 0 00-12 12zm192 260H160v-32h112zm80-80H160v-32h192zm0-80H160v-32h192z'/></svg>\"\nexport const receipt = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Receipt</title><path d='M483.82 32.45a16.28 16.28 0 00-11.23 1.37L448 46.1l-24.8-12.4a16 16 0 00-14.31 0l-25.11 12.41L359 33.7a16 16 0 00-14.36 0L320 46.07l-24.45-12.34a16 16 0 00-14.35-.06L256 46.12l-24.8-12.43a16.05 16.05 0 00-14.33 0L192 46.1l-24.84-12.41a16 16 0 00-19.36 3.94 16.25 16.25 0 00-3.8 10.65V288l.05.05H336a32 32 0 0132 32V424c0 30.93 33.07 56 64 56h12a52 52 0 0052-52V48a16 16 0 00-12.18-15.55zM416 240H288.5c-8.64 0-16.1-6.64-16.48-15.28A16 16 0 01288 208h127.5c8.64 0 16.1 6.64 16.48 15.28A16 16 0 01416 240zm0-80H224.5c-8.64 0-16.1-6.64-16.48-15.28A16 16 0 01224 128h191.5c8.64 0 16.1 6.64 16.48 15.28A16 16 0 01416 160z'/><path d='M336 424v-88a16 16 0 00-16-16H48a32.1 32.1 0 00-32 32.05c0 50.55 5.78 71.57 14.46 87.57C45.19 466.79 71.86 480 112 480h245.68a4 4 0 002.85-6.81C351.07 463.7 336 451 336 424z'/></svg>\"\nexport const receiptOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Receipt</title><path stroke-linejoin='round' d='M160 336V48l32 16 32-16 31.94 16 32.37-16L320 64l31.79-16 31.93 16L416 48l32.01 16L480 48v224' class='ionicon-fill-none ionicon-stroke-width'/><path d='M480 272v112a80 80 0 01-80 80h0a80 80 0 01-80-80v-48H48a15.86 15.86 0 00-16 16c0 64 6.74 112 80 112h288' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M224 144h192M288 224h128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const receiptSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Receipt</title><path d='M448 48l-32-16-32 16-32-16-32 16-32-16-32 16-32-16-32 16-48-16v256.05h224V424c0 30.93 33.07 56 64 56h12c30.93 0 52-25.07 52-56V32zM272.5 240l-.5-32h159.5l.5 32zm-64-80l-.5-32h223.5l.5 32z'/><path d='M336 424V320H16v32c0 50.55 5.78 71.62 14.46 87.63C45.19 466.8 71.86 480 112 480h256s-32-20-32-56z'/></svg>\"\nexport const recording = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Recording</title><path d='M380.79 144.05c-59.1 1.65-107.12 49.71-108.79 108.81a111.64 111.64 0 0030.36 79.77A2 2 0 01301 336h-90a2 2 0 01-1.44-3.37A111.64 111.64 0 00240 252.86c-1.63-59.1-49.65-107.16-108.75-108.81A112.12 112.12 0 0016 255.53C15.75 317.77 67 368 129.24 368h253.52C445 368 496.25 317.77 496 255.53a112.12 112.12 0 00-115.21-111.48z'/></svg>\"\nexport const recordingOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Recording</title><circle cx='128' cy='256' r='96' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='256' r='96' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M128 352h256' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const recordingSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Recording</title><path d='M384 138a117.93 117.93 0 00-91.84 192h-72.32A118 118 0 10128 374h256a118 118 0 000-236zM54 256a74 74 0 1174 74 74.09 74.09 0 01-74-74zm330 74a74 74 0 1174-74 74.09 74.09 0 01-74 74z'/></svg>\"\nexport const refresh = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Refresh</title><path d='M320 146s24.36-12-64-12a160 160 0 10160 160' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 58l80 80-80 80' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const refreshCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Refresh Circle</title><path d='M256 48C141.31 48 48 141.32 48 256c0 114.86 93.14 208 208 208 114.69 0 208-93.31 208-208 0-114.87-93.13-208-208-208zm0 313a94 94 0 010-188h4.21l-14.11-14.1a14 14 0 0119.8-19.8l40 40a14 14 0 010 19.8l-40 40a14 14 0 01-19.8-19.8l18-18c-2.38-.1-5.1-.1-8.1-.1a66 66 0 1066 66 14 14 0 0128 0 94.11 94.11 0 01-94 94z'/></svg>\"\nexport const refreshCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Refresh Circle</title><path d='M288 193s12.18-6-32-6a80 80 0 1080 80' stroke-linecap='round' stroke-miterlimit='10' stroke-width='28' class='ionicon-fill-none'/><path stroke-linecap='round' stroke-linejoin='round' stroke-width='28' d='M256 149l40 40-40 40' class='ionicon-fill-none'/><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const refreshCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Refresh Circle</title><path d='M256 48C141.31 48 48 141.32 48 256c0 114.86 93.14 208 208 208 114.69 0 208-93.31 208-208 0-114.87-93.13-208-208-208zm94 219a94 94 0 11-94-94h4.21l-24-24L256 129.2l59.8 59.8-59.8 59.8-19.8-19.8 27.92-27.92c-2.4-.08-5.12-.08-8.12-.08a66 66 0 1066 66v-14h28z'/></svg>\"\nexport const refreshOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Refresh</title><path d='M320 146s24.36-12-64-12a160 160 0 10160 160' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 58l80 80-80 80' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const refreshSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Refresh</title><path d='M320 146s24.36-12-64-12a160 160 0 10160 160' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M256 58l80 80-80 80' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const reload = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reload</title><path d='M400 148l-21.12-24.57A191.43 191.43 0 00240 64C134 64 48 150 48 256s86 192 192 192a192.09 192.09 0 00181.07-128' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M464 97.42V208a16 16 0 01-16 16H337.42c-14.26 0-21.4-17.23-11.32-27.31L436.69 86.1C446.77 76 464 83.16 464 97.42z'/></svg>\"\nexport const reloadCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reload Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm120 182.15a8.62 8.62 0 01-8.62 8.62h-59.54a8.61 8.61 0 01-6.09-14.71l22.17-22.17-5.6-6.51a87.38 87.38 0 10-62.94 148 87.55 87.55 0 0082.42-58.25A16 16 0 11368 295.8a119.4 119.4 0 11-112.62-159.18 118.34 118.34 0 0186.36 36.95l.56.62 4.31 5 14.68-14.68a8.44 8.44 0 016-2.54 8.61 8.61 0 018.68 8.63z'/></svg>\"\nexport const reloadCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reload Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M341.54 197.85l-11.37-13.23a103.37 103.37 0 1022.71 105.84' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M367.32 162a8.44 8.44 0 00-6 2.54l-59.54 59.54a8.61 8.61 0 006.09 14.71h59.54a8.62 8.62 0 008.62-8.62v-59.56a8.61 8.61 0 00-8.68-8.63z'/></svg>\"\nexport const reloadCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reload Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm120 190.77h-89l36.88-36.88-5.6-6.51a87.38 87.38 0 10-62.94 148 87.55 87.55 0 0082.42-58.25l5.37-15.13 30.17 10.67-5.3 15.13a119.4 119.4 0 11-112.62-159.18 118.34 118.34 0 0186.36 36.95l.56.62 4.31 5L376 149.81z'/></svg>\"\nexport const reloadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reload</title><path d='M400 148l-21.12-24.57A191.43 191.43 0 00240 64C134 64 48 150 48 256s86 192 192 192a192.09 192.09 0 00181.07-128' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M464 97.42V208a16 16 0 01-16 16H337.42c-14.26 0-21.4-17.23-11.32-27.31L436.69 86.1C446.77 76 464 83.16 464 97.42z'/></svg>\"\nexport const reloadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reload</title><path d='M400 148l-21.12-24.57A191.43 191.43 0 00240 64C134 64 48 150 48 256s86 192 192 192a192.09 192.09 0 00181.07-128' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M464 68.45V220a4 4 0 01-4 4H308.45a4 4 0 01-2.83-6.83L457.17 65.62a4 4 0 016.83 2.83z'/></svg>\"\nexport const remove = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Remove</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const removeCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Remove Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm80 224H176a16 16 0 010-32h160a16 16 0 010 32z'/></svg>\"\nexport const removeCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Remove Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M336 256H176' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const removeCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Remove Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm96 224H160v-32h192z'/></svg>\"\nexport const removeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Remove</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const removeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Remove</title><path stroke-linecap='square' stroke-linejoin='round' d='M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const reorderFour = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Four</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='44' d='M102 304h308M102 208h308M102 112h308M102 400h308' class='ionicon-fill-none'/></svg>\"\nexport const reorderFourOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Four</title><path stroke-linecap='round' stroke-linejoin='round' d='M96 304h320M96 208h320M96 112h320M96 400h320' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const reorderFourSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Four</title><path stroke-linecap='square' stroke-linejoin='round' stroke-width='44' d='M102 304h308M102 208h308M102 112h308M102 400h308' class='ionicon-fill-none'/></svg>\"\nexport const reorderThree = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Three</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='44' d='M102 256h308M102 176h308M102 336h308' class='ionicon-fill-none'/></svg>\"\nexport const reorderThreeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Three</title><path stroke-linecap='round' stroke-linejoin='round' d='M96 256h320M96 176h320M96 336h320' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const reorderThreeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Three</title><path stroke-linecap='square' stroke-linejoin='round' stroke-width='44' d='M102 256h308M102 176h308M102 336h308' class='ionicon-fill-none'/></svg>\"\nexport const reorderTwo = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Two</title><path stroke-linecap='round' stroke-linejoin='round' stroke-width='44' d='M118 304h276M118 208h276' class='ionicon-fill-none'/></svg>\"\nexport const reorderTwoOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Two</title><path stroke-linecap='round' stroke-linejoin='round' d='M112 304h288M112 208h288' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const reorderTwoSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Reorder Two</title><path stroke-linecap='square' stroke-linejoin='round' stroke-width='44' d='M118 304h276M118 208h276' class='ionicon-fill-none'/></svg>\"\nexport const repeat = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Repeat</title><path stroke-linecap='round' stroke-linejoin='round' d='M320 120l48 48-48 48' class='ionicon-fill-none ionicon-stroke-width'/><path d='M352 168H144a80.24 80.24 0 00-80 80v16M192 392l-48-48 48-48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 344h208a80.24 80.24 0 0080-80v-16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const repeatOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Repeat</title><path stroke-linecap='round' stroke-linejoin='round' d='M320 120l48 48-48 48' class='ionicon-fill-none ionicon-stroke-width'/><path d='M352 168H144a80.24 80.24 0 00-80 80v16M192 392l-48-48 48-48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M160 344h208a80.24 80.24 0 0080-80v-16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const repeatSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Repeat</title><path stroke-linecap='square' stroke-miterlimit='10' d='M320 120l48 48-48 48' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M352 168H64v96M192 392l-48-48 48-48' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M160 344h288v-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const resize = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Resize</title><path stroke-linecap='round' stroke-linejoin='round' d='M304 96h112v112M405.77 106.2L111.98 400.02M208 416H96V304' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const resizeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Resize</title><path stroke-linecap='round' stroke-linejoin='round' d='M304 96h112v112M405.77 106.2L111.98 400.02M208 416H96V304' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const resizeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Resize</title><path stroke-linecap='square' stroke-miterlimit='10' d='M304 96h112v112M405.77 106.2L111.98 400.02M208 416H96V304' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const restaurant = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Restaurant</title><path d='M357.57 223.94a79.48 79.48 0 0056.58-23.44l77-76.95c6.09-6.09 6.65-16 .85-22.39a16 16 0 00-23.17-.56l-68.63 68.58a12.29 12.29 0 01-17.37 0c-4.79-4.78-4.53-12.86.25-17.64l68.33-68.33a16 16 0 00-.56-23.16A15.62 15.62 0 00440.27 56a16.71 16.71 0 00-11.81 4.9l-68.27 68.26a12.29 12.29 0 01-17.37 0c-4.78-4.78-4.53-12.86.25-17.64l68.33-68.31a16 16 0 00-.56-23.16A15.62 15.62 0 00400.26 16a16.73 16.73 0 00-11.81 4.9L311.5 97.85a79.49 79.49 0 00-23.44 56.59v8.23a16 16 0 01-4.69 11.33l-35.61 35.62a4 4 0 01-5.66 0L68.82 36.33a16 16 0 00-22.58-.06C31.09 51.28 23 72.47 23 97.54c-.1 41.4 21.66 89 56.79 124.08l85.45 85.45A64.79 64.79 0 00211 326a64 64 0 0016.21-2.08 16.24 16.24 0 014.07-.53 15.93 15.93 0 0110.83 4.25l11.39 10.52a16.12 16.12 0 014.6 11.23v5.54a47.73 47.73 0 0013.77 33.65l90.05 91.57.09.1a53.29 53.29 0 0075.36-75.37L302.39 269.9a4 4 0 010-5.66L338 228.63a16 16 0 0111.32-4.69z'/><path d='M211 358a97.32 97.32 0 01-68.36-28.25l-13.86-13.86a8 8 0 00-11.3 0l-85 84.56c-15.15 15.15-20.56 37.45-13.06 59.29a30.63 30.63 0 001.49 3.6C31 484 50.58 496 72 496a55.68 55.68 0 0039.64-16.44L225 365.66a4.69 4.69 0 001.32-3.72v-.26a4.63 4.63 0 00-5.15-4.27A97.09 97.09 0 01211 358z'/></svg>\"\nexport const restaurantOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Restaurant</title><path d='M57.49 47.74l368.43 368.43a37.28 37.28 0 010 52.72h0a37.29 37.29 0 01-52.72 0l-90-91.55a32 32 0 01-9.2-22.43v-5.53a32 32 0 00-9.52-22.78l-11.62-10.73a32 32 0 00-29.8-7.44h0a48.53 48.53 0 01-46.56-12.63l-85.43-85.44C40.39 159.68 21.74 83.15 57.49 47.74z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M400 32l-77.25 77.25A64 64 0 00304 154.51v14.86a16 16 0 01-4.69 11.32L288 192M320 224l11.31-11.31a16 16 0 0111.32-4.69h14.86a64 64 0 0045.26-18.75L480 112M440 72l-80 80M200 368l-99.72 100.28a40 40 0 01-56.56 0h0a40 40 0 010-56.56L128 328' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const restaurantSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Restaurant</title><path d='M342.7 223.94h14.87a79.48 79.48 0 0056.58-23.44L496 118l-22.22-22.4-83.58 83.58-17.37-17.37 83.58-83.59-23-22.31-83.27 83.26-17.32-17.37 83.58-83.59L394 16l-82.5 81.85a79.49 79.49 0 00-23.44 56.59v14.86l-43.13 43.13L48 16C3.72 70.87 29.87 171.71 79.72 221.57l85.5 85.5c26.55 26.55 31.82 28.92 61.94 16.8 6.49-2.61 8.85-2.32 14.9 3.72l13 12.13c2.93 3 3 3.88 3 9.62v5.54c0 21.08 13.48 33.2 22.36 42.24L384 496l72-72-156.43-156.93z'/><path d='M227.37 354.59c-29.82 6.11-48.11 11.74-83.08-23.23-.56-.56-1.14-1.1-1.7-1.66l-19.5-19.5L16 416l80 80 144-144z'/></svg>\"\nexport const returnDownBack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Down Back</title><path stroke-linecap='round' stroke-linejoin='round' d='M112 352l-64-64 64-64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 288h294c58.76 0 106-49.33 106-108v-20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnDownBackOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Down Back</title><path stroke-linecap='round' stroke-linejoin='round' d='M112 352l-64-64 64-64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 288h294c58.76 0 106-49.33 106-108v-20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnDownBackSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Down Back</title><path stroke-linecap='square' stroke-miterlimit='10' d='M112 352l-64-64 64-64' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M64 288h400V160' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnDownForward = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Down Forward</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 352l64-64-64-64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 288H154c-58.76 0-106-49.33-106-108v-20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnDownForwardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Down Forward</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 352l64-64-64-64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 288H154c-58.76 0-106-49.33-106-108v-20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnDownForwardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Down Forward</title><path stroke-linecap='square' stroke-miterlimit='10' d='M400 352l64-64-64-64' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M448 288H48V160' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnUpBack = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Up Back</title><path stroke-linecap='round' stroke-linejoin='round' d='M112 160l-64 64 64 64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 224h294c58.76 0 106 49.33 106 108v20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnUpBackOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Up Back</title><path stroke-linecap='round' stroke-linejoin='round' d='M112 160l-64 64 64 64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 224h294c58.76 0 106 49.33 106 108v20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnUpBackSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Up Back</title><path stroke-linecap='square' stroke-miterlimit='10' d='M112 160l-64 64 64 64' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M64 224h400v128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnUpForward = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Up Forward</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 160l64 64-64 64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 224H154c-58.76 0-106 49.33-106 108v20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnUpForwardOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Up Forward</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 160l64 64-64 64' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 224H154c-58.76 0-106 49.33-106 108v20' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const returnUpForwardSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Return Up Forward</title><path stroke-linecap='square' stroke-miterlimit='10' d='M400 160l64 64-64 64' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M448 224H48v128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ribbon = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ribbon</title><path d='M269 335.61q-6.33.47-12.78.47c-5.23 0-10.4-.24-15.51-.69a176.11 176.11 0 01-127.67-72.94 4 4 0 00-6.77.35l-72 129.4c-2.74 5-3.17 11-.28 15.88A16.78 16.78 0 0048.22 416h78a15.28 15.28 0 0113.62 7.33L178.5 488a16.26 16.26 0 0013.75 8c5.94-.33 12.09-4.19 14.56-9.6l66.11-145.15a4 4 0 00-3.92-5.64zM477.64 391.88l-71.53-129.17a4 4 0 00-6.74-.36 176.5 176.5 0 01-78.31 61.42 16.09 16.09 0 00-8.72 8.25l-36.86 81.1a7.92 7.92 0 000 6.6l30.27 66.59c2.45 5.41 8.59 9.36 14.52 9.69a16.3 16.3 0 0013.7-8.12l38.53-64.58c2.89-4.85 8.13-7.33 13.78-7.3h78.77c6.67 0 11.72-3.48 14-10a16.92 16.92 0 00-1.41-14.12z'/><ellipse cx='256.26' cy='160' rx='48.01' ry='48'/><path d='M256.26 16c-79.42 0-144 64.59-144 144s64.61 144 144 144 144-64.6 144-144-64.59-144-144-144zm0 224a80 80 0 1180-80 80.1 80.1 0 01-80 80z'/></svg>\"\nexport const ribbonOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ribbon</title><circle cx='256' cy='160' r='128' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M143.65 227.82L48 400l86.86-.42a16 16 0 0113.82 7.8L192 480l88.33-194.32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M366.54 224L464 400l-86.86-.42a16 16 0 00-13.82 7.8L320 480l-64-140.8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='160' r='64' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ribbonSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ribbon</title><path d='M256 336c-5.22 0-10.4-.24-15.51-.69a176.12 176.12 0 01-131.29-78.37L20 416h115l58 96 82.53-177.09A177.53 177.53 0 01256 336zM403 256.74a176.9 176.9 0 01-88.18 69.14L273.7 415.5 319 512l58-96h115z'/><circle cx='256.02' cy='160' r='48'/><path d='M256 16c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144S335.4 16 256 16zm0 224a80 80 0 1180-80 80.09 80.09 0 01-80 80z'/></svg>\"\nexport const rocket = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rocket</title><path d='M328.85 156.79a26.69 26.69 0 1018.88 7.81 26.6 26.6 0 00-18.88-7.81z'/><path d='M477.44 50.06a.29.29 0 010-.09 20.4 20.4 0 00-15.13-15.3c-29.8-7.27-76.68.48-128.63 21.28-52.36 21-101.42 52-134.58 85.22A320.7 320.7 0 00169.55 175c-22.33-1-42 2.18-58.57 9.41-57.74 25.41-74.23 90.44-78.62 117.14a25 25 0 0027.19 29h.13l64.32-7.02c.08.82.17 1.57.24 2.26a34.36 34.36 0 009.9 20.72l31.39 31.41a34.27 34.27 0 0020.71 9.91l2.15.23-7 64.24v.13A25 25 0 00206 480a25.25 25.25 0 004.15-.34C237 475.34 302 459.05 327.34 401c7.17-16.46 10.34-36.05 9.45-58.34a314.78 314.78 0 0033.95-29.55c33.43-33.26 64.53-81.92 85.31-133.52 20.69-51.36 28.48-98.59 21.39-129.53zM370.38 224.94a58.77 58.77 0 110-83.07 58.3 58.3 0 010 83.07z'/><path d='M161.93 386.44a16 16 0 00-11 2.67c-6.39 4.37-12.81 8.69-19.29 12.9-13.11 8.52-28.79-6.44-21-20l12.15-21a16 16 0 00-15.16-24.91A61.25 61.25 0 0072 353.56c-3.66 3.67-14.79 14.81-20.78 57.26A357.94 357.94 0 0048 447.59 16 16 0 0064 464h.4a359.87 359.87 0 0036.8-3.2c42.47-6 53.61-17.14 57.27-20.8a60.49 60.49 0 0017.39-35.74 16 16 0 00-13.93-17.82z'/></svg>\"\nexport const rocketOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rocket</title><path d='M461.81 53.81a4.4 4.4 0 00-3.3-3.39c-54.38-13.3-180 34.09-248.13 102.17a294.9 294.9 0 00-33.09 39.08c-21-1.9-42-.3-59.88 7.5-50.49 22.2-65.18 80.18-69.28 105.07a9 9 0 009.8 10.4l81.07-8.9a180.29 180.29 0 001.1 18.3 18.15 18.15 0 005.3 11.09l31.39 31.39a18.15 18.15 0 0011.1 5.3 179.91 179.91 0 0018.19 1.1l-8.89 81a9 9 0 0010.39 9.79c24.9-4 83-18.69 105.07-69.17 7.8-17.9 9.4-38.79 7.6-59.69a293.91 293.91 0 0039.19-33.09c68.38-68 115.47-190.86 102.37-247.95zM298.66 213.67a42.7 42.7 0 1160.38 0 42.65 42.65 0 01-60.38 0z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M109.64 352a45.06 45.06 0 00-26.35 12.84C65.67 382.52 64 448 64 448s65.52-1.67 83.15-19.31A44.73 44.73 0 00160 402.32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const rocketSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rocket</title><path d='M477.64 38.26a4.75 4.75 0 00-3.55-3.66c-58.57-14.32-193.9 36.71-267.22 110a317 317 0 00-35.63 42.1c-22.61-2-45.22-.33-64.49 8.07C52.38 218.7 36.55 281.14 32.14 308a9.64 9.64 0 0010.55 11.2l87.31-9.63a194.1 194.1 0 001.19 19.7 19.53 19.53 0 005.7 12L170.7 375a19.59 19.59 0 0012 5.7 193.53 193.53 0 0019.59 1.19l-9.58 87.2a9.65 9.65 0 0011.2 10.55c26.81-4.3 89.36-20.13 113.15-74.5 8.4-19.27 10.12-41.77 8.18-64.27a317.66 317.66 0 0042.21-35.64C441 232.05 491.74 99.74 477.64 38.26zM294.07 217.93a48 48 0 1167.86 0 47.95 47.95 0 01-67.86 0z'/><path d='M168.4 399.43c-5.48 5.49-14.27 7.63-24.85 9.46-23.77 4.05-44.76-16.49-40.49-40.52 1.63-9.11 6.45-21.88 9.45-24.88a4.37 4.37 0 00-3.65-7.45 60 60 0 00-35.13 17.12C50.22 376.69 48 464 48 464s87.36-2.22 110.87-25.75A59.69 59.69 0 00176 403.09c.37-4.18-4.72-6.67-7.6-3.66z'/></svg>\"\nexport const rose = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rose</title><path d='M429.55 119.49a16 16 0 00-17.06-7.1c-18.64 4.19-37.06 9-54.73 14.22-35.06 10.39-69.33 23.92-107.85 42.59-18.62 9.05-26 13.35-48 26.13l-4.5 2.67c-32.95 19-57.09 40-73.79 64.29C105.29 288.89 96 320 96 354.64c0 40.74 15.71 77.1 44.24 102.37C169 482.52 209.06 496 256 496c46.76 0 86.89-14.33 116-41.43 28.35-26.35 44-63.39 44-104.29 0-25-6.19-47-12.17-68.22-12.59-44.69-23.46-83.29 24.71-144.13a16 16 0 001.01-18.44zM219 119.55C168.46 92.08 101.46 80.69 98.63 80.22A16 16 0 0081 90.55a16.47 16.47 0 003.79 16.84c31.84 33.78 32.86 68.79 28.65 104.63a4.45 4.45 0 002.5 4.54 4.44 4.44 0 005.08-.9c16.39-16.51 36.37-31.52 60.4-45.39l4.48-2.6C208 154.8 216.23 150 236 140.41l2.69-1.3a4 4 0 00.64-6.83A178.59 178.59 0 00219 119.55zM234.26 91.45c3.44 1.87 7.09 4 10.9 6.29a189.31 189.31 0 0129.57 22.39 4 4 0 004.28.76 672 672 0 0169.65-25q7-2.07 14.08-4a4 4 0 002.53-5.62c-8.27-16.83-14.67-28.9-15.15-29.79A16 16 0 00336 48c-1.91 0-33.28.36-76.87 21.3a279 279 0 00-26.39 14.51 4 4 0 00.22 6.94zM209.33 60.79c7.3-4.77 14.74-9.22 22.25-13.31a2 2 0 00.24-3.36c-26-19.57-49.73-27-51.15-27.42a16 16 0 00-17.56 5.82 217.63 217.63 0 00-19.28 32.38 2 2 0 001.29 2.81c13.61 3.57 29.4 8.29 45.61 14.29a2 2 0 001.79-.2z'/></svg>\"\nexport const roseOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rose</title><path d='M416 128c-18.9 4.25-36.8 8.94-53.7 13.95-40.5 12-75.5 27.15-105.4 41.65-19.3 9.37-26.2 13.51-51.5 28.23-58.4 33.69-93.4 77.4-93.4 142.81C112 428.55 167.6 480 256 480s144-55.81 144-129.72S339 225.24 416 128z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M264 180.19c-19.69-27-38.2-38.69-52.7-46.59C162.6 107.1 96 96 96 96c41.5 43.7 37.2 90.1 32 128 0 0-3.87 32.88 1.91 58.41' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M372 139.15C356.55 102.6 336 64 336 64s-63.32 0-135.69 64M253.48 87.57C221.25 45.81 176 32 176 32c-15.3 20.8-28.79 51.58-34.87 74.17' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const roseSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Rose</title><path d='M448 112s-17.62 0-30.51 1.39c-19 2-42.06 8-59.73 13.22-35.06 10.39-69.33 23.92-107.85 42.59-18.62 9.05-26 13.35-48 26.13l-4.5 2.67c-32.95 19-57.09 40-73.79 64.3C105.29 288.89 96 320 96 354.64c0 40.74 15.71 77.1 44.24 102.37C169 482.52 209.06 496 256 496c46.76 0 86.89-14.32 116-41.43 28.35-26.35 44-63.39 44-104.29 0-25-6.19-47-12.17-68.22-12.59-44.69-23.46-83.29 24.71-144.13C432.75 132.62 448 112 448 112zM219 119.55C168.47 92.08 104.72 80 80 80c0 0 23.23 28.19 29.15 55.4s6.54 48.61 2.91 88.6c17.94-20.48 40.59-37.15 69.32-53.73l4.48-2.6C208 154.8 216.23 150 236 140.41c2.88-1.4 5.74-2.76 8.58-4.11A170.77 170.77 0 00219 119.55zM345.25 48s-42.53.36-86.12 21.3a280.36 280.36 0 00-32.27 18.27q3.73 1.89 7.4 3.88c3.44 1.87 7.09 4 10.9 6.29a189.7 189.7 0 0131.46 24.16c24.57-10.41 73-26.1 90.77-31.28-8-19.15-22.14-42.62-22.14-42.62zM176 16c-16 10.83-33.24 41.1-33.24 41.1a494.22 494.22 0 0148.92 15.25l17.65-11.56c8.18-5.35 16.55-10.29 25-14.77C234.31 46 202.59 24.17 176 16z'/></svg>\"\nexport const sad = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sad</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM184 208a24 24 0 11-24 24 23.94 23.94 0 0124-24zm-23.67 149.83c12-40.3 50.2-69.83 95.62-69.83s83.62 29.53 95.71 69.83a8 8 0 01-7.82 10.17H168.15a8 8 0 01-7.82-10.17zM328 256a24 24 0 1124-24 23.94 23.94 0 01-24 24z'/></svg>\"\nexport const sadOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sad</title><circle cx='184' cy='232' r='24'/><path d='M256 288c45.42 0 83.62 29.53 95.71 69.83a8 8 0 01-7.87 10.17H168.15a8 8 0 01-7.82-10.17C172.32 317.53 210.53 288 256 288z'/><circle cx='328' cy='232' r='24'/><circle cx='256' cy='256' r='208' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const sadSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sad</title><path d='M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM328 208a24 24 0 11-24 24 23.94 23.94 0 0124-24zm-144 0a24 24 0 11-24 24 23.94 23.94 0 0124-24zm72 80c45.42 0 83.75 29.49 95.72 69.83 1 3.52 2.33 10.17 2.33 10.17H158s1.31-6.69 2.33-10.17C172.11 317.47 210.53 288 256 288z'/></svg>\"\nexport const save = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Save</title><path d='M465.94 119.76l-73.7-73.7A47.68 47.68 0 00358.3 32H96a64 64 0 00-64 64v320a64 64 0 0064 64h320a64 64 0 0064-64V153.7a47.68 47.68 0 00-14.06-33.94zM120 112h176a8 8 0 018 8v48a8 8 0 01-8 8H120a8 8 0 01-8-8v-48a8 8 0 018-8zm139.75 319.91a80 80 0 1176.16-76.16 80.06 80.06 0 01-76.16 76.16z'/><circle cx='256' cy='352' r='48'/></svg>\"\nexport const saveOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Save</title><path d='M380.93 57.37A32 32 0 00358.3 48H94.22A46.21 46.21 0 0048 94.22v323.56A46.21 46.21 0 0094.22 464h323.56A46.36 46.36 0 00464 417.78V153.7a32 32 0 00-9.37-22.63zM256 416a64 64 0 1164-64 63.92 63.92 0 01-64 64zm48-224H112a16 16 0 01-16-16v-64a16 16 0 0116-16h192a16 16 0 0116 16v64a16 16 0 01-16 16z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const saveSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Save</title><path d='M380.44 32H64a32 32 0 00-32 32v384a32 32 0 0032 32h384a32.09 32.09 0 0032-32V131.56zM112 176v-64h192v64zm223.91 179.76a80 80 0 11-83.66-83.67 80.21 80.21 0 0183.66 83.67z'/></svg>\"\nexport const scale = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scale</title><path d='M368 32H144A112.12 112.12 0 0032 144v224a112.12 112.12 0 00112 112h224a112.12 112.12 0 00112-112V144A112.12 112.12 0 00368 32zm36.21 178l-33.32 39.21A41.76 41.76 0 01339 264.05a42.32 42.32 0 01-22.29-6.38c-14.22-8.78-36.3-19.25-60.69-19.25s-46.47 10.47-60.69 19.25a41.86 41.86 0 01-54.2-8.46L107.79 210a50.48 50.48 0 014.49-70.27c27.84-25.35 75.37-55.57 143.72-55.57s115.88 30.22 143.72 55.57a50.48 50.48 0 014.49 70.27z'/></svg>\"\nexport const scaleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scale</title><rect x='48' y='48' width='416' height='416' rx='96' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M388.94 151.56c-24.46-22.28-68.72-51.4-132.94-51.4s-108.48 29.12-132.94 51.4a34.66 34.66 0 00-3.06 48.08l33.32 39.21a26.07 26.07 0 0033.6 5.21c15.92-9.83 40.91-21.64 69.1-21.64s53.18 11.81 69.1 21.64a26.07 26.07 0 0033.6-5.21L392 199.64a34.66 34.66 0 00-3.06-48.08z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const scaleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scale</title><path d='M432 32H80a48.05 48.05 0 00-48 48v352a48.05 48.05 0 0048 48h352a48.05 48.05 0 0048-48V80a48.05 48.05 0 00-48-48zm-16.71 165l-52.46 61.73a27.83 27.83 0 01-37.65 4.62c-13-9.29-39.27-24.89-69.18-24.89s-56.18 15.6-69.18 24.89a27.84 27.84 0 01-37.65-4.62L96.71 197a32.12 32.12 0 01.42-42c18.93-21.31 72.3-70.87 158.87-70.87S395.94 133.72 414.87 155a32.12 32.12 0 01.42 42z'/></svg>\"\nexport const scan = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scan</title><path d='M342 444h46a56 56 0 0056-56v-46M444 170v-46a56 56 0 00-56-56h-46M170 444h-46a56 56 0 01-56-56v-46M68 170v-46a56 56 0 0156-56h46' stroke-linecap='round' stroke-linejoin='round' stroke-width='44' class='ionicon-fill-none'/></svg>\"\nexport const scanCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scan Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-40 320h-28a44.05 44.05 0 01-44-44v-28a16 16 0 0132 0v28a12 12 0 0012 12h28a16 16 0 010 32zm0-192h-28a12 12 0 00-12 12v28a16 16 0 01-32 0v-28a44.05 44.05 0 0144-44h28a16 16 0 010 32zm152 148a44.05 44.05 0 01-44 44h-28a16 16 0 010-32h28a12 12 0 0012-12v-28a16 16 0 0132 0zm0-108a16 16 0 01-32 0v-28a12 12 0 00-12-12h-28a16 16 0 010-32h28a44.05 44.05 0 0144 44z'/></svg>\"\nexport const scanCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scan Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M296 352h28a28 28 0 0028-28v-28M352 216v-28a28 28 0 00-28-28h-28M216 352h-28a28 28 0 01-28-28v-28M160 216v-28a28 28 0 0128-28h28' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const scanCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scan Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-24 320h-44a44.05 44.05 0 01-44-44v-44h32v44a12 12 0 0012 12h44zm0-192h-44a12 12 0 00-12 12v44h-32v-44a44.05 44.05 0 0144-44h44zm136 148a44.05 44.05 0 01-44 44h-44v-32h44a12 12 0 0012-12v-44h32zm0-92h-32v-44a12 12 0 00-12-12h-44v-32h44a44.05 44.05 0 0144 44z'/></svg>\"\nexport const scanOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scan</title><path d='M336 448h56a56 56 0 0056-56v-56M448 176v-56a56 56 0 00-56-56h-56M176 448h-56a56 56 0 01-56-56v-56M64 176v-56a56 56 0 0156-56h56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const scanSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Scan</title><path d='M388 466h-68v-44h68a34 34 0 0034-34v-68h44v68a78.09 78.09 0 01-78 78zM466 192h-44v-68a34 34 0 00-34-34h-68V46h68a78.09 78.09 0 0178 78zM192 466h-68a78.09 78.09 0 01-78-78v-68h44v68a34 34 0 0034 34h68zM90 192H46v-68a78.09 78.09 0 0178-78h68v44h-68a34 34 0 00-34 34z'/></svg>\"\nexport const school = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>School</title><path d='M256 368a16 16 0 01-7.94-2.11L108 285.84a8 8 0 00-12 6.94V368a16 16 0 008.23 14l144 80a16 16 0 0015.54 0l144-80a16 16 0 008.23-14v-75.22a8 8 0 00-12-6.94l-140.06 80.05A16 16 0 01256 368z'/><path d='M495.92 190.5v-.11a16 16 0 00-8-12.28l-224-128a16 16 0 00-15.88 0l-224 128a16 16 0 000 27.78l224 128a16 16 0 0015.88 0L461 221.28a2 2 0 013 1.74v144.53c0 8.61 6.62 16 15.23 16.43A16 16 0 00496 368V192a14.76 14.76 0 00-.08-1.5z'/></svg>\"\nexport const schoolOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>School</title><path stroke-linecap='round' stroke-linejoin='round' d='M32 192L256 64l224 128-224 128L32 192z' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M112 240v128l144 80 144-80V240M480 368V192M256 320v128' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const schoolSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>School</title><path d='M256 370.43L96 279v98.42l160 88.88 160-88.88V279l-160 91.43z'/><path d='M512.25 192L256 45.57-.25 192 256 338.43l208-118.86V384h48V192.14l.25-.14z'/></svg>\"\nexport const search = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Search</title><path d='M456.69 421.39L362.6 327.3a173.81 173.81 0 0034.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 00327.3 362.6l94.09 94.09a25 25 0 0035.3-35.3zM97.92 222.72a124.8 124.8 0 11124.8 124.8 124.95 124.95 0 01-124.8-124.8z'/></svg>\"\nexport const searchCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Search Circle</title><path d='M256 64C150.13 64 64 150.13 64 256s86.13 192 192 192 192-86.13 192-192S361.87 64 256 64zm91.31 283.31a16 16 0 01-22.62 0l-42.84-42.83a88.08 88.08 0 1122.63-22.63l42.83 42.84a16 16 0 010 22.62z'/><circle cx='232' cy='232' r='56'/></svg>\"\nexport const searchCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Search Circle</title><path d='M256 80a176 176 0 10176 176A176 176 0 00256 80z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M232 160a72 72 0 1072 72 72 72 0 00-72-72z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M283.64 283.64L336 336' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const searchCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Search Circle</title><path d='M256 64C150.13 64 64 150.13 64 256s86.13 192 192 192 192-86.13 192-192S361.87 64 256 64zm80 294.63l-54.15-54.15a88.08 88.08 0 1122.63-22.63L358.63 336z'/><circle cx='232' cy='232' r='56'/></svg>\"\nexport const searchOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Search</title><path d='M221.09 64a157.09 157.09 0 10157.09 157.09A157.1 157.1 0 00221.09 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M338.29 338.29L448 448' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const searchSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Search</title><path d='M464 428L339.92 303.9a160.48 160.48 0 0030.72-94.58C370.64 120.37 298.27 48 209.32 48S48 120.37 48 209.32s72.37 161.32 161.32 161.32a160.48 160.48 0 0094.58-30.72L428 464zM209.32 319.69a110.38 110.38 0 11110.37-110.37 110.5 110.5 0 01-110.37 110.37z'/></svg>\"\nexport const send = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Send</title><path d='M476.59 227.05l-.16-.07L49.35 49.84A23.56 23.56 0 0027.14 52 24.65 24.65 0 0016 72.59v113.29a24 24 0 0019.52 23.57l232.93 43.07a4 4 0 010 7.86L35.53 303.45A24 24 0 0016 327v113.31A23.57 23.57 0 0026.59 460a23.94 23.94 0 0013.22 4 24.55 24.55 0 009.52-1.93L476.4 285.94l.19-.09a32 32 0 000-58.8z'/></svg>\"\nexport const sendOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Send</title><path d='M470.3 271.15L43.16 447.31a7.83 7.83 0 01-11.16-7V327a8 8 0 016.51-7.86l247.62-47c17.36-3.29 17.36-28.15 0-31.44l-247.63-47a8 8 0 01-6.5-7.85V72.59c0-5.74 5.88-10.26 11.16-8L470.3 241.76a16 16 0 010 29.39z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const sendSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Send</title><path d='M16 464l480-208L16 48v160l320 48-320 48z'/></svg>\"\nexport const server = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Server</title><path d='M256 428c-52.35 0-111.39-11.61-157.93-31-17.07-7.19-31.69-18.82-43.64-28a4 4 0 00-6.43 3.18v12.58c0 28.07 23.49 53.22 66.14 70.82C152.29 471.33 202.67 480 256 480s103.7-8.67 141.86-24.42C440.51 438 464 412.83 464 384.76v-12.58a4 4 0 00-6.43-3.18c-11.95 9.17-26.57 20.81-43.65 28-46.54 19.39-105.57 31-157.92 31zM464 126.51c-.81-27.65-24.18-52.4-66-69.85C359.74 40.76 309.34 32 256 32s-103.74 8.76-141.91 24.66c-41.78 17.41-65.15 42.11-66 69.69L48 144c0 6.41 5.2 16.48 14.63 24.73 11.13 9.73 27.65 19.33 47.78 27.73C153.24 214.36 207.67 225 256 225s102.76-10.68 145.59-28.58c20.13-8.4 36.65-18 47.78-27.73C458.8 160.49 464 150.42 464 144z'/><path d='M413.92 226c-46.53 19.43-105.57 31-157.92 31s-111.39-11.57-157.93-31c-17.07-7.15-31.69-18.79-43.64-28a4 4 0 00-6.43 3.22V232c0 6.41 5.2 14.48 14.63 22.73 11.13 9.74 27.65 19.33 47.78 27.74C153.24 300.34 207.67 311 256 311s102.76-10.68 145.59-28.57c20.13-8.41 36.65-18 47.78-27.74C458.8 246.47 464 238.41 464 232v-30.78a4 4 0 00-6.43-3.18c-11.95 9.17-26.57 20.81-43.65 27.96z'/><path d='M413.92 312c-46.54 19.41-105.57 31-157.92 31s-111.39-11.59-157.93-31c-17.07-7.17-31.69-18.81-43.64-28a4 4 0 00-6.43 3.2V317c0 6.41 5.2 14.47 14.62 22.71 11.13 9.74 27.66 19.33 47.79 27.74C153.24 385.32 207.66 396 256 396s102.76-10.68 145.59-28.57c20.13-8.41 36.65-18 47.78-27.74C458.8 331.44 464 323.37 464 317v-29.8a4 4 0 00-6.43-3.18c-11.95 9.17-26.57 20.81-43.65 27.98z'/></svg>\"\nexport const serverOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Server</title><ellipse cx='256' cy='128' rx='192' ry='80' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M448 214c0 44.18-86 80-192 80S64 258.18 64 214M448 300c0 44.18-86 80-192 80S64 344.18 64 300' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 127.24v257.52C64 428.52 150 464 256 464s192-35.48 192-79.24V127.24' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const serverSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Server</title><path d='M409.43 389.87C362 410 305.4 421.05 256 421.05s-105.87-11.3-153.44-31.18S48 353.16 48 353.16v38.2c0 31.15 18 43.64 67.32 64.35C153.13 471.59 203.18 480 256 480s102.87-8.41 140.68-24.29C446 435 464 422.51 464 391.36v-38.2s-7.14 16.59-54.57 36.71zM63.69 173.22c11.23 9.84 27.82 19.49 48 27.92 42.48 17.76 96.45 28.37 144.36 28.37s101.88-10.61 144.36-28.37c20.13-8.43 36.72-18.08 47.95-27.92 6.06-5.31 10.85-10.12 13.47-12.85a8 8 0 002.22-5.54v-26.16c-.84-28.79-24.71-54.41-67.21-72.14C358.83 40.71 308.84 32 256 32s-102.83 8.71-140.74 24.53C72.85 74.22 49 99.78 48.05 128.5v26.33a8 8 0 002.21 5.54c2.58 2.73 7.36 7.54 13.43 12.85z'/><path d='M409.43 221.91C365 241 305.4 253.09 256 253.09s-108.87-12.27-153.43-31.18S48 185.2 48 185.2v47.36c.08 7.52 5.5 16.2 15.69 25.13 11.24 9.84 27.82 19.5 48 27.92C154.12 303.38 208.09 314 256 314s101.88-10.6 144.36-28.37c20.13-8.42 36.72-18.08 47.95-27.92 10.25-9 15.68-17.71 15.69-25.27V185.2s-10.13 17.62-54.57 36.71z'/><path d='M409.43 306.38C362 326 305.4 337.56 256 337.56s-109.87-12.8-153.43-31.18S48 269.67 48 269.67v46.25c0 7.55 5.44 16.28 15.69 25.26 11.23 9.84 27.81 19.5 48 27.92 42.48 17.77 96.44 28.37 144.36 28.37s101.88-10.6 144.36-28.37c20.13-8.43 36.72-18.08 47.95-27.92 10.19-8.93 15.61-17.61 15.69-25.13v-46.38s-7.18 17.09-54.62 36.71z'/></svg>\"\nexport const settings = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Settings</title><circle cx='256' cy='256' r='48'/><path d='M470.39 300l-.47-.38-31.56-24.75a16.11 16.11 0 01-6.1-13.33v-11.56a16 16 0 016.11-13.22L469.92 212l.47-.38a26.68 26.68 0 005.9-34.06l-42.71-73.9a1.59 1.59 0 01-.13-.22A26.86 26.86 0 00401 92.14l-.35.13-37.1 14.93a15.94 15.94 0 01-14.47-1.29q-4.92-3.1-10-5.86a15.94 15.94 0 01-8.19-11.82l-5.59-39.59-.12-.72A27.22 27.22 0 00298.76 26h-85.52a26.92 26.92 0 00-26.45 22.39l-.09.56-5.57 39.67a16 16 0 01-8.13 11.82 175.21 175.21 0 00-10 5.82 15.92 15.92 0 01-14.43 1.27l-37.13-15-.35-.14a26.87 26.87 0 00-32.48 11.34l-.13.22-42.77 73.95a26.71 26.71 0 005.9 34.1l.47.38 31.56 24.75a16.11 16.11 0 016.1 13.33v11.56a16 16 0 01-6.11 13.22L42.08 300l-.47.38a26.68 26.68 0 00-5.9 34.06l42.71 73.9a1.59 1.59 0 01.13.22 26.86 26.86 0 0032.45 11.3l.35-.13 37.07-14.93a15.94 15.94 0 0114.47 1.29q4.92 3.11 10 5.86a15.94 15.94 0 018.19 11.82l5.56 39.59.12.72A27.22 27.22 0 00213.24 486h85.52a26.92 26.92 0 0026.45-22.39l.09-.56 5.57-39.67a16 16 0 018.18-11.82c3.42-1.84 6.76-3.79 10-5.82a15.92 15.92 0 0114.43-1.27l37.13 14.95.35.14a26.85 26.85 0 0032.48-11.34 2.53 2.53 0 01.13-.22l42.71-73.89a26.7 26.7 0 00-5.89-34.11zm-134.48-40.24a80 80 0 11-83.66-83.67 80.21 80.21 0 0183.66 83.67z'/></svg>\"\nexport const settingsOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Settings</title><path d='M262.29 192.31a64 64 0 1057.4 57.4 64.13 64.13 0 00-57.4-57.4zM416.39 256a154.34 154.34 0 01-1.53 20.79l45.21 35.46a10.81 10.81 0 012.45 13.75l-42.77 74a10.81 10.81 0 01-13.14 4.59l-44.9-18.08a16.11 16.11 0 00-15.17 1.75A164.48 164.48 0 01325 400.8a15.94 15.94 0 00-8.82 12.14l-6.73 47.89a11.08 11.08 0 01-10.68 9.17h-85.54a11.11 11.11 0 01-10.69-8.87l-6.72-47.82a16.07 16.07 0 00-9-12.22 155.3 155.3 0 01-21.46-12.57 16 16 0 00-15.11-1.71l-44.89 18.07a10.81 10.81 0 01-13.14-4.58l-42.77-74a10.8 10.8 0 012.45-13.75l38.21-30a16.05 16.05 0 006-14.08c-.36-4.17-.58-8.33-.58-12.5s.21-8.27.58-12.35a16 16 0 00-6.07-13.94l-38.19-30A10.81 10.81 0 0149.48 186l42.77-74a10.81 10.81 0 0113.14-4.59l44.9 18.08a16.11 16.11 0 0015.17-1.75A164.48 164.48 0 01187 111.2a15.94 15.94 0 008.82-12.14l6.73-47.89A11.08 11.08 0 01213.23 42h85.54a11.11 11.11 0 0110.69 8.87l6.72 47.82a16.07 16.07 0 009 12.22 155.3 155.3 0 0121.46 12.57 16 16 0 0015.11 1.71l44.89-18.07a10.81 10.81 0 0113.14 4.58l42.77 74a10.8 10.8 0 01-2.45 13.75l-38.21 30a16.05 16.05 0 00-6.05 14.08c.33 4.14.55 8.3.55 12.47z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const settingsSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Settings</title><path d='M256 176a80 80 0 1080 80 80.24 80.24 0 00-80-80zm172.72 80a165.53 165.53 0 01-1.64 22.34l48.69 38.12a11.59 11.59 0 012.63 14.78l-46.06 79.52a11.64 11.64 0 01-14.14 4.93l-57.25-23a176.56 176.56 0 01-38.82 22.67l-8.56 60.78a11.93 11.93 0 01-11.51 9.86h-92.12a12 12 0 01-11.51-9.53l-8.56-60.78A169.3 169.3 0 01151.05 393L93.8 416a11.64 11.64 0 01-14.14-4.92L33.6 331.57a11.59 11.59 0 012.63-14.78l48.69-38.12A174.58 174.58 0 0183.28 256a165.53 165.53 0 011.64-22.34l-48.69-38.12a11.59 11.59 0 01-2.63-14.78l46.06-79.52a11.64 11.64 0 0114.14-4.93l57.25 23a176.56 176.56 0 0138.82-22.67l8.56-60.78A11.93 11.93 0 01209.94 26h92.12a12 12 0 0111.51 9.53l8.56 60.78A169.3 169.3 0 01361 119l57.2-23a11.64 11.64 0 0114.14 4.92l46.06 79.52a11.59 11.59 0 01-2.63 14.78l-48.69 38.12a174.58 174.58 0 011.64 22.66z'/></svg>\"\nexport const shapes = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shapes</title><path d='M336 336H32a16 16 0 01-14-23.81l152-272a16 16 0 0127.94 0l152 272A16 16 0 01336 336z'/><path d='M336 160a161.07 161.07 0 00-32.57 3.32l74.47 133.27A48 48 0 01336 368H183.33A160 160 0 10336 160z'/></svg>\"\nexport const shapesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shapes</title><path stroke-linejoin='round' d='M336 320H32L184 48l152 272zM265.32 194.51A144 144 0 11192 320' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shapesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shapes</title><path d='M363.27 336H4.73L184 16z'/><path d='M336 160a160.54 160.54 0 00-32.55 3.36l87.75 157L417.81 368H183.36C203.8 432.85 264.49 480 336 480c88.22 0 160-71.78 160-160s-71.78-160-160-160z'/></svg>\"\nexport const share = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Share</title><path d='M376 176H272v145a16 16 0 01-32 0V176H136a56.06 56.06 0 00-56 56v192a56.06 56.06 0 0056 56h240a56.06 56.06 0 0056-56V232a56.06 56.06 0 00-56-56zM272 86.63l52.69 52.68a16 16 0 0022.62-22.62l-80-80a16 16 0 00-22.62 0l-80 80a16 16 0 0022.62 22.62L240 86.63V176h32z'/></svg>\"\nexport const shareOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Share</title><path d='M336 192h40a40 40 0 0140 40v192a40 40 0 01-40 40H136a40 40 0 01-40-40V232a40 40 0 0140-40h40M336 128l-80-80-80 80M256 321V48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shareSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Share</title><path d='M272 176v161h-32V176H92a12 12 0 00-12 12v280a12 12 0 0012 12h328a12 12 0 0012-12V188a12 12 0 00-12-12zM272 92.63l64 64L358.63 134 256 31.37 153.37 134 176 156.63l64-64V176h32V92.63z'/></svg>\"\nexport const shareSocial = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Share Social</title><path d='M384 336a63.78 63.78 0 00-46.12 19.7l-148-83.27a63.85 63.85 0 000-32.86l148-83.27a63.8 63.8 0 10-15.73-27.87l-148 83.27a64 64 0 100 88.6l148 83.27A64 64 0 10384 336z'/></svg>\"\nexport const shareSocialOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Share Social</title><circle cx='128' cy='256' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='112' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='384' cy='400' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M169.83 279.53l172.34 96.94M342.17 135.53l-172.34 96.94' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shareSocialSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Share Social</title><path d='M378 324a69.78 69.78 0 00-48.83 19.91L202 272.41a69.68 69.68 0 000-32.82l127.13-71.5A69.76 69.76 0 10308.87 129l-130.13 73.2a70 70 0 100 107.56L308.87 383A70 70 0 10378 324z'/></svg>\"\nexport const shield = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield</title><path d='M479.07 111.35a16 16 0 00-13.15-14.75C379.89 81.18 343.69 69.12 266 34.16c-7.76-2.89-12.57-2.84-20 0-77.69 35-113.89 47-199.92 62.44a16 16 0 00-13.15 14.75c-3.85 61.1 4.34 118 24.36 169.15a348.86 348.86 0 0071.43 112.41c44.67 47.43 94.2 75.12 119.74 85.6a20 20 0 0015.11 0c27-10.92 74.69-37.82 119.71-85.62a348.86 348.86 0 0071.43-112.39c20.02-51.14 28.21-108.05 24.36-169.15z'/></svg>\"\nexport const shieldCheckmark = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield Checkmark</title><path d='M479.07 111.36a16 16 0 00-13.15-14.74c-86.5-15.52-122.61-26.74-203.33-63.2a16 16 0 00-13.18 0C168.69 69.88 132.58 81.1 46.08 96.62a16 16 0 00-13.15 14.74c-3.85 61.11 4.36 118.05 24.43 169.24A349.47 349.47 0 00129 393.11c53.47 56.73 110.24 81.37 121.07 85.73a16 16 0 0012 0c10.83-4.36 67.6-29 121.07-85.73a349.47 349.47 0 0071.5-112.51c20.07-51.19 28.28-108.13 24.43-169.24zm-131 75.11l-110.8 128a16 16 0 01-11.41 5.53h-.66a16 16 0 01-11.2-4.57l-49.2-48.2a16 16 0 1122.4-22.86l37 36.29 99.7-115.13a16 16 0 0124.2 20.94z'/></svg>\"\nexport const shieldCheckmarkOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield Checkmark</title><path stroke-linecap='round' stroke-linejoin='round' d='M336 176L225.2 304 176 255.8' class='ionicon-fill-none ionicon-stroke-width'/><path d='M463.1 112.37C373.68 96.33 336.71 84.45 256 48c-80.71 36.45-117.68 48.33-207.1 64.37C32.7 369.13 240.58 457.79 256 464c15.42-6.21 223.3-94.87 207.1-351.63z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shieldCheckmarkSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield Checkmark</title><path d='M479.07 111.36l-.79-12.53-12.36-2.21c-86.5-15.52-122.61-26.74-203.33-63.2l-6.59-3-6.59 3C168.69 69.88 132.58 81.1 46.08 96.62l-12.36 2.21-.79 12.53c-3.85 61.11 4.36 118.05 24.43 169.24A349.47 349.47 0 00129 393.11c53.47 56.73 110.24 81.37 121.07 85.73l6 2.41 6-2.41c10.83-4.36 67.6-29 121.07-85.73a349.47 349.47 0 0071.5-112.51c20.07-51.19 28.28-108.13 24.43-169.24zm-252.91 216L153.37 256l22.4-22.86 48.47 47.49 110.13-127.2 24.2 20.94z'/></svg>\"\nexport const shieldHalf = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield Half</title><path d='M48.9 112.37C138.32 96.33 175.29 84.45 256 48c80.71 36.45 117.68 48.33 207.1 64.37C479.3 369.13 271.42 457.79 256 464c-15.42-6.21-223.3-94.87-207.1-351.63z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 48c80.71 36.45 117.68 48.33 207.1 64.37C479.3 369.13 271.42 457.79 256 464z'/></svg>\"\nexport const shieldHalfOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield Half</title><path d='M463.1 112.37C373.68 96.33 336.71 84.45 256 48c-80.71 36.45-117.68 48.33-207.1 64.37C32.7 369.13 240.58 457.79 256 464c15.42-6.21 223.3-94.87 207.1-351.63z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 48c-80.71 36.45-117.68 48.33-207.1 64.37C32.7 369.13 240.58 457.79 256 464z'/></svg>\"\nexport const shieldHalfSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield Half</title><path d='M256 32C174 69.06 121.38 86.46 32 96c0 77.59 5.27 133.36 25.29 184.51a348.86 348.86 0 0071.43 112.41c49.6 52.66 104.17 80.4 127.28 87.08 23.11-6.68 77.68-34.42 127.28-87.08a348.86 348.86 0 0071.43-112.41C474.73 229.36 480 173.59 480 96c-89.38-9.54-142-26.94-224-64zm161.47 233.93a309.18 309.18 0 01-63.31 99.56C316 406 276.65 428.31 256 437.36V75.8c38.75 17 68.73 28.3 97.93 36.89a613.12 613.12 0 0085.6 18.52c-1.72 60.22-8.36 99.69-22.06 134.72z'/></svg>\"\nexport const shieldOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield</title><path d='M463.1 112.37C373.68 96.33 336.71 84.45 256 48c-80.71 36.45-117.68 48.33-207.1 64.37C32.7 369.13 240.58 457.79 256 464c15.42-6.21 223.3-94.87 207.1-351.63z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shieldSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shield</title><path d='M256 32C174 69.06 121.38 86.46 32 96c0 77.59 5.27 133.36 25.29 184.51a348.86 348.86 0 0071.43 112.41c49.6 52.66 104.17 80.4 127.28 87.08 23.11-6.68 77.68-34.42 127.28-87.08a348.86 348.86 0 0071.43-112.41C474.73 229.36 480 173.59 480 96c-89.38-9.54-142-26.94-224-64z'/></svg>\"\nexport const shirt = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shirt</title><path d='M256 96c33.08 0 60.71-25.78 64-58 .3-3-3-6-6-6a13 13 0 00-4.74.9c-.2.08-21.1 8.1-53.26 8.1s-53.1-8-53.26-8.1a16.21 16.21 0 00-5.3-.9h-.06a5.69 5.69 0 00-5.38 6c3.35 32.16 31 58 64 58z'/><path d='M485.29 89.9L356 44.64a4 4 0 00-5.27 3.16 96 96 0 01-189.38 0 4 4 0 00-5.35-3.16L26.71 89.9A16 16 0 0016.28 108l16.63 88a16 16 0 0013.92 12.9l48.88 5.52a8 8 0 017.1 8.19l-7.33 240.9a16 16 0 009.1 14.94A17.49 17.49 0 00112 480h288a17.49 17.49 0 007.42-1.55 16 16 0 009.1-14.94l-7.33-240.9a8 8 0 017.1-8.19l48.88-5.52a16 16 0 0013.92-12.9l16.63-88a16 16 0 00-10.43-18.1z'/></svg>\"\nexport const shirtOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shirt</title><path d='M314.56 48s-22.78 8-58.56 8-58.56-8-58.56-8a31.94 31.94 0 00-10.57 1.8L32 104l16.63 88 48.88 5.52a24 24 0 0121.29 24.58L112 464h288l-6.8-241.9a24 24 0 0121.29-24.58l48.88-5.52L480 104 325.13 49.8a31.94 31.94 0 00-10.57-1.8zM333.31 52.66a80 80 0 01-154.62 0' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shirtSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shirt</title><path d='M256 42c-33.88 0-64-10-64-10v2a64 64 0 00128 0v-2s-30.12 10-64 10z'/><path d='M352 44c-5.49 47.76-46.79 85-96 85s-90.51-37.24-96-85L16 94l18 114 61.71 7.42c7.08.9 7.1.9 7.1 8.19L96 480h320l-6.81-256.39c-.21-7-.21-7 7.1-8.19L478 208l18-114z'/></svg>\"\nexport const shuffle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shuffle</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 304l48 48-48 48M400 112l48 48-48 48M64 352h85.19a80 80 0 0066.56-35.62L256 256' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 160h85.19a80 80 0 0166.56 35.62l80.5 120.76A80 80 0 00362.81 352H416M416 160h-53.19a80 80 0 00-66.56 35.62L288 208' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shuffleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shuffle</title><path stroke-linecap='round' stroke-linejoin='round' d='M400 304l48 48-48 48M400 112l48 48-48 48M64 352h85.19a80 80 0 0066.56-35.62L256 256' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 160h85.19a80 80 0 0166.56 35.62l80.5 120.76A80 80 0 00362.81 352H416M416 160h-53.19a80 80 0 00-66.56 35.62L288 208' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const shuffleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Shuffle</title><path stroke-linecap='square' stroke-miterlimit='10' d='M400 304l48 48-48 48M400 112l48 48-48 48M64 352h128l60-92' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M64 160h128l128 192h96M416 160h-96l-32 48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const skull = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Skull</title><path d='M402 76.94C362.61 37.63 310.78 16 256 16h-.37A208 208 0 0048 224v100.67A79.62 79.62 0 0098.29 399l23.71 9.42a15.92 15.92 0 019.75 11.72l10 50.13A32.09 32.09 0 00173.12 496H184a8 8 0 008-8v-39.55c0-8.61 6.62-16 15.23-16.43A16 16 0 01224 448v40a8 8 0 008 8 8 8 0 008-8v-39.55c0-8.61 6.62-16 15.23-16.43A16 16 0 01272 448v40a8 8 0 008 8 8 8 0 008-8v-39.55c0-8.61 6.62-16 15.23-16.43A16 16 0 01320 448v40a8 8 0 008 8h10.88a32.09 32.09 0 0031.38-25.72l10-50.14a16 16 0 019.74-11.72l23.71-9.42A79.62 79.62 0 00464 324.67v-99c0-56-22-108.81-62-148.73zM171.66 335.88a56 56 0 1152.22-52.22 56 56 0 01-52.22 52.22zM281 397.25a16.37 16.37 0 01-9.3 2.75h-31.4a16.37 16.37 0 01-9.28-2.75 16 16 0 01-6.6-16.9l15.91-47.6C243 326 247.25 321 254 320.13c8.26-1 14 2.87 17.61 12.22l16 48a16 16 0 01-6.61 16.9zm66.68-61.37a56 56 0 1152.22-52.22 56 56 0 01-52.24 52.22z'/></svg>\"\nexport const skullOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Skull</title><path d='M448 225.64v99a64 64 0 01-40.23 59.42l-23.68 9.47A32 32 0 00364.6 417l-10 50.14A16 16 0 01338.88 480H173.12a16 16 0 01-15.69-12.86L147.4 417a32 32 0 00-19.49-23.44l-23.68-9.47A64 64 0 0164 324.67V224c0-105.92 85.77-191.81 191.65-192S448 119.85 448 225.64z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='168' cy='280' r='40' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='344' cy='280' r='40' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 336l-16 48h32l-16-48zM256 448v32M208 448v32M304 448v32' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const skullSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Skull</title><path d='M256 16C141.31 16 48 109.31 48 224v154.83l82 32.81L146.88 496H192v-64h32v64h16v-64h32v64h16v-64h32v64h45.12L382 411.64l82-32.81V224c0-114.69-93.31-208-208-208zm-88 320a56 56 0 1156-56 56.06 56.06 0 01-56 56zm51.51 64L244 320h24l24.49 80zM344 336a56 56 0 1156-56 56.06 56.06 0 01-56 56zm104 32z'/></svg>\"\nexport const snow = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Snow</title><path d='M461 349l-34-19.64a89.53 89.53 0 0120.94-16 22 22 0 00-21.28-38.51 133.62 133.62 0 00-38.55 32.1L300 256l88.09-50.86a133.46 133.46 0 0038.55 32.1 22 22 0 1021.28-38.51 89.74 89.74 0 01-20.94-16l34-19.64A22 22 0 10439 125l-34 19.63a89.74 89.74 0 01-3.42-26.15A22 22 0 00380 96h-.41a22 22 0 00-22 21.59 133.61 133.61 0 008.5 49.41L278 217.89V116.18a133.5 133.5 0 0047.07-17.33 22 22 0 00-22.71-37.69A89.56 89.56 0 01278 71.27V38a22 22 0 00-44 0v33.27a89.56 89.56 0 01-24.36-10.11 22 22 0 10-22.71 37.69A133.5 133.5 0 00234 116.18v101.71L145.91 167a133.61 133.61 0 008.52-49.43 22 22 0 00-22-21.59H132a22 22 0 00-21.59 22.41 89.74 89.74 0 01-3.41 26.19L73 125a22 22 0 10-22 38.1l34 19.64a89.74 89.74 0 01-20.94 16 22 22 0 1021.28 38.51 133.62 133.62 0 0038.55-32.1L212 256l-88.09 50.86a133.62 133.62 0 00-38.55-32.1 22 22 0 10-21.28 38.51 89.74 89.74 0 0120.94 16L51 349a22 22 0 1022 38.1l34-19.63a89.74 89.74 0 013.42 26.15A22 22 0 00132 416h.41a22 22 0 0022-21.59 133.61 133.61 0 00-8.5-49.41L234 294.11v101.71a133.5 133.5 0 00-47.07 17.33 22 22 0 1022.71 37.69A89.56 89.56 0 01234 440.73V474a22 22 0 0044 0v-33.27a89.56 89.56 0 0124.36 10.11 22 22 0 0022.71-37.69A133.5 133.5 0 00278 395.82V294.11L366.09 345a133.61 133.61 0 00-8.52 49.43 22 22 0 0022 21.59h.43a22 22 0 0021.59-22.41 89.74 89.74 0 013.41-26.19l34 19.63A22 22 0 10461 349z'/></svg>\"\nexport const snowOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Snow</title><path stroke-linecap='round' stroke-linejoin='round' d='M256 32v448M313.72 80A111.47 111.47 0 01256 96a111.47 111.47 0 01-57.72-16M198.28 432a112.11 112.11 0 01115.44 0M449.99 144L62.01 368M437.27 218a112.09 112.09 0 01-57.71-100M74.73 294a112.09 112.09 0 0157.71 100M62.01 144l387.98 224M74.73 218a112.09 112.09 0 0057.71-100M437.27 294a112.09 112.09 0 00-57.71 100' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const snowSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Snow</title><path d='M447.88 313.27l19.25-10.64-21.28-38.51-19.25 10.64a133.42 133.42 0 00-38.54 32.1L300 256l88.07-50.86a133.42 133.42 0 0038.54 32.1l19.25 10.64 21.28-38.51-19.25-10.64a89.27 89.27 0 01-20.93-16L480 152.05 458 114l-53 30.58a89.07 89.07 0 01-3.42-26.15l.41-22-44-.82-.41 22a133.62 133.62 0 008.49 49.39L278 217.89V116.18a133.52 133.52 0 0047.06-17.33L343.9 87.5l-22.71-37.69-18.84 11.35A89.5 89.5 0 01278 71.27V16h-44v55.27a89.5 89.5 0 01-24.35-10.11l-18.84-11.35L168.1 87.5l18.84 11.35A133.52 133.52 0 00234 116.18v101.71L145.93 167a133.62 133.62 0 008.53-49.43l-.41-22-44 .82.41 22a89.07 89.07 0 01-3.42 26.15L54 114l-22 38.1 53.05 30.64a89.27 89.27 0 01-20.93 16l-19.25 10.63 21.28 38.51 19.25-10.64a133.42 133.42 0 0038.54-32.1L212 256l-88.07 50.86a133.42 133.42 0 00-38.54-32.1l-19.24-10.64-21.28 38.51 19.25 10.64a89.27 89.27 0 0120.93 16L32 360l22 38.1 53.05-30.63a89.07 89.07 0 013.42 26.15l-.41 22 44 .82.41-22a133.62 133.62 0 00-8.54-49.44L234 294.11v101.71a133.52 133.52 0 00-47.06 17.33L168.1 424.5l22.71 37.69 18.84-11.35A89.5 89.5 0 01234 440.73V496h44v-55.27a89.5 89.5 0 0124.35 10.11l18.84 11.35 22.71-37.69-18.84-11.35A133.52 133.52 0 00278 395.82V294.11L366.07 345a133.62 133.62 0 00-8.53 49.43l.41 22 44-.82-.41-22a89.07 89.07 0 013.46-26.19l53 30.63L480 360l-53-30.69a89.27 89.27 0 0120.88-16.04z'/></svg>\"\nexport const sparkles = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sparkles</title><path d='M208 512a24.84 24.84 0 01-23.34-16l-39.84-103.6a16.06 16.06 0 00-9.19-9.19L32 343.34a25 25 0 010-46.68l103.6-39.84a16.06 16.06 0 009.19-9.19L184.66 144a25 25 0 0146.68 0l39.84 103.6a16.06 16.06 0 009.19 9.19l103 39.63a25.49 25.49 0 0116.63 24.1 24.82 24.82 0 01-16 22.82l-103.6 39.84a16.06 16.06 0 00-9.19 9.19L231.34 496A24.84 24.84 0 01208 512zm66.85-254.84zM88 176a14.67 14.67 0 01-13.69-9.4l-16.86-43.84a7.28 7.28 0 00-4.21-4.21L9.4 101.69a14.67 14.67 0 010-27.38l43.84-16.86a7.31 7.31 0 004.21-4.21L74.16 9.79A15 15 0 0186.23.11a14.67 14.67 0 0115.46 9.29l16.86 43.84a7.31 7.31 0 004.21 4.21l43.84 16.86a14.67 14.67 0 010 27.38l-43.84 16.86a7.28 7.28 0 00-4.21 4.21l-16.86 43.84A14.67 14.67 0 0188 176zM400 256a16 16 0 01-14.93-10.26l-22.84-59.37a8 8 0 00-4.6-4.6l-59.37-22.84a16 16 0 010-29.86l59.37-22.84a8 8 0 004.6-4.6l22.67-58.95a16.45 16.45 0 0113.17-10.57 16 16 0 0116.86 10.15l22.84 59.37a8 8 0 004.6 4.6l59.37 22.84a16 16 0 010 29.86l-59.37 22.84a8 8 0 00-4.6 4.6l-22.84 59.37A16 16 0 01400 256z'/></svg>\"\nexport const sparklesOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sparkles</title><path d='M259.92 262.91L216.4 149.77a9 9 0 00-16.8 0l-43.52 113.14a9 9 0 01-5.17 5.17L37.77 311.6a9 9 0 000 16.8l113.14 43.52a9 9 0 015.17 5.17l43.52 113.14a9 9 0 0016.8 0l43.52-113.14a9 9 0 015.17-5.17l113.14-43.52a9 9 0 000-16.8l-113.14-43.52a9 9 0 01-5.17-5.17zM108 68L88 16 68 68 16 88l52 20 20 52 20-52 52-20-52-20zM426.67 117.33L400 48l-26.67 69.33L304 144l69.33 26.67L400 240l26.67-69.33L496 144l-69.33-26.67z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const sparklesSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sparkles</title><path d='M208 512l-52.38-139.62L16 320l139.62-52.38L208 128l52.38 139.62L400 320l-139.62 52.38zM88 176l-23.57-64.43L0 88l64.43-23.57L88 0l23.57 64.43L176 88l-64.43 23.57zM400 256l-31.11-80.89L288 144l80.89-31.11L400 32l31.11 80.89L512 144l-80.89 31.11z'/></svg>\"\nexport const speedometer = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Speedometer</title><path d='M425.7 118.25A240 240 0 0076.32 447l.18.2c.33.35.64.71 1 1.05.74.84 1.58 1.79 2.57 2.78a41.17 41.17 0 0060.36-.42 157.13 157.13 0 01231.26 0 41.18 41.18 0 0060.65.06l3.21-3.5.18-.2a239.93 239.93 0 00-10-328.76zM240 128a16 16 0 0132 0v32a16 16 0 01-32 0zM128 304H96a16 16 0 010-32h32a16 16 0 010 32zm48.8-95.2a16 16 0 01-22.62 0l-22.63-22.62a16 16 0 0122.63-22.63l22.62 22.63a16 16 0 010 22.62zm149.3 23.1l-47.5 75.5a31 31 0 01-7 7 30.11 30.11 0 01-35-49l75.5-47.5a10.23 10.23 0 0111.7 0 10.06 10.06 0 012.3 14zm31.72-23.1a16 16 0 01-22.62-22.62l22.62-22.63a16 16 0 0122.63 22.63zm65.88 227.6zM416 304h-32a16 16 0 010-32h32a16 16 0 010 32z'/></svg>\"\nexport const speedometerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Speedometer</title><path d='M326.1 231.9l-47.5 75.5a31 31 0 01-7 7 30.11 30.11 0 01-35-49l75.5-47.5a10.23 10.23 0 0111.7 0 10.06 10.06 0 012.3 14z'/><path d='M256 64C132.3 64 32 164.2 32 287.9a223.18 223.18 0 0056.3 148.5c1.1 1.2 2.1 2.4 3.2 3.5a25.19 25.19 0 0037.1-.1 173.13 173.13 0 01254.8 0 25.19 25.19 0 0037.1.1l3.2-3.5A223.18 223.18 0 00480 287.9C480 164.2 379.7 64 256 64z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M256 128v32M416 288h-32M128 288H96M165.49 197.49l-22.63-22.63M346.51 197.49l22.63-22.63' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const speedometerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Speedometer</title><path d='M256 48C123.46 48 16 156.55 16 290.56a243.3 243.3 0 0060.32 160.87c1.18 1.3 2.25 2.6 3.43 3.79C89.2 464 92.07 464 99.57 464s12.43 0 19.93-8.88C152 416.64 202 400 256 400s104.07 16.71 136.5 55.12C400 464 404.82 464 412.43 464s11.3 0 19.82-8.78c1.22-1.25 2.25-2.49 3.43-3.79A243.3 243.3 0 00496 290.56C496 156.55 388.54 48 256 48zm-16 64h32v64h-32zm-96 192H80v-32h64zm21.49-83.88l-45.25-45.26 22.62-22.62 45.26 45.25zM278.6 307.4a31 31 0 01-7 7 30.11 30.11 0 01-35-49L320 224zm45.28-109.91l45.26-45.25 22.62 22.62-45.25 45.26zM432 304h-64v-32h64z'/></svg>\"\nexport const square = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Square</title><path d='M416 464H96a48.05 48.05 0 01-48-48V96a48.05 48.05 0 0148-48h320a48.05 48.05 0 0148 48v320a48.05 48.05 0 01-48 48z'/></svg>\"\nexport const squareOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Square</title><path d='M416 448H96a32.09 32.09 0 01-32-32V96a32.09 32.09 0 0132-32h320a32.09 32.09 0 0132 32v320a32.09 32.09 0 01-32 32z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const squareSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Square</title><path d='M48 48h416v416H48z'/></svg>\"\nexport const star = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Star</title><path d='M394 480a16 16 0 01-9.39-3L256 383.76 127.39 477a16 16 0 01-24.55-18.08L153 310.35 23 221.2a16 16 0 019-29.2h160.38l48.4-148.95a16 16 0 0130.44 0l48.4 149H480a16 16 0 019.05 29.2L359 310.35l50.13 148.53A16 16 0 01394 480z'/></svg>\"\nexport const starHalf = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Star Half</title><path d='M480 208H308L256 48l-52 160H32l140 96-54 160 138-100 138 100-54-160z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 48v316L118 464l54-160-140-96h172l52-160z'/></svg>\"\nexport const starHalfOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Star Half</title><path d='M480 208H308L256 48l-52 160H32l140 96-54 160 138-100 138 100-54-160z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 48v316L118 464l54-160-140-96h172l52-160z'/></svg>\"\nexport const starHalfSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Star Half</title><path d='M496 203.3H312.36L256 32l-56.36 171.3H16l150.21 105.4-58.5 171.3L256 373.84 404.29 480l-58.61-171.3zM274.63 347.82L256 334.49v-200.1l26 78.91 7.24 22h105.39l-67.32 47.2-19.69 13.81 7.78 22.75 26.26 76.75z'/></svg>\"\nexport const starOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Star</title><path d='M480 208H308L256 48l-52 160H32l140 96-54 160 138-100 138 100-54-160z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const starSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Star</title><path d='M496 203.3H312.36L256 32l-56.36 171.3H16l150.21 105.4-58.5 171.3L256 373.84 404.29 480l-58.61-171.3z'/></svg>\"\nexport const statsChart = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stats Chart</title><path d='M104 496H72a24 24 0 01-24-24V328a24 24 0 0124-24h32a24 24 0 0124 24v144a24 24 0 01-24 24zM328 496h-32a24 24 0 01-24-24V232a24 24 0 0124-24h32a24 24 0 0124 24v240a24 24 0 01-24 24zM440 496h-32a24 24 0 01-24-24V120a24 24 0 0124-24h32a24 24 0 0124 24v352a24 24 0 01-24 24zM216 496h-32a24 24 0 01-24-24V40a24 24 0 0124-24h32a24 24 0 0124 24v432a24 24 0 01-24 24z'/></svg>\"\nexport const statsChartOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stats Chart</title><rect x='64' y='320' width='48' height='160' rx='8' ry='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='288' y='224' width='48' height='256' rx='8' ry='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='400' y='112' width='48' height='368' rx='8' ry='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='176' y='32' width='48' height='448' rx='8' ry='8' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const statsChartSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stats Chart</title><path d='M128 496H48V304h80zM352 496h-80V208h80zM464 496h-80V96h80zM240 496h-80V16h80z'/></svg>\"\nexport const stop = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stop</title><path d='M392 432H120a40 40 0 01-40-40V120a40 40 0 0140-40h272a40 40 0 0140 40v272a40 40 0 01-40 40z'/></svg>\"\nexport const stopCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stop Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm80 262.4a25.62 25.62 0 01-25.6 25.6H201.6a25.62 25.62 0 01-25.6-25.6V201.6a25.62 25.62 0 0125.6-25.6h108.8a25.62 25.62 0 0125.6 25.6z'/></svg>\"\nexport const stopCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stop Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M310.4 336H201.6a25.62 25.62 0 01-25.6-25.6V201.6a25.62 25.62 0 0125.6-25.6h108.8a25.62 25.62 0 0125.6 25.6v108.8a25.62 25.62 0 01-25.6 25.6z'/></svg>\"\nexport const stopCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stop Circle</title><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm80 288H176V176h160z'/></svg>\"\nexport const stopOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stop</title><rect x='96' y='96' width='320' height='320' rx='24' ry='24' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const stopSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stop</title><path d='M80 80h352v352H80z'/></svg>\"\nexport const stopwatch = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stopwatch</title><circle cx='256' cy='272' r='16'/><path d='M280 81.5V72a24 24 0 00-48 0v9.5a191 191 0 00-84.43 32.13L137 103a24 24 0 00-34 34l8.6 8.6A191.17 191.17 0 0064 272c0 105.87 86.13 192 192 192s192-86.13 192-192c0-97.74-73.42-178.66-168-190.5zM256 320a48 48 0 01-16-93.25V152a16 16 0 0132 0v74.75A48 48 0 01256 320z'/></svg>\"\nexport const stopwatchOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stopwatch</title><path stroke-linecap='round' stroke-linejoin='round' d='M256 232v-80' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M256 88V72M132 132l-12-12' class='ionicon-fill-none'/><circle cx='256' cy='272' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 96a176 176 0 10176 176A176 176 0 00256 96z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const stopwatchSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Stopwatch</title><path d='M280 81.5V48h-48v33.5a191 191 0 00-84.43 32.13L120 86l-34 34 25.59 25.59A191.17 191.17 0 0064 272c0 105.87 86.13 192 192 192s192-86.13 192-192c0-97.74-73.42-178.66-168-190.5zM256 320a48 48 0 01-16-93.25V136h32v90.75A48 48 0 01256 320z'/></svg>\"\nexport const storefront = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Storefront</title><path d='M480 448h-12a4 4 0 01-4-4V273.51a4 4 0 00-5.24-3.86 104.92 104.92 0 01-28.32 4.78c-1.18 0-2.3.05-3.4.05a108.22 108.22 0 01-52.85-13.64 8.23 8.23 0 00-8 0 108.18 108.18 0 01-52.84 13.64 106.11 106.11 0 01-52.46-13.79 8.21 8.21 0 00-8.09 0 108.14 108.14 0 01-53.16 13.8 106.19 106.19 0 01-52.77-14 8.25 8.25 0 00-8.16 0 106.19 106.19 0 01-52.77 14c-1.09 0-2.19 0-3.37-.05h-.06a104.91 104.91 0 01-29.28-5.09 4 4 0 00-5.23 3.8V444a4 4 0 01-4 4H32.5c-8.64 0-16.1 6.64-16.48 15.28A16 16 0 0032 480h447.5c8.64 0 16.1-6.64 16.48-15.28A16 16 0 00480 448zm-256-68a4 4 0 01-4 4h-88a4 4 0 01-4-4v-64a12 12 0 0112-12h72a12 12 0 0112 12zm156 68h-72a4 4 0 01-4-4V316a12 12 0 0112-12h56a12 12 0 0112 12v128a4 4 0 01-4 4zM492.57 170.28l-42.92-98.49C438.41 47.62 412.74 32 384.25 32H127.7c-28.49 0-54.16 15.62-65.4 39.79l-42.92 98.49c-9 19.41 2.89 39.34 2.9 39.35l.28.45c.49.78 1.36 2 1.89 2.78.05.06.09.13.14.2l5 6.05a7.45 7.45 0 00.6.65l5 4.83.42.36a69.65 69.65 0 009.39 6.78v.05a74 74 0 0036 10.67h2.47a76.08 76.08 0 0051.89-20.31l.33-.31a7.94 7.94 0 0110.89 0l.33.31a77.3 77.3 0 00104.46 0 8 8 0 0110.87 0 77.31 77.31 0 00104.21.23 7.88 7.88 0 0110.71 0 76.81 76.81 0 0052.31 20.08h2.49a71.35 71.35 0 0035-10.7c.95-.57 1.86-1.17 2.78-1.77A71.33 71.33 0 00488 212.17l1.74-2.63q.26-.4.48-.84c1.66-3.38 10.56-20.76 2.35-38.42z'/></svg>\"\nexport const storefrontOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Storefront</title><path stroke-linecap='round' stroke-linejoin='round' d='M448 448V240M64 240v208M382.47 48H129.53c-21.79 0-41.47 12-49.93 30.46L36.3 173c-14.58 31.81 9.63 67.85 47.19 69h2c31.4 0 56.85-25.18 56.85-52.23 0 27 25.46 52.23 56.86 52.23s56.8-23.38 56.8-52.23c0 27 25.45 52.23 56.85 52.23s56.86-23.38 56.86-52.23c0 28.85 25.45 52.23 56.85 52.23h1.95c37.56-1.17 61.77-37.21 47.19-69l-43.3-94.54C423.94 60 404.26 48 382.47 48zM32 464h448M136 288h80a24 24 0 0124 24v88h0-128 0v-88a24 24 0 0124-24zM288 464V312a24 24 0 0124-24h64a24 24 0 0124 24v152' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const storefrontSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Storefront</title><path d='M464 448V267.85a104.76 104.76 0 01-33.56 6.58c-1.18 0-2.3.05-3.4.05a108 108 0 01-56.86-16 108 108 0 01-56.85 16 106.16 106.16 0 01-56.51-16.2 107.84 107.84 0 01-57.2 16.2 106.14 106.14 0 01-56.85-16.42 106.14 106.14 0 01-56.85 16.42c-1.09 0-2.19 0-3.37-.05h-.06A104.66 104.66 0 0148 267.49V448H16v32h480v-32zm-240-64h-96v-76a4 4 0 014-4h88a4 4 0 014 4zm160 64h-80V308a4 4 0 014-4h72a4 4 0 014 4zM492.57 170.28L445.89 64C432 32 432 32 400 32H112c-32 0-32 0-45.94 32L19.38 170.28c-9 19.41 2.89 39.34 2.9 39.35l.41.66c.42.66 1.13 1.75 1.62 2.37.1.13.19.27.28.4l5.24 6.39 5.31 5.14.42.36a69.65 69.65 0 009.44 6.78v.05a74 74 0 0036 10.67h2.47a76.08 76.08 0 0051.89-20.31 72.38 72.38 0 005.77-6 74.18 74.18 0 005.78 6 76.08 76.08 0 0051.89 20.31c23.28 0 44.07-10 57.63-25.56a.11.11 0 01.15 0l5.66 5.26a76.09 76.09 0 0051.9 20.31c23.29 0 44.11-10 57.66-25.61 13.56 15.61 34.37 25.61 57.67 25.61h2.49a71.35 71.35 0 0035-10.7c.95-.57 1.86-1.17 2.78-1.77A71.33 71.33 0 00488 212.17l2-3c.9-2.04 11.21-20.3 2.57-38.89z'/></svg>\"\nexport const subway = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Subway</title><path d='M352 16H160a64.07 64.07 0 00-64 64v256a64.07 64.07 0 0064 64h192a64.07 64.07 0 0064-64V80a64.07 64.07 0 00-64-64zM208 64h96a16 16 0 010 32h-96a16 16 0 010-32zm-32 288a32 32 0 1132-32 32 32 0 01-32 32zm160 0a32 32 0 1132-32 32 32 0 01-32 32zm48-160a16 16 0 01-16 16H144a16 16 0 01-16-16v-32a16 16 0 0116-16h224a16 16 0 0116 16zM347.31 420.69a16 16 0 00-22.62 22.62l4.68 4.69H182.63l4.68-4.69a16 16 0 00-22.62-22.62l-48 48a16 16 0 1022.62 22.62L150.63 480h210.74l11.32 11.31a16 16 0 0022.62-22.62z'/></svg>\"\nexport const subwayOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Subway</title><rect x='112' y='32' width='288' height='352' rx='48' ry='48' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M208 80h96' class='ionicon-fill-none ionicon-stroke-width'/><rect x='112' y='128' width='288' height='96' rx='32' ry='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='176' cy='320' r='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='336' cy='320' r='16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M144 464h224M336 432l48 48M176 432l-48 48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const subwaySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Subway</title><path d='M392 16H120a24 24 0 00-24 24v336a24 24 0 0024 24h272a24 24 0 0024-24V40a24 24 0 00-24-24zM208 64h95.55c8.61 0 16 6.62 16.43 15.23A16 16 0 01304 96h-95.55c-8.61 0-16-6.62-16.43-15.23A16 16 0 01208 64zm-28.53 287.82a32 32 0 1128.35-28.35 32 32 0 01-28.35 28.35zm160 0a32 32 0 1128.35-28.35 32 32 0 01-28.35 28.35zM384 144v64H128v-64zM298 416l31.37 32H182.63L214 416h-44l-80.57 80h45.2l16-16h210.74l16 16h45.3L343 416h-45z'/></svg>\"\nexport const sunny = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sunny</title><path d='M256 118a22 22 0 01-22-22V48a22 22 0 0144 0v48a22 22 0 01-22 22zM256 486a22 22 0 01-22-22v-48a22 22 0 0144 0v48a22 22 0 01-22 22zM369.14 164.86a22 22 0 01-15.56-37.55l33.94-33.94a22 22 0 0131.11 31.11l-33.94 33.94a21.93 21.93 0 01-15.55 6.44zM108.92 425.08a22 22 0 01-15.55-37.56l33.94-33.94a22 22 0 1131.11 31.11l-33.94 33.94a21.94 21.94 0 01-15.56 6.45zM464 278h-48a22 22 0 010-44h48a22 22 0 010 44zM96 278H48a22 22 0 010-44h48a22 22 0 010 44zM403.08 425.08a21.94 21.94 0 01-15.56-6.45l-33.94-33.94a22 22 0 0131.11-31.11l33.94 33.94a22 22 0 01-15.55 37.56zM142.86 164.86a21.89 21.89 0 01-15.55-6.44l-33.94-33.94a22 22 0 0131.11-31.11l33.94 33.94a22 22 0 01-15.56 37.55zM256 358a102 102 0 11102-102 102.12 102.12 0 01-102 102z'/></svg>\"\nexport const sunnyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sunny</title><path stroke-linecap='round' stroke-miterlimit='10' d='M256 48v48M256 416v48M403.08 108.92l-33.94 33.94M142.86 369.14l-33.94 33.94M464 256h-48M96 256H48M403.08 403.08l-33.94-33.94M142.86 142.86l-33.94-33.94' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='80' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const sunnySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sunny</title><path d='M234 26h44v92h-44zM234 394h44v92h-44zM338.025 142.857l65.054-65.054 31.113 31.113-65.054 65.054zM77.815 403.074l65.054-65.054 31.113 31.113-65.054 65.054zM394 234h92v44h-92zM26 234h92v44H26zM338.029 369.14l31.112-31.113 65.054 65.054-31.112 31.112zM77.802 108.92l31.113-31.113 65.054 65.054-31.113 31.112zM256 358a102 102 0 11102-102 102.12 102.12 0 01-102 102z'/></svg>\"\nexport const swapHorizontal = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Swap Horizontal</title><path stroke-linecap='round' stroke-linejoin='round' d='M304 48l112 112-112 112M398.87 160H96M208 464L96 352l112-112M114 352h302' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const swapHorizontalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Swap Horizontal</title><path stroke-linecap='round' stroke-linejoin='round' d='M304 48l112 112-112 112M398.87 160H96M208 464L96 352l112-112M114 352h302' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const swapHorizontalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Swap Horizontal</title><path stroke-linecap='square' stroke-miterlimit='10' d='M304 48l112 112-112 112M398.87 160H96M208 464L96 352l112-112M114 352h302' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const swapVertical = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Swap Vertical</title><path stroke-linecap='round' stroke-linejoin='round' d='M464 208L352 96 240 208M352 113.13V416M48 304l112 112 112-112M160 398V96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const swapVerticalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Swap Vertical</title><path stroke-linecap='round' stroke-linejoin='round' d='M464 208L352 96 240 208M352 113.13V416M48 304l112 112 112-112M160 398V96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const swapVerticalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Swap Vertical</title><path stroke-linecap='square' stroke-miterlimit='10' d='M464 208L352 96 240 208M352 113.13V416M48 304l112 112 112-112M160 398V96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const sync = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sync</title><path d='M434.67 285.59v-29.8c0-98.73-80.24-178.79-179.2-178.79a179 179 0 00-140.14 67.36m-38.53 82v29.8C76.8 355 157 435 256 435a180.45 180.45 0 00140-66.92' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M32 256l44-44 46 44M480 256l-44 44-46-44' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const syncCircle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sync Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm83.69 282.65a112.24 112.24 0 01-195-61.29 16 16 0 01-20.13-24.67l23.6-23.6a16 16 0 0122.37-.25l24.67 23.6a16 16 0 01-18 26 80.25 80.25 0 00138.72 38.83 16 16 0 0123.77 21.41zm47.76-63.34l-23.6 23.6a16 16 0 01-22.37.25l-24.67-23.6a16 16 0 0117.68-26.11A80.17 80.17 0 00196 202.64a16 16 0 11-23.82-21.37 112.17 112.17 0 01194.88 61.57 16 16 0 0120.39 24.47z'/></svg>\"\nexport const syncCircleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sync Circle</title><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M351.82 271.87v-16A96.15 96.15 0 00184.09 192m-24.2 48.17v16A96.22 96.22 0 00327.81 320' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M135.87 256l23.59-23.6 24.67 23.6M376.13 256l-23.59 23.6-24.67-23.6' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const syncCircleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sync Circle</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm0 320a112.19 112.19 0 01-111.27-98.23l-8.86 8.86L113.24 256l46-46 47.55 45.48-22.12 23.12-7.2-6.88a80.26 80.26 0 00138.48 37.5l23.77 21.41A112.82 112.82 0 01256 368zm96.79-66l-47.55-45.5 22.12-23.12 6.86 6.55A80.2 80.2 0 00196 202.64l-23.82-21.37A112.18 112.18 0 01367 242.49l9.11-9.12L398.76 256z'/></svg>\"\nexport const syncOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sync</title><path d='M434.67 285.59v-29.8c0-98.73-80.24-178.79-179.2-178.79a179 179 0 00-140.14 67.36m-38.53 82v29.8C76.8 355 157 435 256 435a180.45 180.45 0 00140-66.92' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M32 256l44-44 46 44M480 256l-44 44-46-44' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const syncSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Sync</title><path d='M434.67 285.59v-29.8c0-98.73-80.24-178.79-179.2-178.79a179 179 0 00-140.14 67.36m-38.53 82v29.8C76.8 355 157 435 256 435a180.45 180.45 0 00140-66.92' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M32 256l44-44 46 44M480 256l-44 44-46-44' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const tabletLandscape = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tablet Landscape</title><path d='M512 128v256a64.07 64.07 0 01-64 64H64a64.07 64.07 0 01-64-64V128a64.07 64.07 0 0164-64h384a64.07 64.07 0 0164 64zM32 384a32 32 0 0032 32h384a32 32 0 0032-32V128a32 32 0 00-32-32H64a32 32 0 00-32 32z'/><path d='M0 128a64.07 64.07 0 0164-64h384a64.07 64.07 0 0164 64v256a64.07 64.07 0 01-64 64H64a64.07 64.07 0 01-64-64V128m480 256V128a32 32 0 00-32-32H64a32 32 0 00-32 32v256a32 32 0 0032 32h384a32 32 0 0032-32m-16 0a16 16 0 01-16 16H64a16 16 0 01-16-16V128a16 16 0 0116-16h384a16 16 0 0116 16v256z'/></svg>\"\nexport const tabletLandscapeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tablet Landscape</title><rect x='80' y='16' width='352' height='480' rx='48' ry='48' transform='rotate(-90 256 256)' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const tabletLandscapeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tablet Landscape</title><path d='M0 82v348a18 18 0 0018 18h476a18 18 0 0018-18V82a18 18 0 00-18-18H18A18 18 0 000 82zm448 330H64V100h384z'/></svg>\"\nexport const tabletPortrait = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tablet Portrait</title><path d='M384 512H128a64.07 64.07 0 01-64-64V64a64.07 64.07 0 0164-64h256a64.07 64.07 0 0164 64v384a64.07 64.07 0 01-64 64zM128 32a32 32 0 00-32 32v384a32 32 0 0032 32h256a32 32 0 0032-32V64a32 32 0 00-32-32z'/><path d='M384 0a64.07 64.07 0 0164 64v384a64.07 64.07 0 01-64 64H128a64.07 64.07 0 01-64-64V64a64.07 64.07 0 0164-64h256M128 480h256a32 32 0 0032-32V64a32 32 0 00-32-32H128a32 32 0 00-32 32v384a32 32 0 0032 32m0-16a16 16 0 01-16-16V64a16 16 0 0116-16h256a16 16 0 0116 16v384a16 16 0 01-16 16z'/></svg>\"\nexport const tabletPortraitOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tablet Portrait</title><rect x='80' y='16' width='352' height='480' rx='48' ry='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const tabletPortraitSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tablet Portrait</title><path d='M430 0H82a18 18 0 00-18 18v476a18 18 0 0018 18h348a18 18 0 0018-18V18a18 18 0 00-18-18zM100 448V64h312v384z'/></svg>\"\nexport const telescope = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Telescope</title><path d='M107.56 250a16 16 0 00-21.85-5.86L36 272.81a39.71 39.71 0 00-18.8 24.91 40.9 40.9 0 004.55 30.35l4.36 7.54a40 40 0 0054.62 14.62l49.67-28.63a16 16 0 005.87-21.86z'/><path d='M382.84 440.8L288.72 254a2 2 0 01.79-2.63l8.3-4.79a16 16 0 005.86-21.86l-47.53-82.33a16 16 0 00-21.86-5.87l-86.38 49.8a39.73 39.73 0 00-18.65 24.28 34.82 34.82 0 00-1.37 9.76c.06 7.6 9.2 22.7 18.12 38.28 9.59 16.75 19.24 33.88 26.34 38.15 4.52 2.72 12.5 4.9 19.21 4.9h.84l-79.32 171.6a16 16 0 1029.05 13.42l93.68-202.65a7.94 7.94 0 013.26-3.57l19.21-11.08a2 2 0 012.78.84l93.21 185a16 16 0 0028.58-14.4zM490.21 115.74L444.09 36a40.08 40.08 0 00-54.63-14.62l-93.34 53.78a39.69 39.69 0 00-18.65 24.28 32.76 32.76 0 00-1.27 13.25c1.74 12.62 13 30.4 26.41 53.89 13.58 23.73 28.91 50.48 36.93 56.27a40.18 40.18 0 0023.18 7.37 39.77 39.77 0 0019.92-5.34L476 171.07a39.72 39.72 0 0018.79-24.84 41 41 0 00-4.58-30.49z'/></svg>\"\nexport const telescopeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Telescope</title><path stroke-linecap='round' stroke-linejoin='round' d='M39.93 327.56l-4.71-8.13A24 24 0 0144 286.64l86.87-50.07a16 16 0 0121.89 5.86l12.71 22a16 16 0 01-5.86 21.85l-86.85 50.07a24.06 24.06 0 01-32.83-8.79z' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M170.68 273.72L147.12 233a24 24 0 018.8-32.78l124.46-71.75a16 16 0 0121.89 5.86l31.57 54.59a16 16 0 01-5.84 21.84L203.51 282.5a24 24 0 01-32.83-8.78zM341.85 202.21l-46.51-80.43a24 24 0 018.8-32.78l93.29-53.78A24.07 24.07 0 01430.27 44l46.51 80.43a24 24 0 01-8.8 32.79L374.69 211a24.06 24.06 0 01-32.84-8.79zM127.59 480l96.14-207.99M271.8 256.02L368.55 448' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const telescopeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Telescope</title><path d='M1.41 292.9l44.82 76.97 98.14-56.38-44.73-77.37L1.41 292.9z'/><path d='M287.87 252.34l23.67-13.81-63.42-110-132.92 77C133.75 237.51 176 310 176 310l15.53-8.32c.24-.13.55 0 .83 0L102.65 496h35.16l99.05-214.25 23.24-13.4L358 464h36zM262.08 96c24.81 42.23 60.25 104.25 86.4 148.76L510.79 151 424.07 1.41z'/></svg>\"\nexport const tennisball = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tennisball</title><path d='M448 256a192.55 192.55 0 0032-2.68A224 224 0 00258.68 32 192.55 192.55 0 00256 64c0 105.87 86.13 192 192 192zM253.35 480c.94-5.67 1.65-11.4 2.09-17.18.37-4.88.56-9.86.56-14.79 0-105.87-86.13-192-192-192a192.55 192.55 0 00-32 2.68A224 224 0 00253.35 480z'/><path d='M289.61 222.39A222.53 222.53 0 01224 64a226.07 226.07 0 012-30A224.1 224.1 0 0034 226a226.07 226.07 0 0130-2 222.53 222.53 0 01158.39 65.61A222.53 222.53 0 01288 448c0 5.74-.22 11.53-.65 17.22q-.5 6.42-1.36 12.79A224.12 224.12 0 00478 286a226.07 226.07 0 01-30 2 222.53 222.53 0 01-158.39-65.61z'/></svg>\"\nexport const tennisballOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tennisball</title><circle cx='256' cy='256' r='208' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M461.43 271.44c-5.09.37-8.24.56-13.43.56-114.88 0-208-93.12-208-208 0-5.37.2-8.69.6-14M49.65 240.56S58.84 240 64 240c114.88 0 208 93.12 208 208 0 5.38-.61 14-.61 14' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const tennisballSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tennisball</title><path d='M246.4 480a181 181 0 003.22-22.86c.35-4.61.53-9.31.53-14 0-100-81.34-181.32-181.32-181.32A181.72 181.72 0 0032 265.61 224.2 224.2 0 00246.4 480z'/><path d='M284.63 227.37A222.73 222.73 0 01219 68.83a227.09 227.09 0 012.62-34.42A224.41 224.41 0 0034.41 221.58 227.09 227.09 0 0168.83 219a222.73 222.73 0 01158.54 65.67A222.73 222.73 0 01293 443.17c0 5.74-.22 11.54-.65 17.23s-1.11 11.51-2 17.2a224.42 224.42 0 00187.24-187.18 227.09 227.09 0 01-34.42 2.58 222.73 222.73 0 01-158.54-65.63z'/><path d='M443.17 250.15a181.72 181.72 0 0036.83-3.76A224.2 224.2 0 00265.61 32a181.72 181.72 0 00-3.76 36.83c0 99.98 81.34 181.32 181.32 181.32z'/></svg>\"\nexport const terminal = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Terminal</title><path d='M432 32H80a64.07 64.07 0 00-64 64v320a64.07 64.07 0 0064 64h352a64.07 64.07 0 0064-64V96a64.07 64.07 0 00-64-64zM96 256a16 16 0 01-10-28.49L150.39 176 86 124.49a16 16 0 1120-25l80 64a16 16 0 010 25l-80 64A16 16 0 0196 256zm160 0h-64a16 16 0 010-32h64a16 16 0 010 32z'/></svg>\"\nexport const terminalOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Terminal</title><rect x='32' y='48' width='448' height='416' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M96 112l80 64-80 64M192 240h64' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const terminalSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Terminal</title><path d='M16 44v424a12 12 0 0012 12h456a12 12 0 0012-12V44a12 12 0 00-12-12H28a12 12 0 00-12 12zm57.51 193.5l76.88-61.5-76.88-61.5 20-25 108.1 86.5L93.5 262.49zM272 256h-96v-32h96z'/></svg>\"\nexport const text = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Text</title><path d='M292.6 407.78l-120-320a22 22 0 00-41.2 0l-120 320a22 22 0 0041.2 15.44l36.16-96.42a2 2 0 011.87-1.3h122.74a2 2 0 011.87 1.3l36.16 96.42a22 22 0 0041.2-15.44zm-185.84-129l43.37-115.65a2 2 0 013.74 0l43.37 115.67a2 2 0 01-1.87 2.7h-86.74a2 2 0 01-1.87-2.7zM400.77 169.5c-41.72-.3-79.08 23.87-95 61.4a22 22 0 0040.5 17.2c8.88-20.89 29.77-34.44 53.32-34.6 32.32-.22 58.41 26.5 58.41 58.85a1.5 1.5 0 01-1.45 1.5c-21.92.61-47.92 2.07-71.12 4.8-54.75 6.44-87.43 36.29-87.43 79.85 0 23.19 8.76 44 24.67 58.68C337.6 430.93 358 438.5 380 438.5c31 0 57.69-8 77.94-23.22h.06a22 22 0 1044 .19v-143c0-56.18-45-102.56-101.23-102.97zM380 394.5c-17.53 0-38-9.43-38-36 0-10.67 3.83-18.14 12.43-24.23 8.37-5.93 21.2-10.16 36.14-11.92 21.12-2.49 44.82-3.86 65.14-4.47a2 2 0 012 2.1C455 370.1 429.46 394.5 380 394.5z'/></svg>\"\nexport const textOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Text</title><path stroke-linecap='round' stroke-linejoin='round' d='M32 415.5l120-320 120 320M230 303.5H74M326 239.5c12.19-28.69 41-48 74-48h0c46 0 80 32 80 80v144' class='ionicon-fill-none ionicon-stroke-width'/><path d='M320 358.5c0 36 26.86 58 60 58 54 0 100-27 100-106v-15c-20 0-58 1-92 5-32.77 3.86-68 19-68 58z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const textSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Text</title><path d='M404.42 170c-41.23 0-78.07 24.06-93.85 61.3L304 246.52l40.33 17.18 6.56-15.22c8.9-21 29.91-34.55 53.53-34.55 34.55 0 57.76 23.27 57.76 57.91v2.3c-22.12.59-48.65 2.05-72.27 4.84-54.52 6.43-87.06 36.23-87.06 79.72 0 23.16 8.72 44 24.56 58.59C342.28 431 362.55 438 384.51 438c30.86 0 57.5-7.33 77.67-22.64V438H506V271.84C506 212.83 463.28 170 404.42 170zm-19.91 225.07c-17.46 0-37.85-9.84-37.85-36.37 0-10.65 3.82-18.11 12.38-24.19 8.34-5.92 21.12-10.15 36-11.9 21.78-2.57 46.31-3.95 67-4.52-2.16 51.49-27.57 76.98-77.53 76.98zM93.25 325.87h125.5L260.94 438H308L155 48 4 438h47.06zM156 160.71L202.25 282h-92.5z'/></svg>\"\nexport const thermometer = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thermometer</title><path d='M320 287.18V81c0-35.12-27.89-64.42-63-64.95a64.08 64.08 0 00-65 64v207.13a8 8 0 01-3.18 6.37A113.48 113.48 0 00144 384a112 112 0 00224 0 113.48 113.48 0 00-44.82-90.45 8 8 0 01-3.18-6.37zM254.07 432a48 48 0 01-22-89.54 16 16 0 008-13.84V112.45c0-8.61 6.62-16 15.23-16.43A16 16 0 01272 112v216.58a16.18 16.18 0 008.15 13.94A48 48 0 01254.07 432z'/></svg>\"\nexport const thermometerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thermometer</title><path d='M307.72 302.27a8 8 0 01-3.72-6.75V80a48 48 0 00-48-48h0a48 48 0 00-48 48v215.52a8 8 0 01-3.71 6.74 97.51 97.51 0 00-44.19 86.07A96 96 0 00352 384a97.49 97.49 0 00-44.28-81.73zM256 112v272' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='384' r='48'/></svg>\"\nexport const thermometerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thermometer</title><path d='M320 291.24V80a64 64 0 10-128 0v211.24A113.39 113.39 0 00144 384a112 112 0 00224 0 113.39 113.39 0 00-48-92.76zM256 432a48 48 0 01-16-93.26V96h32v242.74A48 48 0 01256 432z'/></svg>\"\nexport const thumbsDown = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thumbs Down</title><path d='M39.94 178l144.16 6.12c4.61.36 23.9 1.22 23.9 25.88 0 23.8-19.16 25.33-24.14 25.88L39.94 242C27.27 241.87 16 227.56 16 210s11.27-31.87 23.94-32zm141.45 131.66L74.65 318C62 318 48 301.31 48 284.12v-.33c0-16.33 11.14-29.63 24.88-29.79l108.45 1.72C208 259 208 275.16 208 282.12c0 22.88-21.8 27.14-26.61 27.54zM90.15 32l89.37 8.93C204 41.86 208 58.18 208 68.4c0 18.39-13.41 24.6-26.67 24.6l-91 3C75.78 95.78 64 81.51 64 64s11.68-31.66 26.15-32zm-34.36 71.5l126.4 6.22c9.39.63 25.81 3 25.81 26.36 0 12-4.35 25.62-25 27.53L55.79 167.5C42.65 167.35 32 154 32 136.08s10.65-32.43 23.79-32.58z'/><path d='M378.45 273.93A15.84 15.84 0 01386 272a15.93 15.93 0 00-7.51 1.91zM337.86 343.22l-.13.22a2.53 2.53 0 01.13-.22c20.5-35.51 30.36-55 33.82-62-3.47 7.06-13.34 26.51-33.82 62z' class='ionicon-fill-none'/><path d='M372.66 279.16l-1 2a16.29 16.29 0 016.77-7.26 16.48 16.48 0 00-5.77 5.26z'/><path d='M195.94 459.38C205.37 472.67 221 480 240 480a16 16 0 0014.31-8.85c3-6.06 15.25-24 28.19-42.9 18-26.33 40.35-59.08 55.23-84.81l.13-.22c20.48-35.49 30.35-54.94 33.82-62l1-2a16.48 16.48 0 015.79-5.23A15.93 15.93 0 01386 272h25.32A84.7 84.7 0 00496 187.3v-38.6A84.7 84.7 0 00411.31 64h-48.79a17.46 17.46 0 01-9.58-2.89C330 46.13 286.66 32 240 32c-7.45 0-14.19.14-20.27.38a8 8 0 00-6.2 12.68l.1.14C222.2 57.59 224 71 224 80a61.16 61.16 0 01-5.19 24.77 17.38 17.38 0 000 14.06 63.81 63.81 0 010 50.39 17.32 17.32 0 000 14 62.13 62.13 0 010 49.58 18.13 18.13 0 000 14.68A60.41 60.41 0 01224 273c0 8.2-2 21.3-8 31.18a15.66 15.66 0 00-1.14 13.65c.38 1 .76 2.06 1.13 3.17a24.8 24.8 0 01.86 11.57c-3 19.35-9.67 36.3-16.74 54.16-3.08 7.78-6.27 15.82-9.22 24.27-6.14 17.56-4.3 35.2 5.05 48.38z'/></svg>\"\nexport const thumbsDownOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thumbs Down</title><path d='M192 53.84S208 48 256 48s74 16 96 32h64a64 64 0 0164 64v48a64 64 0 01-64 64h-30a32.34 32.34 0 00-27.37 15.4S350 290.19 324 335.22 248 448 240 464c-29 0-43-22-34-47.71 10.28-29.39 23.71-54.38 27.46-87.09.54-4.78-3.14-12-8-12L96 307' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M96 241l80 2c20 1.84 32 12.4 32 30h0c0 17.6-14 28.84-32 30l-80 4c-17.6 0-32-16.4-32-34v-.17A32 32 0 0196 241zM64 176l112 2c18 .84 32 12.41 32 30h0c0 17.61-14 28.86-32 30l-112 2a32.1 32.1 0 01-32-32h0a32.1 32.1 0 0132-32zM112 48l64 3c21 1.84 32 11.4 32 29h0c0 17.6-14.4 30-32 30l-64 2a32.09 32.09 0 01-32-32h0a32.09 32.09 0 0132-32zM80 112l96 2c19 .84 32 12.4 32 30h0c0 17.6-13 28.84-32 30l-96 2a32.09 32.09 0 01-32-32h0a32.09 32.09 0 0132-32z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const thumbsDownSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thumbs Down</title><path d='M56 320l156.05 12-23 89.4c-6.08 26.6.7 41.87 22.39 48.62l34.69 9.85a4 4 0 004.4-1.72l129-202.34a8 8 0 016.81-3.81H496V64H378.39a48 48 0 01-15.18-2.46l-76.3-25.43a80 80 0 00-25.3-4.11H83.68c-19 0-31.5 13.52-35.23 32.16L16 206.42V280c0 22.06 18 38 40 40z'/><path d='M378.45 273.93A15.84 15.84 0 01386 272a15.93 15.93 0 00-7.51 1.91zM337.86 343.22l-.13.22a2.53 2.53 0 01.13-.22c20.5-35.51 30.36-55 33.82-62-3.47 7.06-13.34 26.51-33.82 62z' class='ionicon-fill-none'/><path d='M372.66 279.16l-1 2a16.29 16.29 0 016.77-7.26 16.48 16.48 0 00-5.77 5.26z'/></svg>\"\nexport const thumbsUp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thumbs Up</title><path d='M472.06 334l-144.16-6.13c-4.61-.36-23.9-1.21-23.9-25.87 0-23.81 19.16-25.33 24.14-25.88L472.06 270c12.67.13 23.94 14.43 23.94 32s-11.27 31.87-23.94 32zM330.61 202.33L437.35 194C450 194 464 210.68 464 227.88v.33c0 16.32-11.14 29.62-24.88 29.79l-108.45-1.73C304 253 304 236.83 304 229.88c0-22.88 21.8-27.15 26.61-27.55zM421.85 480l-89.37-8.93C308 470.14 304 453.82 304 443.59c0-18.38 13.41-24.6 26.67-24.6l91-3c14.54.23 26.32 14.5 26.32 32s-11.67 31.67-26.14 32.01zm34.36-71.5l-126.4-6.21c-9.39-.63-25.81-3-25.81-26.37 0-12 4.35-25.61 25-27.53l127.19-3.88c13.16.14 23.81 13.49 23.81 31.4s-10.65 32.43-23.79 32.58z'/><path d='M133.55 238.06A15.85 15.85 0 01126 240a15.82 15.82 0 007.51-1.92zM174.14 168.78l.13-.23-.13.23c-20.5 35.51-30.36 54.95-33.82 62 3.47-7.07 13.34-26.51 33.82-62z' class='ionicon-fill-none'/><path d='M139.34 232.84l1-2a16.27 16.27 0 01-6.77 7.25 16.35 16.35 0 005.77-5.25z'/><path d='M316.06 52.62C306.63 39.32 291 32 272 32a16 16 0 00-14.31 8.84c-3 6.07-15.25 24-28.19 42.91-18 26.33-40.35 59.07-55.23 84.8l-.13.23c-20.48 35.49-30.35 54.93-33.82 62l-1 2a16.35 16.35 0 01-5.79 5.22 15.82 15.82 0 01-7.53 2h-25.31A84.69 84.69 0 0016 324.69v38.61a84.69 84.69 0 0084.69 84.7h48.79a17.55 17.55 0 019.58 2.89C182 465.87 225.34 480 272 480c7.45 0 14.19-.14 20.27-.38a8 8 0 006.2-12.68l-.1-.14C289.8 454.41 288 441 288 432a61.2 61.2 0 015.19-24.77 17.36 17.36 0 000-14.05 63.81 63.81 0 010-50.39 17.32 17.32 0 000-14 62.15 62.15 0 010-49.59 18.13 18.13 0 000-14.68A60.33 60.33 0 01288 239c0-8.2 2-21.3 8-31.19a15.63 15.63 0 001.14-13.64c-.38-1-.76-2.07-1.13-3.17a24.84 24.84 0 01-.86-11.58c3-19.34 9.67-36.29 16.74-54.16 3.08-7.78 6.27-15.82 9.22-24.26 6.14-17.57 4.3-35.2-5.05-48.38z'/></svg>\"\nexport const thumbsUpOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thumbs Up</title><path d='M320 458.16S304 464 256 464s-74-16-96-32H96a64 64 0 01-64-64v-48a64 64 0 0164-64h30a32.34 32.34 0 0027.37-15.4S162 221.81 188 176.78 264 64 272 48c29 0 43 22 34 47.71-10.28 29.39-23.71 54.38-27.46 87.09-.54 4.78 3.14 12 7.95 12L416 205' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M416 271l-80-2c-20-1.84-32-12.4-32-30h0c0-17.6 14-28.84 32-30l80-4c17.6 0 32 16.4 32 34v.17A32 32 0 01416 271zM448 336l-112-2c-18-.84-32-12.41-32-30h0c0-17.61 14-28.86 32-30l112-2a32.1 32.1 0 0132 32h0a32.1 32.1 0 01-32 32zM400 464l-64-3c-21-1.84-32-11.4-32-29h0c0-17.6 14.4-30 32-30l64-2a32.09 32.09 0 0132 32h0a32.09 32.09 0 01-32 32zM432 400l-96-2c-19-.84-32-12.4-32-30h0c0-17.6 13-28.84 32-30l96-2a32.09 32.09 0 0132 32h0a32.09 32.09 0 01-32 32z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const thumbsUpSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thumbs Up</title><path d='M456 192l-156-12 23-89.4c6-26.6-.78-41.87-22.47-48.6l-34.69-9.85a4 4 0 00-4.4 1.72l-129 202.34a8 8 0 01-6.81 3.81H16V448h117.61a48 48 0 0115.18 2.46l76.3 25.43a80 80 0 0025.3 4.11h177.93c19 0 31.5-13.52 35.23-32.16L496 305.58V232c0-22.06-18-38-40-40z'/></svg>\"\nexport const thunderstorm = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thunderstorm</title><path d='M96 416a16 16 0 01-14.3-23.16l24-48a16 16 0 0128.62 14.32l-24 48A16 16 0 0196 416zM120 480a16 16 0 01-14.3-23.16l16-32a16 16 0 0128.62 14.32l-16 32A16 16 0 01120 480zM376 416a16 16 0 01-14.3-23.16l24-48a16 16 0 0128.62 14.32l-24 48A16 16 0 01376 416zM400 480a16 16 0 01-14.3-23.16l16-32a16 16 0 0128.62 14.32l-16 32A16 16 0 01400 480z'/><path d='M405.84 136.9a151.25 151.25 0 00-47.6-81.9 153 153 0 00-241.81 51.86C60.5 110.16 16 156.65 16 213.33 16 272.15 63.91 320 122.8 320h66.31l-12.89 77.37A16 16 0 00192 416h32v64a16 16 0 0029 9.3l80-112a16 16 0 00-13-25.3h-27.51l8-32h103.84a91.56 91.56 0 001.51-183.1z'/></svg>\"\nexport const thunderstormOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thunderstorm</title><path stroke-linecap='round' stroke-linejoin='round' d='M120 352l-24 48M136 432l-16 32M400 352l-24 48M416 432l-16 32M208 304l-16 96h48v80l80-112h-48l16-64M404.33 152.89H392.2C384.71 84.85 326.14 32 256 32a136.39 136.39 0 00-128.63 90.67h-4.57c-49.94 0-90.8 40.8-90.8 90.66h0C32 263.2 72.86 304 122.8 304h281.53C446 304 480 270 480 228.44h0c0-41.55-34-75.55-75.67-75.55z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const thunderstormSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Thunderstorm</title><path d='M405.84 136.9a151.25 151.25 0 00-47.6-81.9 153 153 0 00-241.81 51.86C60.5 110.16 16 156.65 16 213.33 16 272.15 63.91 320 122.8 320h72.31L176 416h48v80l112-144h-43.51l8-32h103.84a91.56 91.56 0 001.51-183.1z'/><path d='M74.53 407.177l38.32-76.622 28.62 14.313-38.32 76.623zM98.52 471.189l30.318-60.622 28.62 14.313-30.317 60.622zM354.541 407.189l38.32-76.623 28.62 14.314-38.32 76.622zM378.542 471.2l30.317-60.622 28.62 14.314-30.317 60.621z'/></svg>\"\nexport const ticket = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ticket</title><path d='M490.18 181.4l-44.13-44.13a20 20 0 00-27-1 30.81 30.81 0 01-41.68-1.6 30.81 30.81 0 01-1.6-41.67 20 20 0 00-1-27L330.6 21.82a19.91 19.91 0 00-28.13 0l-70.35 70.34a39.87 39.87 0 00-9.57 15.5 7.71 7.71 0 01-4.83 4.83 39.78 39.78 0 00-15.5 9.58l-180.4 180.4a19.91 19.91 0 000 28.13L66 374.73a20 20 0 0027 1 30.69 30.69 0 0143.28 43.28 20 20 0 001 27l44.13 44.13a19.91 19.91 0 0028.13 0l180.4-180.4a39.82 39.82 0 009.58-15.49 7.69 7.69 0 014.84-4.84 39.84 39.84 0 0015.49-9.57l70.34-70.35a19.91 19.91 0 00-.01-28.09zm-228.37-29.65a16 16 0 01-22.63 0l-11.51-11.51a16 16 0 0122.63-22.62l11.51 11.5a16 16 0 010 22.63zm44 44a16 16 0 01-22.62 0l-11-11a16 16 0 1122.63-22.63l11 11a16 16 0 01.01 22.66zm44 44a16 16 0 01-22.63 0l-11-11a16 16 0 0122.63-22.62l11 11a16 16 0 01.05 22.67zm44.43 44.54a16 16 0 01-22.63 0l-11.44-11.5a16 16 0 1122.68-22.57l11.45 11.49a16 16 0 01-.01 22.63z'/></svg>\"\nexport const ticketOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ticket</title><path stroke-miterlimit='10' d='M366.05 146a46.7 46.7 0 01-2.42-63.42 3.87 3.87 0 00-.22-5.26l-44.13-44.18a3.89 3.89 0 00-5.5 0l-70.34 70.34a23.62 23.62 0 00-5.71 9.24h0a23.66 23.66 0 01-14.95 15h0a23.7 23.7 0 00-9.25 5.71L33.14 313.78a3.89 3.89 0 000 5.5l44.13 44.13a3.87 3.87 0 005.26.22 46.69 46.69 0 0165.84 65.84 3.87 3.87 0 00.22 5.26l44.13 44.13a3.89 3.89 0 005.5 0l180.4-180.39a23.7 23.7 0 005.71-9.25h0a23.66 23.66 0 0114.95-15h0a23.62 23.62 0 009.24-5.71l70.34-70.34a3.89 3.89 0 000-5.5l-44.13-44.13a3.87 3.87 0 00-5.26-.22 46.7 46.7 0 01-63.42-2.32z' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-miterlimit='10' stroke-linecap='round' d='M250.5 140.44l-16.51-16.51M294.52 184.46l-11.01-11M338.54 228.49l-11-11.01M388.07 278.01l-16.51-16.51' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const ticketSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Ticket</title><path d='M426.24 127.72l-10.94 10.94a29.67 29.67 0 01-42-42l10.94-10.94L314.52 16l-88 88-4 12.09-12.09 4L16 314.52l69.76 69.76 10.94-10.94a29.67 29.67 0 0142 42l-10.94 10.94L197.48 496l194.4-194.4 4-12.09 12.09-4 88-88zm-208.56 5.43l21.87-21.87 33 33-21.88 21.87zm43 43l21.88-21.88 32.52 32.52-21.88 21.88zm42.56 42.56l21.88-21.88 32.52 32.52-21.84 21.93zm75.57 75.56l-33-33 21.87-21.88 33 33z'/></svg>\"\nexport const time = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Time</title><path d='M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48zm96 240h-96a16 16 0 01-16-16V128a16 16 0 0132 0v128h80a16 16 0 010 32z'/></svg>\"\nexport const timeOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Time</title><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 128v144h96' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const timeSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Time</title><path d='M256 48C141.13 48 48 141.13 48 256c0 114.69 93.32 208 208 208 114.86 0 208-93.14 208-208 0-114.69-93.31-208-208-208zm108 240H244a4 4 0 01-4-4V116a4 4 0 014-4h24a4 4 0 014 4v140h92a4 4 0 014 4v24a4 4 0 01-4 4z'/></svg>\"\nexport const timer = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Timer</title><path d='M256 48C141.12 48 48 141.12 48 256s93.12 208 208 208 208-93.12 208-208S370.88 48 256 48zm-82.33 114.34l105 71a32.5 32.5 0 01-37.25 53.26 33.21 33.21 0 01-8-8l-71-105a8.13 8.13 0 0111.32-11.32zM256 432c-97 0-176-78.95-176-176a174.55 174.55 0 0153.87-126.72 14.15 14.15 0 1119.64 20.37A146.53 146.53 0 00108.3 256c0 81.44 66.26 147.7 147.7 147.7S403.7 337.44 403.7 256c0-76.67-58.72-139.88-133.55-147v55a14.15 14.15 0 11-28.3 0V94.15A14.15 14.15 0 01256 80c97.05 0 176 79 176 176s-78.95 176-176 176z'/></svg>\"\nexport const timerOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Timer</title><path d='M112.91 128A191.85 191.85 0 0064 254c-1.18 106.35 85.65 193.8 192 194 106.2.2 192-85.83 192-192 0-104.54-83.55-189.61-187.5-192a4.36 4.36 0 00-4.5 4.37V152' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M233.38 278.63l-79-113a8.13 8.13 0 0111.32-11.32l113 79a32.5 32.5 0 01-37.25 53.26 33.21 33.21 0 01-8.07-7.94z'/></svg>\"\nexport const timerSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Timer</title><path d='M256 48C141.12 48 48 141.12 48 256s93.12 208 208 208 208-93.12 208-208S370.88 48 256 48zm0 384c-97 0-176-78.95-176-176a174.55 174.55 0 0153.87-126.72L279 233l-19 30-125-91c-13 23-26.7 46-26.7 84 0 81.44 66.26 147.7 147.7 147.7S403.7 337.44 403.7 256c0-76.67-58.72-139.88-133.55-147v55h-28.3V79.89c4.24.07 8.94.11 14.15.11 97.05 0 176 79 176 176s-78.95 176-176 176z'/></svg>\"\nexport const today = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Today</title><path d='M416 64h-16V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00368 48v16H144V48.45c0-8.61-6.62-16-15.23-16.43A16 16 0 00112 48v16H96a64 64 0 00-64 64v12a4 4 0 004 4h440a4 4 0 004-4v-12a64 64 0 00-64-64zM477 176H35a3 3 0 00-3 3v237a64 64 0 0064 64h320a64 64 0 0064-64V179a3 3 0 00-3-3zM224 307.43A28.57 28.57 0 01195.43 336h-70.86A28.57 28.57 0 0196 307.43v-70.86A28.57 28.57 0 01124.57 208h70.86A28.57 28.57 0 01224 236.57z'/></svg>\"\nexport const todayOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Today</title><rect stroke-linejoin='round' x='48' y='80' width='416' height='384' rx='48' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' stroke-linecap='round' d='M128 48v32M384 48v32' class='ionicon-fill-none ionicon-stroke-width'/><rect stroke-linejoin='round' stroke-linecap='round' x='112' y='224' width='96' height='96' rx='13' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' stroke-linecap='round' d='M464 160H48' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const todaySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Today</title><path d='M32 456a24 24 0 0024 24h400a24 24 0 0024-24V176H32zm80-238.86a9.14 9.14 0 019.14-9.14h109.72a9.14 9.14 0 019.14 9.14v109.72a9.14 9.14 0 01-9.14 9.14H121.14a9.14 9.14 0 01-9.14-9.14zM456 64h-55.92V32h-48v32H159.92V32h-48v32H56a23.8 23.8 0 00-24 23.77V144h448V87.77A23.8 23.8 0 00456 64z'/></svg>\"\nexport const toggle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Toggle</title><path d='M368 112H144C64.6 112 0 176.6 0 256s64.6 144 144 144h224c79.4 0 144-64.6 144-144s-64.6-144-144-144zm0 256a112 112 0 11112-112 112.12 112.12 0 01-112 112z'/></svg>\"\nexport const toggleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Toggle</title><circle cx='368' cy='256' r='128' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='16' y='128' width='480' height='256' rx='128' ry='128' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const toggleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Toggle</title><path d='M368 112H144a144 144 0 000 288h224a144 144 0 000-288zm0 230a86 86 0 1186-86 85.88 85.88 0 01-86 86z'/></svg>\"\nexport const trailSign = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trail Sign</title><path d='M491.31 324.69L432 265.37a31.8 31.8 0 00-22.63-9.37H272v-32h144a32 32 0 0032-32V96a32 32 0 00-32-32H272V48a16 16 0 00-32 0v16H102.63A31.8 31.8 0 0080 73.37l-59.31 59.32a16 16 0 000 22.62L80 214.63a31.8 31.8 0 0022.63 9.37H240v32H96a32 32 0 00-32 32v96a32 32 0 0032 32h144v48a16 16 0 0032 0v-48h137.37a31.8 31.8 0 0022.63-9.37l59.31-59.32a16 16 0 000-22.62z'/></svg>\"\nexport const trailSignOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trail Sign</title><path stroke-linecap='round' stroke-linejoin='round' d='M256 400v64M256 208v64M256 48v32M416 208H102.63a16 16 0 01-11.32-4.69L32 144l59.31-59.31A16 16 0 01102.63 80H416a16 16 0 0116 16v96a16 16 0 01-16 16zM96 400h313.37a16 16 0 0011.32-4.69L480 336l-59.31-59.31a16 16 0 00-11.32-4.69H96a16 16 0 00-16 16v96a16 16 0 0016 16z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trailSignSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trail Sign</title><path d='M502.63 336l-80-80H278v-32h170V64H278V32h-44v32H89.37l-80 80 80 80H234v32H64v160h170v64h44v-64h144.63z'/></svg>\"\nexport const train = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Train</title><ellipse cx='256' cy='304' rx='32.05' ry='31.94' transform='rotate(-45 256.001 304)'/><path d='M352 32h-15a10 10 0 01-7.87-3.78A31.94 31.94 0 00304 16h-96a32 32 0 00-26.11 13.52A6 6 0 01177 32h-17c-36.81 0-64 28.84-64 64v255c0 23.27 25.6 42.06 83 60.94a753 753 0 0073.77 19.73 16 16 0 006.46 0A753 753 0 00333 411.94c57.4-18.88 83-37.67 83-60.94V96a64 64 0 00-64-64zm-168 96h144a8 8 0 018 8v48a8 8 0 01-8 8H184a8 8 0 01-8-8v-48a8 8 0 018-8zm76.18 239.87a64 64 0 1159.69-59.69 64.07 64.07 0 01-59.69 59.69z'/><path d='M395.31 468.69L347.63 421c-6.09-6.1-16-6.66-22.38-.86a16 16 0 00-.56 23.16l4.68 4.69H182.63l4.36-4.37c6.1-6.09 6.66-16 .86-22.38a16 16 0 00-23.16-.56l-48 48a16 16 0 1022.62 22.62l11.32-11.3h210.74l11.32 11.31a16 16 0 0022.62-22.62z'/></svg>\"\nexport const trainOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Train</title><path d='M344 48h-24a16 16 0 00-16-16h-96a16 16 0 00-16 16h-24a56.16 56.16 0 00-56 56v247c0 35.3 144 65 144 65s144-29.7 144-65V104a56 56 0 00-56-56zm-88 304a48 48 0 1148-48 48 48 0 01-48 48zm96-160a16 16 0 01-16 16H176a16 16 0 01-16-16v-64a16 16 0 0116-16h160a16 16 0 0116 16zM144 464h224M336 432l48 48M176 432l-48 48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trainSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Train</title><path d='M384 32h-64a16 16 0 00-16-16h-96a16 16 0 00-16 16h-64c-16 0-32 16-32 32v288c0 23.92 160 80 160 80s160-56.74 160-80V64c0-16-16-32-32-32zM256 352a48 48 0 1148-48 48 48 0 01-48 48zm112-152a8 8 0 01-8 8H152a8 8 0 01-8-8v-80a8 8 0 018-8h208a8 8 0 018 8z'/><path d='M314 432l15.32 16H182.58L198 432l-32-13-76.62 77h45.2l16-16h210.74l16 16h45.3l-76.36-77.75L314 432z'/></svg>\"\nexport const transgender = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Transgender</title><path d='M458 32h-68a22 22 0 000 44h14.89l-59.57 59.57a149.69 149.69 0 00-178.64 0l-7.57-7.57 26.45-26.44a22 22 0 00-31.12-31.12L128 96.89 107.11 76H122a22 22 0 000-44H54a22 22 0 00-22 22v68a22 22 0 0044 0v-14.89L96.89 128l-26.42 26.42a22 22 0 1031.11 31.11L128 159.11l7.57 7.57A149.19 149.19 0 00106 256c0 82.71 67.29 150 150 150a149.2 149.2 0 0089.46-29.67L369 399.9l-26.54 26.54a22 22 0 0031.12 31.12l26.49-26.5 42.37 42.48a22 22 0 0031.16-31.08L431.17 400l26.39-26.39a22 22 0 00-31.12-31.12l-26.35 26.35-23.55-23.62a149.68 149.68 0 00-.11-178.49L436 107.11V122a22 22 0 0044 0V54a22 22 0 00-22-22zM150 256a106 106 0 11106 106 106.12 106.12 0 01-106-106z'/></svg>\"\nexport const transgenderOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Transgender</title><circle cx='256' cy='256' r='128' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M448 352l-96 96M176 80l-95.98 95.98M464 128V48h-80M48 128V48h80M464 48L346.5 165.5M48 48l117.49 117.49M464 464L346.65 346.37' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const transgenderSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Transgender</title><path d='M480 448.94l-48.94-49.08L464 366.92l-31.1-31.11-32.9 32.9-23.55-23.61a149.64 149.64 0 00-.1-178.45l59.55-59.56V144h44V32h-112v44h36.87l-59.55 59.55a149.65 149.65 0 00-178.59 0l-7.55-7.55 33-33L161 63.88l-33 33L107.09 76H144V32H32v112h44v-36.91L96.87 128l-33 33L95 192.05l33-33 7.56 7.57A149.18 149.18 0 00106 255.94c0 82.69 67.27 150 150 150a149.12 149.12 0 0089.44-29.67l23.51 23.58-33.14 33.05 31.11 31.1 33-33 48.9 49zm-330-193a106 106 0 11106 106 106.09 106.09 0 01-106-106z'/></svg>\"\nexport const trash = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trash</title><path d='M296 64h-80a7.91 7.91 0 00-8 8v24h96V72a7.91 7.91 0 00-8-8z' class='ionicon-fill-none'/><path d='M432 96h-96V72a40 40 0 00-40-40h-80a40 40 0 00-40 40v24H80a16 16 0 000 32h17l19 304.92c1.42 26.85 22 47.08 48 47.08h184c26.13 0 46.3-19.78 48-47l19-305h17a16 16 0 000-32zM192.57 416H192a16 16 0 01-16-15.43l-8-224a16 16 0 1132-1.14l8 224A16 16 0 01192.57 416zM272 400a16 16 0 01-32 0V176a16 16 0 0132 0zm32-304h-96V72a7.91 7.91 0 018-8h80a7.91 7.91 0 018 8zm32 304.57A16 16 0 01320 416h-.58A16 16 0 01304 399.43l8-224a16 16 0 1132 1.14z'/></svg>\"\nexport const trashBin = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trash Bin</title><rect x='32' y='48' width='448' height='80' rx='32' ry='32'/><path d='M74.45 160a8 8 0 00-8 8.83l26.31 252.56a1.5 1.5 0 000 .22A48 48 0 00140.45 464h231.09a48 48 0 0047.67-42.39v-.21l26.27-252.57a8 8 0 00-8-8.83zm248.86 180.69a16 16 0 11-22.63 22.62L256 318.63l-44.69 44.68a16 16 0 01-22.63-22.62L233.37 296l-44.69-44.69a16 16 0 0122.63-22.62L256 273.37l44.68-44.68a16 16 0 0122.63 22.62L278.62 296z'/></svg>\"\nexport const trashBinOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trash Bin</title><path d='M432 144l-28.67 275.74A32 32 0 01371.55 448H140.46a32 32 0 01-31.78-28.26L80 144' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='32' y='64' width='448' height='80' rx='16' ry='16' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M312 240L200 352M312 352L200 240' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trashBinSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trash Bin</title><path d='M337.46 240L312 214.54l-56 56-56-56L174.54 240l56 56-56 56L200 377.46l56-56 56 56L337.46 352l-56-56 56-56z' class='ionicon-fill-none'/><path d='M337.46 240L312 214.54l-56 56-56-56L174.54 240l56 56-56 56L200 377.46l56-56 56 56L337.46 352l-56-56 56-56z' class='ionicon-fill-none'/><path d='M64 160l29.74 282.51A24 24 0 00117.61 464h276.78a24 24 0 0023.87-21.49L448 160zm248 217.46l-56-56-56 56L174.54 352l56-56-56-56L200 214.54l56 56 56-56L337.46 240l-56 56 56 56z'/><rect x='32' y='48' width='448' height='80' rx='12' ry='12'/></svg>\"\nexport const trashOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trash</title><path d='M112 112l20 320c.95 18.49 14.4 32 32 32h184c17.67 0 30.87-13.51 32-32l20-320' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M80 112h352' class='ionicon-stroke-width'/><path d='M192 112V72h0a23.93 23.93 0 0124-24h80a23.93 23.93 0 0124 24h0v40M256 176v224M184 176l8 224M328 176l-8 224' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trashSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trash</title><path d='M296 64h-80a7.91 7.91 0 00-8 8v24h96V72a7.91 7.91 0 00-8-8z' class='ionicon-fill-none'/><path d='M292 64h-72a4 4 0 00-4 4v28h80V68a4 4 0 00-4-4z' class='ionicon-fill-none'/><path d='M447.55 96H336V48a16 16 0 00-16-16H192a16 16 0 00-16 16v48H64.45L64 136h33l20.09 314A32 32 0 00149 480h214a32 32 0 0031.93-29.95L415 136h33zM176 416l-9-256h33l9 256zm96 0h-32V160h32zm24-320h-80V68a4 4 0 014-4h72a4 4 0 014 4zm40 320h-33l9-256h33z'/></svg>\"\nexport const trendingDown = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trending Down</title><path stroke-linecap='round' stroke-linejoin='round' d='M352 368h112V256' class='ionicon-fill-none ionicon-stroke-width'/><path d='M48 144l121.37 121.37a32 32 0 0045.26 0l50.74-50.74a32 32 0 0145.26 0L448 352' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trendingDownOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trending Down</title><path stroke-linecap='round' stroke-linejoin='round' d='M352 368h112V256' class='ionicon-fill-none ionicon-stroke-width'/><path d='M48 144l121.37 121.37a32 32 0 0045.26 0l50.74-50.74a32 32 0 0145.26 0L448 352' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trendingDownSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trending Down</title><path stroke-linecap='square' stroke-miterlimit='10' d='M352 368h112V256' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M48 144l144 144 96-96 160 160' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trendingUp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trending Up</title><path stroke-linecap='round' stroke-linejoin='round' d='M352 144h112v112' class='ionicon-fill-none ionicon-stroke-width'/><path d='M48 368l121.37-121.37a32 32 0 0145.26 0l50.74 50.74a32 32 0 0045.26 0L448 160' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trendingUpOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trending Up</title><path stroke-linecap='round' stroke-linejoin='round' d='M352 144h112v112' class='ionicon-fill-none ionicon-stroke-width'/><path d='M48 368l121.37-121.37a32 32 0 0145.26 0l50.74 50.74a32 32 0 0045.26 0L448 160' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trendingUpSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trending Up</title><path stroke-linecap='square' stroke-miterlimit='10' d='M352 144h112v112' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='square' stroke-miterlimit='10' d='M48 368l144-144 96 96 160-160' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const triangle = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Triangle</title><path d='M464 464H48a16 16 0 01-14.07-23.62l208-384a16 16 0 0128.14 0l208 384A16 16 0 01464 464z'/></svg>\"\nexport const triangleOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Triangle</title><path stroke-linecap='round' stroke-linejoin='round' d='M48 448L256 64l208 384H48z' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const triangleSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Triangle</title><path d='M256 32L20 464h472L256 32z'/></svg>\"\nexport const trophy = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trophy</title><path d='M464 80h-60.1a4 4 0 01-4-4V63.92a32 32 0 00-32-31.92l-223.79.26a32 32 0 00-31.94 31.93V76a4 4 0 01-4 4H48a16 16 0 00-16 16v16c0 54.53 30 112.45 76.52 125.35a7.82 7.82 0 015.55 5.9c5.77 26.89 23.52 52.5 51.41 73.61 20.91 15.83 45.85 27.5 68.27 32.48a8 8 0 016.25 7.8V444a4 4 0 01-4 4h-59.55c-8.61 0-16 6.62-16.43 15.23A16 16 0 00176 480h159.55c8.61 0 16-6.62 16.43-15.23A16 16 0 00336 448h-60a4 4 0 01-4-4v-86.86a8 8 0 016.25-7.8c22.42-5 47.36-16.65 68.27-32.48 27.89-21.11 45.64-46.72 51.41-73.61a7.82 7.82 0 015.55-5.9C450 224.45 480 166.53 480 112V96a16 16 0 00-16-16zM112 198.22a4 4 0 01-6 3.45c-10.26-6.11-17.75-15.37-22.14-21.89-11.91-17.69-19-40.67-19.79-63.63a4 4 0 014-4.15h40a4 4 0 014 4c-.02 27.45-.07 58.87-.07 82.22zm316.13-18.44c-4.39 6.52-11.87 15.78-22.13 21.89a4 4 0 01-6-3.46c0-26.51 0-56.63-.05-82.21a4 4 0 014-4h40a4 4 0 014 4.15c-.79 22.96-7.9 45.94-19.81 63.63z'/></svg>\"\nexport const trophyOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trophy</title><path stroke-linecap='round' stroke-linejoin='round' d='M176 464h160M256 464V336M384 224c0-50.64-.08-134.63-.12-160a16 16 0 00-16-16l-223.79.26a16 16 0 00-16 15.95c0 30.58-.13 129.17-.13 159.79 0 64.28 83 112 128 112S384 288.28 384 224z' class='ionicon-fill-none ionicon-stroke-width'/><path d='M128 96H48v16c0 55.22 33.55 112 80 112M384 96h80v16c0 55.22-33.55 112-80 112' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const trophySharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Trophy</title><path d='M399.9 80V32H112v48H32v38c0 32 9.5 62.79 26.76 86.61 13.33 18.4 34.17 31.1 52.91 37.21 5.44 29.29 20.2 57.13 50.19 79.83 22 16.66 48.45 28.87 72.14 33.86V436h-74v44h192v-44h-74v-80.49c23.69-5 50.13-17.2 72.14-33.86 30-22.7 44.75-50.54 50.19-79.83 18.74-6.11 39.58-18.81 52.91-37.21C470.5 180.79 480 150 480 118V80zM94.4 178.8c-10.68-14.68-17.17-34.4-18.24-54.8H112v67.37c-3.94-1.14-12.92-6.12-17.6-12.57zm323.2 0c-4.6 6.61-11.6 12.58-17.6 12.58 0-22.4 0-46.29-.05-67.38h35.9c-1.08 20.4-7.85 39.9-18.25 54.8z'/></svg>\"\nexport const tv = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tv</title><path d='M447.86 384H64.14A48.2 48.2 0 0116 335.86V128.14A48.2 48.2 0 0164.14 80h383.72A48.2 48.2 0 01496 128.14v207.72A48.2 48.2 0 01447.86 384z'/><path stroke-linecap='round' stroke-miterlimit='10' d='M128 416h256' class='ionicon-stroke-width'/></svg>\"\nexport const tvOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tv</title><rect x='32' y='96' width='448' height='272' rx='32.14' ry='32.14' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M128 416h256' class='ionicon-stroke-width'/></svg>\"\nexport const tvSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Tv</title><path d='M488 384H24a8 8 0 01-8-8V88a8 8 0 018-8h464a8 8 0 018 8v288a8 8 0 01-8 8z'/><rect x='112' y='400' width='288' height='32' rx='4' ry='4'/></svg>\"\nexport const umbrella = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Umbrella</title><path d='M414.39 113.61a222.26 222.26 0 00-136.33-64.54 8.09 8.09 0 01-6.88-5.62 15.79 15.79 0 00-30.36 0 8.09 8.09 0 01-6.88 5.62A224 224 0 0032 271.52a16.41 16.41 0 007.24 13.87 16 16 0 0020.07-2.08 51.89 51.89 0 0173.31-.06 15.94 15.94 0 0022.6.15 62.59 62.59 0 0181.49-5.87 8.24 8.24 0 013.29 6.59v147.42c0 8.6-6.6 16-15.19 16.44A16 16 0 01208 432a16 16 0 00-16.29-16c-9 .16-15.9 8.11-15.7 17.1a48.06 48.06 0 0047.37 46.9c26.88.34 48.62-21.93 48.62-48.81V284.12a8.24 8.24 0 013.29-6.59 62.59 62.59 0 0181.4 5.78 16 16 0 0022.62 0 51.91 51.91 0 0173.38 0 16 16 0 0019.54 2.41 16.4 16.4 0 007.77-14.21 222.54 222.54 0 00-65.61-157.9z'/></svg>\"\nexport const umbrellaOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Umbrella</title><path d='M256 272v160a32 32 0 01-32 32h0a32 32 0 01-32-32M464 272c0-114.88-93.12-208-208-208S48 157.12 48 272h0a67.88 67.88 0 0196 0h0a78.28 78.28 0 01102.31-7.27L256 272l9.69-7.27A78.28 78.28 0 01368 272h0a67.88 67.88 0 0196 0zM256 64V48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const umbrellaSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Umbrella</title><path d='M128.93 280l-.26-.3c-.9-.74-1.83-1.43-2.77-2.1zM383.08 280l2.62-2.12c-.79.58-1.57 1.17-2.34 1.79z'/><path d='M463.14 186.44A224.55 224.55 0 00272 48.57V32h-32v16.57A223.58 223.58 0 0032 272v22.52l12.25-11.21a62.63 62.63 0 0181.43-5.88l.22.17c.94.67 1.87 1.36 2.77 2.1q2.09 1.69 4 3.61L144 294.63l11.31-11.32a62.59 62.59 0 0181.4-5.78L240 280v152a16 16 0 01-32 0v-16h-32v16a48 48 0 0096 0V280l3.29-2.47a62.59 62.59 0 0181.4 5.78L368 294.63l11.31-11.32q1.95-1.94 4.05-3.64c.77-.62 1.55-1.21 2.34-1.79l.26-.21c24.63-18.47 60-16.13 81.81 5.64l12.23 11.2V272a223.62 223.62 0 00-16.86-85.56z'/></svg>\"\nexport const unlink = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Unlink</title><path d='M200.66 352H144a96 96 0 010-192h55.41M312.59 160H368a96 96 0 010 192h-56.66' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' class='ionicon-fill-none'/></svg>\"\nexport const unlinkOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Unlink</title><path d='M208 352h-64a96 96 0 010-192h64M304 160h64a96 96 0 010 192h-64' stroke-linecap='round' stroke-linejoin='round' stroke-width='36' class='ionicon-fill-none'/></svg>\"\nexport const unlinkSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Unlink</title><path d='M200.66 352H144a96 96 0 010-192h55.41M312.59 160H368a96 96 0 010 192h-56.66' stroke-linecap='square' stroke-linejoin='round' stroke-width='48' class='ionicon-fill-none'/></svg>\"\nexport const videocam = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Videocam</title><path d='M464 384.39a32 32 0 01-13-2.77 15.77 15.77 0 01-2.71-1.54l-82.71-58.22A32 32 0 01352 295.7v-79.4a32 32 0 0113.58-26.16l82.71-58.22a15.77 15.77 0 012.71-1.54 32 32 0 0145 29.24v192.76a32 32 0 01-32 32zM268 400H84a68.07 68.07 0 01-68-68V180a68.07 68.07 0 0168-68h184.48A67.6 67.6 0 01336 179.52V332a68.07 68.07 0 01-68 68z'/></svg>\"\nexport const videocamOff = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Videocam Off</title><path d='M336 179.52A67.52 67.52 0 00268.48 112h-79.2a4 4 0 00-2.82 6.83l142.71 142.71a4 4 0 006.83-2.82zM16 180v152a68 68 0 0068 68h184a67.66 67.66 0 0042.84-15.24 4 4 0 00.33-6L54.41 122a4 4 0 00-4.87-.62A68 68 0 0016 180zM464 384.39a32 32 0 01-13-2.77 15.77 15.77 0 01-2.71-1.54l-82.71-58.22A32 32 0 01352 295.7v-79.4a32 32 0 0113.58-26.16l82.71-58.22a15.77 15.77 0 012.71-1.54 32 32 0 0145 29.24v192.76a32 32 0 01-32 32z'/><path stroke-linecap='round' stroke-miterlimit='10' d='M416 416L80 80' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const videocamOffOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Videocam Off</title><path stroke-linecap='round' stroke-linejoin='round' d='M374.79 308.78L457.5 367a16 16 0 0022.5-14.62V159.62A16 16 0 00457.5 145l-82.71 58.22A16 16 0 00368 216.3v79.4a16 16 0 006.79 13.08z' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M50.19 140.57A51.94 51.94 0 0032 180v152a52.15 52.15 0 0052 52h184a51.6 51.6 0 0022-4.9M208 128h60.48A51.68 51.68 0 01320 179.52V248M416 416L80 80' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const videocamOffSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Videocam Off</title><path d='M57.376 79.998l22.627-22.627 358.63 358.63-22.627 22.628zM32 112a16 16 0 00-16 16v256a16 16 0 0016 16h288a15.89 15.89 0 009.34-3l-285-285zM336 208v-80a16 16 0 00-16-16H179.63l245.44 245.44L496 400V112z'/></svg>\"\nexport const videocamOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Videocam</title><path d='M374.79 308.78L457.5 367a16 16 0 0022.5-14.62V159.62A16 16 0 00457.5 145l-82.71 58.22A16 16 0 00368 216.3v79.4a16 16 0 006.79 13.08z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M268 384H84a52.15 52.15 0 01-52-52V180a52.15 52.15 0 0152-52h184.48A51.68 51.68 0 01320 179.52V332a52.15 52.15 0 01-52 52z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const videocamSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Videocam</title><path d='M336 208v-80a16 16 0 00-16-16H32a16 16 0 00-16 16v256a16 16 0 0016 16h288a16 16 0 0016-16v-80l160 96V112z'/></svg>\"\nexport const volumeHigh = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume High</title><path d='M232 416a23.88 23.88 0 01-14.2-4.68 8.27 8.27 0 01-.66-.51L125.76 336H56a24 24 0 01-24-24V200a24 24 0 0124-24h69.75l91.37-74.81a8.27 8.27 0 01.66-.51A24 24 0 01256 120v272a24 24 0 01-24 24zm-106.18-80zm-.27-159.86zM320 336a16 16 0 01-14.29-23.19c9.49-18.87 14.3-38 14.3-56.81 0-19.38-4.66-37.94-14.25-56.73a16 16 0 0128.5-14.54C346.19 208.12 352 231.44 352 256c0 23.86-6 47.81-17.7 71.19A16 16 0 01320 336z'/><path d='M368 384a16 16 0 01-13.86-24C373.05 327.09 384 299.51 384 256c0-44.17-10.93-71.56-29.82-103.94a16 16 0 0127.64-16.12C402.92 172.11 416 204.81 416 256c0 50.43-13.06 83.29-34.13 120a16 16 0 01-13.87 8z'/><path d='M416 432a16 16 0 01-13.39-24.74C429.85 365.47 448 323.76 448 256c0-66.5-18.18-108.62-45.49-151.39a16 16 0 1127-17.22C459.81 134.89 480 181.74 480 256c0 64.75-14.66 113.63-50.6 168.74A16 16 0 01416 432z'/></svg>\"\nexport const volumeHighOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume High</title><path d='M126 192H56a8 8 0 00-8 8v112a8 8 0 008 8h69.65a15.93 15.93 0 0110.14 3.54l91.47 74.89A8 8 0 00240 392V120a8 8 0 00-12.74-6.43l-91.47 74.89A15 15 0 01126 192zM320 320c9.74-19.38 16-40.84 16-64 0-23.48-6-44.42-16-64M368 368c19.48-33.92 32-64.06 32-112s-12-77.74-32-112M416 416c30-46 48-91.43 48-160s-18-113-48-160' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const volumeHighSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume High</title><path d='M320 320c9.74-19.38 16-40.84 16-64 0-23.48-6-44.42-16-64M368 368c19.48-33.92 32-64.06 32-112s-12-77.74-32-112M416 416c30-46 48-91.43 48-160s-18-113-48-160' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M125.65 176.1H32v159.8h93.65L256 440V72L125.65 176.1z'/></svg>\"\nexport const volumeLow = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Low</title><path d='M296 416.19a23.92 23.92 0 01-14.21-4.69l-.66-.51-91.46-75H120a24 24 0 01-24-24V200a24 24 0 0124-24h69.65l91.46-75 .66-.51A24 24 0 01320 119.83v272.34a24 24 0 01-24 24zM384 336a16 16 0 01-14.29-23.18c9.49-18.9 14.3-38 14.3-56.82 0-19.36-4.66-37.92-14.25-56.73a16 16 0 0128.5-14.54C410.2 208.16 416 231.47 416 256c0 23.83-6 47.78-17.7 71.18A16 16 0 01384 336z'/></svg>\"\nexport const volumeLowOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Low</title><path d='M189.65 192H120a8 8 0 00-8 8v112a8 8 0 008 8h69.65a16 16 0 0110.14 3.63l91.47 75a8 8 0 0012.74-6.46V119.83a8 8 0 00-12.74-6.44l-91.47 75a16 16 0 01-10.14 3.61zM384 320c9.74-19.41 16-40.81 16-64 0-23.51-6-44.4-16-64' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const volumeLowSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Low</title><path d='M391.12 341.48l-28.6-14.36 7.18-14.3c9.49-18.9 14.3-38 14.3-56.82 0-19.36-4.66-37.92-14.25-56.73L362.48 185 391 170.48l7.26 14.25C410.2 208.16 416 231.47 416 256c0 23.83-6 47.78-17.7 71.18zM189.65 176.1H96v159.8h93.65L320 440V72L189.65 176.1z'/></svg>\"\nexport const volumeMedium = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Medium</title><path d='M264 416.19a23.92 23.92 0 01-14.21-4.69l-.66-.51-91.46-75H88a24 24 0 01-24-24V200a24 24 0 0124-24h69.65l91.46-75 .66-.51A24 24 0 01288 119.83v272.34a24 24 0 01-24 24zM352 336a16 16 0 01-14.29-23.18c9.49-18.9 14.3-38 14.3-56.82 0-19.36-4.66-37.92-14.25-56.73a16 16 0 0128.5-14.54C378.2 208.16 384 231.47 384 256c0 23.83-6 47.78-17.7 71.18A16 16 0 01352 336z'/><path d='M400 384a16 16 0 01-13.87-24C405 327.05 416 299.45 416 256c0-44.12-10.94-71.52-29.83-103.95A16 16 0 01413.83 136C434.92 172.16 448 204.88 448 256c0 50.36-13.06 83.24-34.12 120a16 16 0 01-13.88 8z'/></svg>\"\nexport const volumeMediumOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Medium</title><path d='M157.65 192H88a8 8 0 00-8 8v112a8 8 0 008 8h69.65a16 16 0 0110.14 3.63l91.47 75a8 8 0 0012.74-6.46V119.83a8 8 0 00-12.74-6.44l-91.47 75a16 16 0 01-10.14 3.61zM352 320c9.74-19.41 16-40.81 16-64 0-23.51-6-44.4-16-64M400 368c19.48-34 32-64 32-112s-12-77.7-32-112' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const volumeMediumSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Medium</title><path d='M157.65 176.1H64v159.8h93.65L288 440V72L157.65 176.1z'/><path d='M352 320c9.74-19.41 16-40.81 16-64 0-23.51-6-44.4-16-64M400 368c19.48-34 32-64 32-112s-12-77.7-32-112' stroke-linecap='square' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const volumeMute = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Mute</title><path stroke-linecap='round' stroke-miterlimit='10' d='M416 432L64 80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M243.33 98.86a23.89 23.89 0 00-25.55 1.82l-.66.51-28.52 23.35a8 8 0 00-.59 11.85l54.33 54.33a8 8 0 0013.66-5.66v-64.49a24.51 24.51 0 00-12.67-21.71zM251.33 335.29L96.69 180.69A16 16 0 0085.38 176H56a24 24 0 00-24 24v112a24 24 0 0024 24h69.76l92 75.31a23.9 23.9 0 0025.87 1.69A24.51 24.51 0 00256 391.45v-44.86a16 16 0 00-4.67-11.3zM352 256c0-24.56-5.81-47.87-17.75-71.27a16 16 0 10-28.5 14.55C315.34 218.06 320 236.62 320 256q0 4-.31 8.13a8 8 0 002.32 6.25l14.36 14.36a8 8 0 0013.55-4.31A146 146 0 00352 256zM416 256c0-51.18-13.08-83.89-34.18-120.06a16 16 0 00-27.64 16.12C373.07 184.44 384 211.83 384 256c0 23.83-3.29 42.88-9.37 60.65a8 8 0 001.9 8.26L389 337.4a8 8 0 0013.13-2.79C411 311.76 416 287.26 416 256z'/><path d='M480 256c0-74.25-20.19-121.11-50.51-168.61a16 16 0 10-27 17.22C429.82 147.38 448 189.5 448 256c0 46.19-8.43 80.27-22.43 110.53a8 8 0 001.59 9l11.92 11.92a8 8 0 0012.92-2.16C471.6 344.9 480 305 480 256z'/></svg>\"\nexport const volumeMuteOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Mute</title><path stroke-linecap='round' stroke-miterlimit='10' d='M416 432L64 80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M224 136.92v33.8a4 4 0 001.17 2.82l24 24a4 4 0 006.83-2.82v-74.15a24.53 24.53 0 00-12.67-21.72 23.91 23.91 0 00-25.55 1.83 8.27 8.27 0 00-.66.51l-31.94 26.15a4 4 0 00-.29 5.92l17.05 17.06a4 4 0 005.37.26zM224 375.08l-78.07-63.92a32 32 0 00-20.28-7.16H64v-96h50.72a4 4 0 002.82-6.83l-24-24a4 4 0 00-2.82-1.17H56a24 24 0 00-24 24v112a24 24 0 0024 24h69.76l91.36 74.8a8.27 8.27 0 00.66.51 23.93 23.93 0 0025.85 1.69A24.49 24.49 0 00256 391.45v-50.17a4 4 0 00-1.17-2.82l-24-24a4 4 0 00-6.83 2.82zM125.82 336zM352 256c0-24.56-5.81-47.88-17.75-71.27a16 16 0 00-28.5 14.54C315.34 218.06 320 236.62 320 256q0 4-.31 8.13a8 8 0 002.32 6.25l19.66 19.67a4 4 0 006.75-2A146.89 146.89 0 00352 256zM416 256c0-51.19-13.08-83.89-34.18-120.06a16 16 0 00-27.64 16.12C373.07 184.44 384 211.83 384 256c0 23.83-3.29 42.88-9.37 60.65a8 8 0 001.9 8.26l16.77 16.76a4 4 0 006.52-1.27C410.09 315.88 416 289.91 416 256z'/><path d='M480 256c0-74.26-20.19-121.11-50.51-168.61a16 16 0 10-27 17.22C429.82 147.38 448 189.5 448 256c0 47.45-8.9 82.12-23.59 113a4 4 0 00.77 4.55L443 391.39a4 4 0 006.4-1C470.88 348.22 480 307 480 256z'/></svg>\"\nexport const volumeMuteSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Mute</title><path stroke-linecap='square' stroke-miterlimit='10' d='M416 432L64 80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M352 256c0-24.56-5.81-47.88-17.75-71.27L327 170.47 298.48 185l7.27 14.25C315.34 218.06 320 236.62 320 256a112.91 112.91 0 01-.63 11.74l27.32 27.32A148.8 148.8 0 00352 256zM416 256c0-51.19-13.08-83.89-34.18-120.06l-8.06-13.82-27.64 16.12 8.06 13.82C373.07 184.44 384 211.83 384 256c0 25.93-3.89 46.21-11 65.33l24.5 24.51C409.19 319.68 416 292.42 416 256z'/><path d='M480 256c0-74.26-20.19-121.11-50.51-168.61l-8.61-13.49-27 17.22 8.61 13.49C429.82 147.38 448 189.5 448 256c0 48.76-9.4 84-24.82 115.55l23.7 23.7C470.16 351.39 480 309 480 256zM256 72l-73.6 58.78 73.6 73.59V72zM32 176.1v159.8h93.65L256 440V339.63L92.47 176.1H32z'/></svg>\"\nexport const volumeOff = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Off</title><path d='M344 416a23.92 23.92 0 01-14.21-4.69c-.23-.16-.44-.33-.66-.51l-91.46-74.9H168a24 24 0 01-24-24V200.07a24 24 0 0124-24h69.65l91.46-74.9c.22-.18.43-.35.66-.51A24 24 0 01368 120v272a24 24 0 01-24 24z'/></svg>\"\nexport const volumeOffOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Off</title><path d='M237.65 192H168a8 8 0 00-8 8v112a8 8 0 008 8h69.65a16 16 0 0110.14 3.63l91.47 75a8 8 0 0012.74-6.46V119.83a8 8 0 00-12.74-6.44l-91.47 75a16 16 0 01-10.14 3.61z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const volumeOffSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Volume Off</title><path d='M237.65 176.1H144v159.8h93.65L368 440V72L237.65 176.1z'/></svg>\"\nexport const walk = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Walk</title><path d='M312.55 479.9l-56.42-114-44.62-57a72.37 72.37 0 01-10.06-36.9V143.64H217a40 40 0 0140 40v182.21' stroke-linecap='round' stroke-linejoin='round' class='ionicon-stroke-width'/><path d='M127.38 291.78v-74.07s37-74.07 74.07-74.07' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M368.09 291.78a18.49 18.49 0 01-10.26-3.11L297.7 250a21.18 21.18 0 01-9.7-17.79v-23.7a5.65 5.65 0 018.69-4.77l81.65 54.11a18.52 18.52 0 01-10.29 33.93zM171.91 493.47a18.5 18.5 0 01-14.83-7.41c-6.14-8.18-4-17.18 3.7-25.92l59.95-74.66a7.41 7.41 0 0110.76 2.06c1.56 2.54 3.38 5.65 5.19 9.09 5.24 9.95 6 16.11-1.68 25.7-8 10-52 67.44-52 67.44-2.62 2.98-7.23 3.7-11.09 3.7z'/><circle cx='257' cy='69.56' r='37.04' stroke-linecap='round' stroke-linejoin='round' stroke-width='16'/></svg>\"\nexport const walkOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Walk</title><path d='M314.21 482.32l-56.77-114.74-44.89-57.39a72.82 72.82 0 01-10.13-37.05V144h15.67a40.22 40.22 0 0140.23 40.22v183.36M127.9 293.05v-74.52S165.16 144 202.42 144M370.1 274.42L304 231M170.53 478.36L224 400' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='258.32' cy='69.48' r='37.26' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const walkSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Walk</title><path d='M315.09 481.38l-56.95-115.12-45-57.56a73.11 73.11 0 01-10.16-37.17V142h15.73A40.36 40.36 0 01259 182.32v162.52' stroke-linecap='square' stroke-linejoin='round' class='ionicon-stroke-width'/><path stroke-linecap='square' stroke-linejoin='round' d='M128.18 291.5v-74.77l64.95-65.1' class='ionicon-fill-none ionicon-stroke-width'/><path d='M376.35 295.73l-83.95-56.38v-44.68l104.68 72.95-20.73 28.11zM175.13 498.58l-21.43-26.91 80.33-81.54 15.53 32.07-74.43 76.38z'/><circle cx='259.02' cy='67.21' r='37.38' stroke-linecap='square' stroke-linejoin='round' stroke-width='16'/></svg>\"\nexport const wallet = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wallet</title><path d='M95.5 104h320a87.73 87.73 0 0111.18.71 66 66 0 00-77.51-55.56L86 94.08h-.3a66 66 0 00-41.07 26.13A87.57 87.57 0 0195.5 104zM415.5 128h-320a64.07 64.07 0 00-64 64v192a64.07 64.07 0 0064 64h320a64.07 64.07 0 0064-64V192a64.07 64.07 0 00-64-64zM368 320a32 32 0 1132-32 32 32 0 01-32 32z'/><path d='M32 259.5V160c0-21.67 12-58 53.65-65.87C121 87.5 156 87.5 156 87.5s23 16 4 16-18.5 24.5 0 24.5 0 23.5 0 23.5L85.5 236z'/></svg>\"\nexport const walletOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wallet</title><rect x='48' y='144' width='416' height='288' rx='48' ry='48' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M411.36 144v-30A50 50 0 00352 64.9L88.64 109.85A50 50 0 0048 159v49' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M368 320a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const walletSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wallet</title><path d='M47.5 104H432V51.52a16 16 0 00-19.14-15.69l-368 60.48a16 16 0 00-12 10.47A39.69 39.69 0 0147.5 104zM463.5 128h-416a16 16 0 00-16 16v288a16 16 0 0016 16h416a16 16 0 0016-16V144a16 16 0 00-16-16zM368 320a32 32 0 1132-32 32 32 0 01-32 32z'/><path d='M31.33 259.5V116c0-12.33 5.72-18.48 15.42-20 35.2-5.53 108.58-8.5 108.58-8.5s-8.33 16-27.33 16V128c18.5 0 31.33 23.5 31.33 23.5L84.83 236z'/></svg>\"\nexport const warning = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Warning</title><path d='M449.07 399.08L278.64 82.58c-12.08-22.44-44.26-22.44-56.35 0L51.87 399.08A32 32 0 0080 446.25h340.89a32 32 0 0028.18-47.17zm-198.6-1.83a20 20 0 1120-20 20 20 0 01-20 20zm21.72-201.15l-5.74 122a16 16 0 01-32 0l-5.74-121.95a21.73 21.73 0 0121.5-22.69h.21a21.74 21.74 0 0121.73 22.7z'/></svg>\"\nexport const warningOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Warning</title><path d='M85.57 446.25h340.86a32 32 0 0028.17-47.17L284.18 82.58c-12.09-22.44-44.27-22.44-56.36 0L57.4 399.08a32 32 0 0028.17 47.17z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M250.26 195.39l5.74 122 5.73-121.95a5.74 5.74 0 00-5.79-6h0a5.74 5.74 0 00-5.68 5.95z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 397.25a20 20 0 1120-20 20 20 0 01-20 20z'/></svg>\"\nexport const warningSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Warning</title><path d='M479 447.77L268.43 56.64a8 8 0 00-14.09 0L43.73 447.77a8 8 0 007.05 11.79H472a8 8 0 007-11.79zm-197.62-36.29h-40v-40h40zm-4-63.92h-32l-6-160h44z'/></svg>\"\nexport const watch = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Watch</title><rect x='136' y='136' width='240' height='240' rx='56' ry='56'/><path d='M336 96V32a16 16 0 00-16-16H192a16 16 0 00-16 16v64a80.09 80.09 0 00-80 80v160a80.09 80.09 0 0080 80v64a16 16 0 0016 16h128a16 16 0 0016-16v-64a80.09 80.09 0 0080-80V176a80.09 80.09 0 00-80-80zm56 224a72.08 72.08 0 01-72 72H192a72.08 72.08 0 01-72-72V192a72.08 72.08 0 0172-72h128a72.08 72.08 0 0172 72z'/></svg>\"\nexport const watchOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Watch</title><rect x='112' y='112' width='288' height='288' rx='64' ry='64' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M176 112V40a8 8 0 018-8h144a8 8 0 018 8v72M336 400v72a8 8 0 01-8 8H184a8 8 0 01-8-8v-72' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const watchSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Watch</title><rect x='136' y='136' width='240' height='240' rx='8' ry='8'/><path d='M384 96h-48V16H176v80h-48a32 32 0 00-32 32v256a32 32 0 0032 32h48v80h160v-80h48a32 32 0 0032-32V128a32 32 0 00-32-32zm8 272a24 24 0 01-24 24H144a24 24 0 01-24-24V144a24 24 0 0124-24h224a24 24 0 0124 24z'/></svg>\"\nexport const water = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Water</title><path d='M265.12 60.12a12 12 0 00-18.23 0C215.23 97.15 112 225.17 112 320c0 88.37 55.64 144 144 144s144-55.63 144-144c0-94.83-103.23-222.85-134.88-259.88zM272 412a12 12 0 01-11.34-16 11.89 11.89 0 0111.41-8A60.06 60.06 0 00332 328.07a11.89 11.89 0 018-11.41A12 12 0 01356 328a84.09 84.09 0 01-84 84z'/></svg>\"\nexport const waterOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Water</title><path d='M400 320c0 88.37-55.63 144-144 144s-144-55.63-144-144c0-94.83 103.23-222.85 134.89-259.88a12 12 0 0118.23 0C296.77 97.15 400 225.17 400 320z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M344 328a72 72 0 01-72 72' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const waterSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Water</title><path d='M256 43.91s-144 158.3-144 270.3c0 88.36 55.64 144 144 144s144-55.64 144-144c0-112-144-270.3-144-270.3zm16 362.3v-24a60.07 60.07 0 0060-60h24a84.09 84.09 0 01-84 84z'/></svg>\"\nexport const wifi = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wifi</title><path d='M346.65 304.3a136 136 0 00-180.71 0 21 21 0 1027.91 31.38 94 94 0 01124.89 0 21 21 0 0027.91-31.4z'/><path d='M256.28 183.7a221.47 221.47 0 00-151.8 59.92 21 21 0 1028.68 30.67 180.28 180.28 0 01246.24 0 21 21 0 1028.68-30.67 221.47 221.47 0 00-151.8-59.92z'/><path d='M462 175.86a309 309 0 00-411.44 0 21 21 0 1028 31.29 267 267 0 01355.43 0 21 21 0 0028-31.31z'/><circle cx='256.28' cy='393.41' r='32'/></svg>\"\nexport const wifiOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wifi</title><path d='M332.41 310.59a115 115 0 00-152.8 0M393.46 249.54a201.26 201.26 0 00-274.92 0M447.72 182.11a288 288 0 00-383.44 0' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 416a32 32 0 1132-32 32 32 0 01-32 32z'/></svg>\"\nexport const wifiSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wifi</title><path d='M332.69 320a115 115 0 00-152.8 0M393.74 259a201.26 201.26 0 00-274.92 0M448 191.52a288 288 0 00-383.44 0' stroke-linecap='square' stroke-linejoin='round' stroke-width='42' class='ionicon-fill-none'/><path d='M300.67 384L256 433l-44.34-49a56.73 56.73 0 0188.92 0z'/></svg>\"\nexport const wine = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wine</title><path d='M414.56 94.92V80a16 16 0 00-16-16H113.44a16 16 0 00-16 16v14.92c-1.46 11.37-9.65 90.74 36.93 144.69 24.87 28.8 60.36 44.85 105.63 47.86V416h-80a16 16 0 000 32h192a16 16 0 000-32h-80V287.47c45.27-3 80.76-19.06 105.63-47.86 46.58-53.95 38.37-133.32 36.93-144.69zm-285.3 3.41a15.14 15.14 0 00.18-2.33h253.12a15.14 15.14 0 00.18 2.33 201.91 201.91 0 010 45.67H129.32a204.29 204.29 0 01-.06-45.67z'/></svg>\"\nexport const wineOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wine</title><path d='M398.57 80H113.43v16S87.51 272 256 272 398.57 96 398.57 96zM256 272v160' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M352 432H160' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linejoin='round' d='M112 160h288' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const wineSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Wine</title><path d='M453 112V66.33H60.75V112l175.13 176v118H124.75v42H389v-42H277.88V288zm-336.65-3.67h281l-37.81 38H154.16z'/></svg>\"\nexport const woman = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Woman</title><circle cx='255.75' cy='56' r='56'/><path d='M394.63 277.9l-10.33-34.41v-.11l-22.46-74.86h-.05l-2.51-8.45a44.87 44.87 0 00-43-32.08h-120a44.84 44.84 0 00-43 32.08l-2.51 8.45h-.06l-22.46 74.86v.11l-10.37 34.41c-3.12 10.39 2.3 21.66 12.57 25.14a20 20 0 0025.6-13.18l25.58-85.25 2.17-7.23a8 8 0 0115.53 2.62 7.78 7.78 0 01-.17 1.61L155.43 347.4a16 16 0 0015.32 20.6h29v114.69c0 16.46 10.53 29.31 24 29.31s24-12.85 24-29.31V368h16v114.69c0 16.46 10.53 29.31 24 29.31s24-12.85 24-29.31V368h30a16 16 0 0015.33-20.6l-43.74-145.81a7.52 7.52 0 01-.16-1.59 8 8 0 0115.54-2.63l2.17 7.23 25.57 85.25A20 20 0 00382.05 303c10.27-3.44 15.69-14.71 12.58-25.1z'/></svg>\"\nexport const womanOutline = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Woman</title><path d='M208 368v104a23.73 23.73 0 0024 24h0a23.73 23.73 0 0024-24' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 368v104a23.73 23.73 0 0024 24h0a23.73 23.73 0 0024-24V368M183 274a23.73 23.73 0 01-29.84 16.18h0a23.72 23.72 0 01-16.17-29.84l25-84.28A44.85 44.85 0 01205 144h102a44.85 44.85 0 0143 32.08l25 84.28a23.72 23.72 0 01-16.17 29.84h0a23.73 23.73 0 01-29.78-16.2' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='56' r='40' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M208 192l-48 160h192l-48-160' class='ionicon-fill-none ionicon-stroke-width'/></svg>\"\nexport const womanSharp = \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Woman</title><circle cx='255.75' cy='56' r='56'/><path d='M310.28 191.4h.05l7.66-2.3 36.79 122.6 46-13.8-16.21-54.16c0-.12 0-.24-.07-.36l-16.84-56.12-4.71-15.74-.9-3H362l-2.51-8.45a44.84 44.84 0 00-43-32.08H195.24a44.84 44.84 0 00-43 32.08l-2.51 8.45h-.06l-.9 3-4.71 15.74-16.84 56.12c0 .12 0 .24-.07.36l-16.21 54.16 46 13.8 36.76-122.6 7.54 2.26L148.25 368h51.5v144h52V368h8v144h52V368h51.51z'/></svg>\"\n","import{__awaiter,__extends,__generator,__spreadArray}from\"tslib\";var NAMESPACE=\"ionic\";var scopeId;var contentRef;var hostTagName;var useNativeShadowDom=false;var checkSlotFallbackVisibility=false;var checkSlotRelocate=false;var isSvgMode=false;var queuePending=false;var win=typeof window!==\"undefined\"?window:{};var CSS=win.CSS;var doc=win.document||{head:{}};var plt={$flags$:0,$resourcesUrl$:\"\",jmp:function(e){return e()},raf:function(e){return requestAnimationFrame(e)},ael:function(e,t,r,n){return e.addEventListener(t,r,n)},rel:function(e,t,r,n){return e.removeEventListener(t,r,n)},ce:function(e,t){return new CustomEvent(e,t)}};var supportsShadow=function(){return(doc.head.attachShadow+\"\").indexOf(\"[native\")>-1}();var promiseResolve=function(e){return Promise.resolve(e)};var supportsConstructibleStylesheets=function(){try{new CSSStyleSheet;return typeof(new CSSStyleSheet).replace===\"function\"}catch(e){}return false}();var addHostEventListeners=function(e,t,r,n){if(r){r.map((function(r){var n=r[0],a=r[1],o=r[2];var s=getHostListenerTarget(e,n);var i=hostListenerProxy(t,o);var l=hostListenerOpts(n);plt.ael(s,a,i,l);(t.$rmListeners$=t.$rmListeners$||[]).push((function(){return plt.rel(s,a,i,l)}))}))}};var hostListenerProxy=function(e,t){return function(r){try{{if(e.$flags$&256){e.$lazyInstance$[t](r)}else{(e.$queuedListeners$=e.$queuedListeners$||[]).push([t,r])}}}catch(n){consoleError(n)}}};var getHostListenerTarget=function(e,t){if(t&4)return doc;if(t&8)return win;if(t&16)return doc.body;return e};var hostListenerOpts=function(e){return(e&2)!==0};var CONTENT_REF_ID=\"r\";var ORG_LOCATION_ID=\"o\";var SLOT_NODE_ID=\"s\";var TEXT_NODE_ID=\"t\";var HYDRATE_ID=\"s-id\";var HYDRATED_STYLE_ID=\"sty-id\";var HYDRATE_CHILD_ID=\"c-id\";var HYDRATED_CSS=\"{visibility:hidden}.hydrated{visibility:inherit}\";var XLINK_NS=\"http://www.w3.org/1999/xlink\";var createTime=function(e,t){if(t===void 0){t=\"\"}{return function(){return}}};var uniqueTime=function(e,t){{return function(){return}}};var rootAppliedStyles=new WeakMap;var registerStyle=function(e,t,r){var n=styles.get(e);if(supportsConstructibleStylesheets&&r){n=n||new CSSStyleSheet;n.replace(t)}else{n=t}styles.set(e,n)};var addStyle=function(e,t,r,n){var a=getScopeId(t,r);var o=styles.get(a);e=e.nodeType===11?e:doc;if(o){if(typeof o===\"string\"){e=e.head||e;var s=rootAppliedStyles.get(e);var i=void 0;if(!s){rootAppliedStyles.set(e,s=new Set)}if(!s.has(a)){if(e.host&&(i=e.querySelector(\"[\"+HYDRATED_STYLE_ID+'=\"'+a+'\"]'))){i.innerHTML=o}else{if(plt.$cssShim$){i=plt.$cssShim$.createHostStyle(n,a,o,!!(t.$flags$&10));var l=i[\"s-sc\"];if(l){a=l;s=null}}else{i=doc.createElement(\"style\");i.innerHTML=o}e.insertBefore(i,e.querySelector(\"link\"))}if(s){s.add(a)}}}else if(!e.adoptedStyleSheets.includes(o)){e.adoptedStyleSheets=__spreadArray(__spreadArray([],e.adoptedStyleSheets),[o])}}return a};var attachStyles=function(e){var t=e.$cmpMeta$;var r=e.$hostElement$;var n=t.$flags$;var a=createTime(\"attachStyles\",t.$tagName$);var o=addStyle(supportsShadow&&r.shadowRoot?r.shadowRoot:r.getRootNode(),t,e.$modeName$,r);if(n&10){r[\"s-sc\"]=o;r.classList.add(o+\"-h\");if(n&2){r.classList.add(o+\"-s\")}}a()};var getScopeId=function(e,t){return\"sc-\"+(t&&e.$flags$&32?e.$tagName$+\"-\"+t:e.$tagName$)};var convertScopedToShadow=function(e){return e.replace(/\\/\\*!@([^\\/]+)\\*\\/[^\\{]+\\{/g,\"$1{\")};var computeMode=function(e){return modeResolutionChain.map((function(t){return t(e)})).find((function(e){return!!e}))};var setMode=function(e){return modeResolutionChain.push(e)};var getMode=function(e){return getHostRef(e).$modeName$};var EMPTY_OBJ={};var SVG_NS=\"http://www.w3.org/2000/svg\";var HTML_NS=\"http://www.w3.org/1999/xhtml\";var isDef=function(e){return e!=null};var isComplexType=function(e){e=typeof e;return e===\"object\"||e===\"function\"};var h=function(e,t){var r=[];for(var n=2;n<arguments.length;n++){r[n-2]=arguments[n]}var a=null;var o=null;var s=null;var i=false;var l=false;var $=[];var c=function(t){for(var r=0;r<t.length;r++){a=t[r];if(Array.isArray(a)){c(a)}else if(a!=null&&typeof a!==\"boolean\"){if(i=typeof e!==\"function\"&&!isComplexType(a)){a=String(a)}if(i&&l){$[$.length-1].$text$+=a}else{$.push(i?newVNode(null,a):a)}l=i}}};c(r);if(t){if(t.key){o=t.key}if(t.name){s=t.name}{var f=t.className||t.class;if(f){t.class=typeof f!==\"object\"?f:Object.keys(f).filter((function(e){return f[e]})).join(\" \")}}}if(typeof e===\"function\"){return e(t===null?{}:t,$,vdomFnUtils)}var u=newVNode(e,null);u.$attrs$=t;if($.length>0){u.$children$=$}{u.$key$=o}{u.$name$=s}return u};var newVNode=function(e,t){var r={$flags$:0,$tag$:e,$text$:t,$elm$:null,$children$:null};{r.$attrs$=null}{r.$key$=null}{r.$name$=null}return r};var Host={};var isHost=function(e){return e&&e.$tag$===Host};var vdomFnUtils={forEach:function(e,t){return e.map(convertToPublic).forEach(t)},map:function(e,t){return e.map(convertToPublic).map(t).map(convertToPrivate)}};var convertToPublic=function(e){return{vattrs:e.$attrs$,vchildren:e.$children$,vkey:e.$key$,vname:e.$name$,vtag:e.$tag$,vtext:e.$text$}};var convertToPrivate=function(e){if(typeof e.vtag===\"function\"){var t=Object.assign({},e.vattrs);if(e.vkey){t.key=e.vkey}if(e.vname){t.name=e.vname}return h.apply(void 0,__spreadArray([e.vtag,t],e.vchildren||[]))}var r=newVNode(e.vtag,e.vtext);r.$attrs$=e.vattrs;r.$children$=e.vchildren;r.$key$=e.vkey;r.$name$=e.vname;return r};var setAccessor=function(e,t,r,n,a,o){if(r!==n){var s=isMemberInElement(e,t);var i=t.toLowerCase();if(t===\"class\"){var l=e.classList;var $=parseClassList(r);var c=parseClassList(n);l.remove.apply(l,$.filter((function(e){return e&&!c.includes(e)})));l.add.apply(l,c.filter((function(e){return e&&!$.includes(e)})))}else if(t===\"style\"){{for(var f in r){if(!n||n[f]==null){if(f.includes(\"-\")){e.style.removeProperty(f)}else{e.style[f]=\"\"}}}}for(var f in n){if(!r||n[f]!==r[f]){if(f.includes(\"-\")){e.style.setProperty(f,n[f])}else{e.style[f]=n[f]}}}}else if(t===\"key\");else if(t===\"ref\"){if(n){n(e)}}else if(!s&&t[0]===\"o\"&&t[1]===\"n\"){if(t[2]===\"-\"){t=t.slice(3)}else if(isMemberInElement(win,i)){t=i.slice(2)}else{t=i[2]+t.slice(3)}if(r){plt.rel(e,t,r,false)}if(n){plt.ael(e,t,n,false)}}else{var u=isComplexType(n);if((s||u&&n!==null)&&!a){try{if(!e.tagName.includes(\"-\")){var d=n==null?\"\":n;if(t===\"list\"){s=false}else if(r==null||e[t]!=d){e[t]=d}}else{e[t]=n}}catch(p){}}var v=false;{if(i!==(i=i.replace(/^xlink\\:?/,\"\"))){t=i;v=true}}if(n==null||n===false){if(n!==false||e.getAttribute(t)===\"\"){if(v){e.removeAttributeNS(XLINK_NS,t)}else{e.removeAttribute(t)}}}else if((!s||o&4||a)&&!u){n=n===true?\"\":n;if(v){e.setAttributeNS(XLINK_NS,t,n)}else{e.setAttribute(t,n)}}}}};var parseClassListRegex=/\\s/;var parseClassList=function(e){return!e?[]:e.split(parseClassListRegex)};var updateElement=function(e,t,r,n){var a=t.$elm$.nodeType===11&&t.$elm$.host?t.$elm$.host:t.$elm$;var o=e&&e.$attrs$||EMPTY_OBJ;var s=t.$attrs$||EMPTY_OBJ;{for(n in o){if(!(n in s)){setAccessor(a,n,o[n],undefined,r,t.$flags$)}}}for(n in s){setAccessor(a,n,o[n],s[n],r,t.$flags$)}};var createElm=function(e,t,r,n){var a=t.$children$[r];var o=0;var s;var i;var l;if(!useNativeShadowDom){checkSlotRelocate=true;if(a.$tag$===\"slot\"){if(scopeId){n.classList.add(scopeId+\"-s\")}a.$flags$|=a.$children$?2:1}}if(a.$text$!==null){s=a.$elm$=doc.createTextNode(a.$text$)}else if(a.$flags$&1){s=a.$elm$=doc.createTextNode(\"\")}else{if(!isSvgMode){isSvgMode=a.$tag$===\"svg\"}s=a.$elm$=doc.createElementNS(isSvgMode?SVG_NS:HTML_NS,a.$flags$&2?\"slot-fb\":a.$tag$);if(isSvgMode&&a.$tag$===\"foreignObject\"){isSvgMode=false}{updateElement(null,a,isSvgMode)}if(isDef(scopeId)&&s[\"s-si\"]!==scopeId){s.classList.add(s[\"s-si\"]=scopeId)}if(a.$children$){for(o=0;o<a.$children$.length;++o){i=createElm(e,a,o,s);if(i){s.appendChild(i)}}}{if(a.$tag$===\"svg\"){isSvgMode=false}else if(s.tagName===\"foreignObject\"){isSvgMode=true}}}{s[\"s-hn\"]=hostTagName;if(a.$flags$&(2|1)){s[\"s-sr\"]=true;s[\"s-cr\"]=contentRef;s[\"s-sn\"]=a.$name$||\"\";l=e&&e.$children$&&e.$children$[r];if(l&&l.$tag$===a.$tag$&&e.$elm$){putBackInOriginalLocation(e.$elm$,false)}}}return s};var putBackInOriginalLocation=function(e,t){plt.$flags$|=1;var r=e.childNodes;for(var n=r.length-1;n>=0;n--){var a=r[n];if(a[\"s-hn\"]!==hostTagName&&a[\"s-ol\"]){parentReferenceNode(a).insertBefore(a,referenceNode(a));a[\"s-ol\"].remove();a[\"s-ol\"]=undefined;checkSlotRelocate=true}if(t){putBackInOriginalLocation(a,t)}}plt.$flags$&=~1};var addVnodes=function(e,t,r,n,a,o){var s=e[\"s-cr\"]&&e[\"s-cr\"].parentNode||e;var i;if(s.shadowRoot&&s.tagName===hostTagName){s=s.shadowRoot}for(;a<=o;++a){if(n[a]){i=createElm(null,r,a,e);if(i){n[a].$elm$=i;s.insertBefore(i,referenceNode(t))}}}};var removeVnodes=function(e,t,r,n,a){for(;t<=r;++t){if(n=e[t]){a=n.$elm$;callNodeRefs(n);{checkSlotFallbackVisibility=true;if(a[\"s-ol\"]){a[\"s-ol\"].remove()}else{putBackInOriginalLocation(a,true)}}a.remove()}}};var updateChildren=function(e,t,r,n){var a=0;var o=0;var s=0;var i=0;var l=t.length-1;var $=t[0];var c=t[l];var f=n.length-1;var u=n[0];var d=n[f];var v;var p;while(a<=l&&o<=f){if($==null){$=t[++a]}else if(c==null){c=t[--l]}else if(u==null){u=n[++o]}else if(d==null){d=n[--f]}else if(isSameVnode($,u)){patch($,u);$=t[++a];u=n[++o]}else if(isSameVnode(c,d)){patch(c,d);c=t[--l];d=n[--f]}else if(isSameVnode($,d)){if($.$tag$===\"slot\"||d.$tag$===\"slot\"){putBackInOriginalLocation($.$elm$.parentNode,false)}patch($,d);e.insertBefore($.$elm$,c.$elm$.nextSibling);$=t[++a];d=n[--f]}else if(isSameVnode(c,u)){if($.$tag$===\"slot\"||d.$tag$===\"slot\"){putBackInOriginalLocation(c.$elm$.parentNode,false)}patch(c,u);e.insertBefore(c.$elm$,$.$elm$);c=t[--l];u=n[++o]}else{s=-1;{for(i=a;i<=l;++i){if(t[i]&&t[i].$key$!==null&&t[i].$key$===u.$key$){s=i;break}}}if(s>=0){p=t[s];if(p.$tag$!==u.$tag$){v=createElm(t&&t[o],r,s,e)}else{patch(p,u);t[s]=undefined;v=p.$elm$}u=n[++o]}else{v=createElm(t&&t[o],r,o,e);u=n[++o]}if(v){{parentReferenceNode($.$elm$).insertBefore(v,referenceNode($.$elm$))}}}}if(a>l){addVnodes(e,n[f+1]==null?null:n[f+1].$elm$,r,n,o,f)}else if(o>f){removeVnodes(t,a,l)}};var isSameVnode=function(e,t){if(e.$tag$===t.$tag$){if(e.$tag$===\"slot\"){return e.$name$===t.$name$}{return e.$key$===t.$key$}}return false};var referenceNode=function(e){return e&&e[\"s-ol\"]||e};var parentReferenceNode=function(e){return(e[\"s-ol\"]?e[\"s-ol\"]:e).parentNode};var patch=function(e,t){var r=t.$elm$=e.$elm$;var n=e.$children$;var a=t.$children$;var o=t.$tag$;var s=t.$text$;var i;if(s===null){{isSvgMode=o===\"svg\"?true:o===\"foreignObject\"?false:isSvgMode}{if(o===\"slot\");else{updateElement(e,t,isSvgMode)}}if(n!==null&&a!==null){updateChildren(r,n,t,a)}else if(a!==null){if(e.$text$!==null){r.textContent=\"\"}addVnodes(r,null,t,a,0,a.length-1)}else if(n!==null){removeVnodes(n,0,n.length-1)}if(isSvgMode&&o===\"svg\"){isSvgMode=false}}else if(i=r[\"s-cr\"]){i.parentNode.textContent=s}else if(e.$text$!==s){r.data=s}};var updateFallbackSlotVisibility=function(e){var t=e.childNodes;var r;var n;var a;var o;var s;var i;for(n=0,a=t.length;n<a;n++){r=t[n];if(r.nodeType===1){if(r[\"s-sr\"]){s=r[\"s-sn\"];r.hidden=false;for(o=0;o<a;o++){i=t[o].nodeType;if(t[o][\"s-hn\"]!==r[\"s-hn\"]||s!==\"\"){if(i===1&&s===t[o].getAttribute(\"slot\")){r.hidden=true;break}}else{if(i===1||i===3&&t[o].textContent.trim()!==\"\"){r.hidden=true;break}}}}updateFallbackSlotVisibility(r)}}};var relocateNodes=[];var relocateSlotContent=function(e){var t;var r;var n;var a;var o;var s;var i=0;var l=e.childNodes;var $=l.length;for(;i<$;i++){t=l[i];if(t[\"s-sr\"]&&(r=t[\"s-cr\"])&&r.parentNode){n=r.parentNode.childNodes;a=t[\"s-sn\"];for(s=n.length-1;s>=0;s--){r=n[s];if(!r[\"s-cn\"]&&!r[\"s-nr\"]&&r[\"s-hn\"]!==t[\"s-hn\"]){if(isNodeLocatedInSlot(r,a)){o=relocateNodes.find((function(e){return e.$nodeToRelocate$===r}));checkSlotFallbackVisibility=true;r[\"s-sn\"]=r[\"s-sn\"]||a;if(o){o.$slotRefNode$=t}else{relocateNodes.push({$slotRefNode$:t,$nodeToRelocate$:r})}if(r[\"s-sr\"]){relocateNodes.map((function(e){if(isNodeLocatedInSlot(e.$nodeToRelocate$,r[\"s-sn\"])){o=relocateNodes.find((function(e){return e.$nodeToRelocate$===r}));if(o&&!e.$slotRefNode$){e.$slotRefNode$=o.$slotRefNode$}}}))}}else if(!relocateNodes.some((function(e){return e.$nodeToRelocate$===r}))){relocateNodes.push({$nodeToRelocate$:r})}}}}if(t.nodeType===1){relocateSlotContent(t)}}};var isNodeLocatedInSlot=function(e,t){if(e.nodeType===1){if(e.getAttribute(\"slot\")===null&&t===\"\"){return true}if(e.getAttribute(\"slot\")===t){return true}return false}if(e[\"s-sn\"]===t){return true}return t===\"\"};var callNodeRefs=function(e){{e.$attrs$&&e.$attrs$.ref&&e.$attrs$.ref(null);e.$children$&&e.$children$.map(callNodeRefs)}};var renderVdom=function(e,t){var r=e.$hostElement$;var n=e.$cmpMeta$;var a=e.$vnode$||newVNode(null,null);var o=isHost(t)?t:h(null,null,t);hostTagName=r.tagName;if(n.$attrsToReflect$){o.$attrs$=o.$attrs$||{};n.$attrsToReflect$.map((function(e){var t=e[0],n=e[1];return o.$attrs$[n]=r[t]}))}o.$tag$=null;o.$flags$|=4;e.$vnode$=o;o.$elm$=a.$elm$=r.shadowRoot||r;{scopeId=r[\"s-sc\"]}{contentRef=r[\"s-cr\"];useNativeShadowDom=supportsShadow&&(n.$flags$&1)!==0;checkSlotFallbackVisibility=false}patch(a,o);{plt.$flags$|=1;if(checkSlotRelocate){relocateSlotContent(o.$elm$);var s=void 0;var i=void 0;var l=void 0;var $=void 0;var c=void 0;var f=void 0;var u=0;for(;u<relocateNodes.length;u++){s=relocateNodes[u];i=s.$nodeToRelocate$;if(!i[\"s-ol\"]){l=doc.createTextNode(\"\");l[\"s-nr\"]=i;i.parentNode.insertBefore(i[\"s-ol\"]=l,i)}}for(u=0;u<relocateNodes.length;u++){s=relocateNodes[u];i=s.$nodeToRelocate$;if(s.$slotRefNode$){$=s.$slotRefNode$.parentNode;c=s.$slotRefNode$.nextSibling;l=i[\"s-ol\"];while(l=l.previousSibling){f=l[\"s-nr\"];if(f&&f[\"s-sn\"]===i[\"s-sn\"]&&$===f.parentNode){f=f.nextSibling;if(!f||!f[\"s-nr\"]){c=f;break}}}if(!c&&$!==i.parentNode||i.nextSibling!==c){if(i!==c){if(!i[\"s-hn\"]&&i[\"s-ol\"]){i[\"s-hn\"]=i[\"s-ol\"].parentNode.nodeName}$.insertBefore(i,c)}}}else{if(i.nodeType===1){i.hidden=true}}}}if(checkSlotFallbackVisibility){updateFallbackSlotVisibility(o.$elm$)}plt.$flags$&=~1;relocateNodes.length=0}};var getElement=function(e){return getHostRef(e).$hostElement$};var createEvent=function(e,t,r){var n=getElement(e);return{emit:function(e){return emitEvent(n,t,{bubbles:!!(r&4),composed:!!(r&2),cancelable:!!(r&1),detail:e})}}};var emitEvent=function(e,t,r){var n=plt.ce(t,r);e.dispatchEvent(n);return n};var attachToAncestor=function(e,t){if(t&&!e.$onRenderResolve$&&t[\"s-p\"]){t[\"s-p\"].push(new Promise((function(t){return e.$onRenderResolve$=t})))}};var scheduleUpdate=function(e,t){{e.$flags$|=16}if(e.$flags$&4){e.$flags$|=512;return}attachToAncestor(e,e.$ancestorComponent$);var r=function(){return dispatchHooks(e,t)};return writeTask(r)};var dispatchHooks=function(e,t){var r=createTime(\"scheduleUpdate\",e.$cmpMeta$.$tagName$);var n=e.$lazyInstance$;var a;if(t){{e.$flags$|=256;if(e.$queuedListeners$){e.$queuedListeners$.map((function(e){var t=e[0],r=e[1];return safeCall(n,t,r)}));e.$queuedListeners$=null}}{a=safeCall(n,\"componentWillLoad\")}}{a=then(a,(function(){return safeCall(n,\"componentWillRender\")}))}r();return then(a,(function(){return updateComponent(e,n,t)}))};var updateComponent=function(e,t,r){return __awaiter(void 0,void 0,void 0,(function(){var n,a,o,s,i,l;return __generator(this,(function($){n=e.$hostElement$;a=createTime(\"update\",e.$cmpMeta$.$tagName$);o=n[\"s-rc\"];if(r){attachStyles(e)}s=createTime(\"render\",e.$cmpMeta$.$tagName$);{callRender(e,t)}if(plt.$cssShim$){plt.$cssShim$.updateHost(n)}if(o){o.map((function(e){return e()}));n[\"s-rc\"]=undefined}s();a();{i=n[\"s-p\"];l=function(){return postUpdateComponent(e)};if(i.length===0){l()}else{Promise.all(i).then(l);e.$flags$|=4;i.length=0}}return[2]}))}))};var callRender=function(e,t,r){try{t=t.render&&t.render();{e.$flags$&=~16}{e.$flags$|=2}{{{renderVdom(e,t)}}}}catch(n){consoleError(n,e.$hostElement$)}return null};var postUpdateComponent=function(e){var t=e.$cmpMeta$.$tagName$;var r=e.$hostElement$;var n=createTime(\"postUpdate\",t);var a=e.$lazyInstance$;var o=e.$ancestorComponent$;if(!(e.$flags$&64)){e.$flags$|=64;{addHydratedFlag(r)}{safeCall(a,\"componentDidLoad\")}n();{e.$onReadyResolve$(r);if(!o){appDidLoad()}}}else{{safeCall(a,\"componentDidUpdate\")}n()}{e.$onInstanceResolve$(r)}{if(e.$onRenderResolve$){e.$onRenderResolve$();e.$onRenderResolve$=undefined}if(e.$flags$&512){nextTick((function(){return scheduleUpdate(e,false)}))}e.$flags$&=~(4|512)}};var forceUpdate=function(e){{var t=getHostRef(e);var r=t.$hostElement$.isConnected;if(r&&(t.$flags$&(2|16))===2){scheduleUpdate(t,false)}return r}};var appDidLoad=function(e){{addHydratedFlag(doc.documentElement)}nextTick((function(){return emitEvent(win,\"appload\",{detail:{namespace:NAMESPACE}})}))};var safeCall=function(e,t,r){if(e&&e[t]){try{return e[t](r)}catch(n){consoleError(n)}}return undefined};var then=function(e,t){return e&&e.then?e.then(t):t()};var addHydratedFlag=function(e){return e.classList.add(\"hydrated\")};var initializeClientHydrate=function(e,t,r,n){var a=createTime(\"hydrateClient\",t);var o=e.shadowRoot;var s=[];var i=[];var l=o?[]:null;var $=n.$vnode$=newVNode(t,null);if(!plt.$orgLocNodes$){initializeDocumentHydrate(doc.body,plt.$orgLocNodes$=new Map)}e[HYDRATE_ID]=r;e.removeAttribute(HYDRATE_ID);clientHydrate($,s,i,l,e,e,r);s.map((function(e){var r=e.$hostId$+\".\"+e.$nodeId$;var n=plt.$orgLocNodes$.get(r);var a=e.$elm$;if(n&&supportsShadow&&n[\"s-en\"]===\"\"){n.parentNode.insertBefore(a,n.nextSibling)}if(!o){a[\"s-hn\"]=t;if(n){a[\"s-ol\"]=n;a[\"s-ol\"][\"s-nr\"]=a}}plt.$orgLocNodes$.delete(r)}));if(o){l.map((function(e){if(e){o.appendChild(e)}}))}a()};var clientHydrate=function(e,t,r,n,a,o,s){var i;var l;var $;var c;if(o.nodeType===1){i=o.getAttribute(HYDRATE_CHILD_ID);if(i){l=i.split(\".\");if(l[0]===s||l[0]===\"0\"){$={$flags$:0,$hostId$:l[0],$nodeId$:l[1],$depth$:l[2],$index$:l[3],$tag$:o.tagName.toLowerCase(),$elm$:o,$attrs$:null,$children$:null,$key$:null,$name$:null,$text$:null};t.push($);o.removeAttribute(HYDRATE_CHILD_ID);if(!e.$children$){e.$children$=[]}e.$children$[$.$index$]=$;e=$;if(n&&$.$depth$===\"0\"){n[$.$index$]=$.$elm$}}}for(c=o.childNodes.length-1;c>=0;c--){clientHydrate(e,t,r,n,a,o.childNodes[c],s)}if(o.shadowRoot){for(c=o.shadowRoot.childNodes.length-1;c>=0;c--){clientHydrate(e,t,r,n,a,o.shadowRoot.childNodes[c],s)}}}else if(o.nodeType===8){l=o.nodeValue.split(\".\");if(l[1]===s||l[1]===\"0\"){i=l[0];$={$flags$:0,$hostId$:l[1],$nodeId$:l[2],$depth$:l[3],$index$:l[4],$elm$:o,$attrs$:null,$children$:null,$key$:null,$name$:null,$tag$:null,$text$:null};if(i===TEXT_NODE_ID){$.$elm$=o.nextSibling;if($.$elm$&&$.$elm$.nodeType===3){$.$text$=$.$elm$.textContent;t.push($);o.remove();if(!e.$children$){e.$children$=[]}e.$children$[$.$index$]=$;if(n&&$.$depth$===\"0\"){n[$.$index$]=$.$elm$}}}else if($.$hostId$===s){if(i===SLOT_NODE_ID){$.$tag$=\"slot\";if(l[5]){o[\"s-sn\"]=$.$name$=l[5]}else{o[\"s-sn\"]=\"\"}o[\"s-sr\"]=true;if(n){$.$elm$=doc.createElement($.$tag$);if($.$name$){$.$elm$.setAttribute(\"name\",$.$name$)}o.parentNode.insertBefore($.$elm$,o);o.remove();if($.$depth$===\"0\"){n[$.$index$]=$.$elm$}}r.push($);if(!e.$children$){e.$children$=[]}e.$children$[$.$index$]=$}else if(i===CONTENT_REF_ID){if(n){o.remove()}else{a[\"s-cr\"]=o;o[\"s-cn\"]=true}}}}}else if(e&&e.$tag$===\"style\"){var f=newVNode(null,o.textContent);f.$elm$=o;f.$index$=\"0\";e.$children$=[f]}};var initializeDocumentHydrate=function(e,t){if(e.nodeType===1){var r=0;for(;r<e.childNodes.length;r++){initializeDocumentHydrate(e.childNodes[r],t)}if(e.shadowRoot){for(r=0;r<e.shadowRoot.childNodes.length;r++){initializeDocumentHydrate(e.shadowRoot.childNodes[r],t)}}}else if(e.nodeType===8){var n=e.nodeValue.split(\".\");if(n[0]===ORG_LOCATION_ID){t.set(n[1]+\".\"+n[2],e);e.nodeValue=\"\";e[\"s-en\"]=n[3]}}};var parsePropertyValue=function(e,t){if(e!=null&&!isComplexType(e)){if(t&4){return e===\"false\"?false:e===\"\"||!!e}if(t&2){return parseFloat(e)}if(t&1){return String(e)}return e}return e};var getValue=function(e,t){return getHostRef(e).$instanceValues$.get(t)};var setValue=function(e,t,r,n){var a=getHostRef(e);var o=a.$hostElement$;var s=a.$instanceValues$.get(t);var i=a.$flags$;var l=a.$lazyInstance$;r=parsePropertyValue(r,n.$members$[t][0]);if((!(i&8)||s===undefined)&&r!==s){a.$instanceValues$.set(t,r);if(l){if(n.$watchers$&&i&128){var $=n.$watchers$[t];if($){$.map((function(e){try{l[e](r,s,t)}catch(n){consoleError(n,o)}}))}}if((i&(2|16))===2){scheduleUpdate(a,false)}}}};var proxyComponent=function(e,t,r){if(t.$members$){if(e.watchers){t.$watchers$=e.watchers}var n=Object.entries(t.$members$);var a=e.prototype;n.map((function(e){var n=e[0],o=e[1][0];if(o&31||r&2&&o&32){Object.defineProperty(a,n,{get:function(){return getValue(this,n)},set:function(e){setValue(this,n,e,t)},configurable:true,enumerable:true})}else if(r&1&&o&64){Object.defineProperty(a,n,{value:function(){var e=[];for(var t=0;t<arguments.length;t++){e[t]=arguments[t]}var r=getHostRef(this);return r.$onInstancePromise$.then((function(){var t;return(t=r.$lazyInstance$)[n].apply(t,e)}))}})}}));if(r&1){var o=new Map;a.attributeChangedCallback=function(e,t,r){var n=this;plt.jmp((function(){var t=o.get(e);n[t]=r===null&&typeof n[t]===\"boolean\"?false:r}))};e.observedAttributes=n.filter((function(e){var t=e[0],r=e[1];return r[0]&15})).map((function(e){var r=e[0],n=e[1];var a=n[1]||r;o.set(a,r);if(n[0]&512){t.$attrsToReflect$.push([r,a])}return a}))}}return e};var initializeComponent=function(e,t,r,n,a){return __awaiter(void 0,void 0,void 0,(function(){var n,o,s,i,l,$,c;return __generator(this,(function(f){switch(f.label){case 0:if(!((t.$flags$&32)===0))return[3,5];t.$flags$|=32;a=loadModule(r);if(!a.then)return[3,2];n=uniqueTime();return[4,a];case 1:a=f.sent();n();f.label=2;case 2:if(!a.isProxied){{r.$watchers$=a.watchers}proxyComponent(a,r,2);a.isProxied=true}o=createTime(\"createInstance\",r.$tagName$);{t.$flags$|=8}try{new a(t)}catch(u){consoleError(u)}{t.$flags$&=~8}{t.$flags$|=128}o();fireConnectedCallback(t.$lazyInstance$);if(!a.style)return[3,5];s=a.style;if(typeof s!==\"string\"){s=s[t.$modeName$=computeMode(e)]}i=getScopeId(r,t.$modeName$);if(!!styles.has(i))return[3,5];l=createTime(\"registerStyles\",r.$tagName$);if(!(r.$flags$&8))return[3,4];return[4,import(\"./shadow-css-a3f00b33.js\").then((function(e){return e.scopeCss(s,i,false)}))];case 3:s=f.sent();f.label=4;case 4:registerStyle(i,s,!!(r.$flags$&1));l();f.label=5;case 5:$=t.$ancestorComponent$;c=function(){return scheduleUpdate(t,true)};if($&&$[\"s-rc\"]){$[\"s-rc\"].push(c)}else{c()}return[2]}}))}))};var fireConnectedCallback=function(e){{safeCall(e,\"connectedCallback\")}};var connectedCallback=function(e){if((plt.$flags$&1)===0){var t=getHostRef(e);var r=t.$cmpMeta$;var n=createTime(\"connectedCallback\",r.$tagName$);if(!(t.$flags$&1)){t.$flags$|=1;var a=void 0;{a=e.getAttribute(HYDRATE_ID);if(a){if(supportsShadow&&r.$flags$&1){var o=addStyle(e.shadowRoot,r,e.getAttribute(\"s-mode\"));e.classList.remove(o+\"-h\",o+\"-s\")}initializeClientHydrate(e,r.$tagName$,a,t)}}if(!a){if(r.$flags$&(4|8)){setContentReference(e)}}{var s=e;while(s=s.parentNode||s.host){if(s.nodeType===1&&s.hasAttribute(\"s-id\")&&s[\"s-p\"]||s[\"s-p\"]){attachToAncestor(t,t.$ancestorComponent$=s);break}}}if(r.$members$){Object.entries(r.$members$).map((function(t){var r=t[0],n=t[1][0];if(n&31&&e.hasOwnProperty(r)){var a=e[r];delete e[r];e[r]=a}}))}{nextTick((function(){return initializeComponent(e,t,r)}))}}else{addHostEventListeners(e,t,r.$listeners$);fireConnectedCallback(t.$lazyInstance$)}n()}};var setContentReference=function(e){var t=e[\"s-cr\"]=doc.createComment(\"\");t[\"s-cn\"]=true;e.insertBefore(t,e.firstChild)};var disconnectedCallback=function(e){if((plt.$flags$&1)===0){var t=getHostRef(e);var r=t.$lazyInstance$;{if(t.$rmListeners$){t.$rmListeners$.map((function(e){return e()}));t.$rmListeners$=undefined}}if(plt.$cssShim$){plt.$cssShim$.removeHost(e)}{safeCall(r,\"disconnectedCallback\")}}};var bootstrapLazy=function(e,t){if(t===void 0){t={}}var r=createTime();var n=[];var a=t.exclude||[];var o=win.customElements;var s=doc.head;var i=s.querySelector(\"meta[charset]\");var l=doc.createElement(\"style\");var $=[];var c=doc.querySelectorAll(\"[\"+HYDRATED_STYLE_ID+\"]\");var f;var u=true;var d=0;Object.assign(plt,t);plt.$resourcesUrl$=new URL(t.resourcesUrl||\"./\",doc.baseURI).href;{plt.$flags$|=2}{for(;d<c.length;d++){registerStyle(c[d].getAttribute(HYDRATED_STYLE_ID),convertScopedToShadow(c[d].innerHTML),true)}}e.map((function(e){return e[1].map((function(t){var r={$flags$:t[0],$tagName$:t[1],$members$:t[2],$listeners$:t[3]};{r.$members$=t[2]}{r.$listeners$=t[3]}{r.$attrsToReflect$=[]}{r.$watchers$={}}if(!supportsShadow&&r.$flags$&1){r.$flags$|=8}var s=r.$tagName$;var i=function(e){__extends(t,e);function t(t){var n=e.call(this,t)||this;t=n;registerHost(t,r);if(r.$flags$&1){if(supportsShadow){{t.attachShadow({mode:\"open\",delegatesFocus:!!(r.$flags$&16)})}}else if(!(\"shadowRoot\"in t)){t.shadowRoot=t}}return n}t.prototype.connectedCallback=function(){var e=this;if(f){clearTimeout(f);f=null}if(u){$.push(this)}else{plt.jmp((function(){return connectedCallback(e)}))}};t.prototype.disconnectedCallback=function(){var e=this;plt.jmp((function(){return disconnectedCallback(e)}))};t.prototype.componentOnReady=function(){return getHostRef(this).$onReadyPromise$};return t}(HTMLElement);r.$lazyBundleId$=e[0];if(!a.includes(s)&&!o.get(s)){n.push(s);o.define(s,proxyComponent(i,r,1))}}))}));{l.innerHTML=n+HYDRATED_CSS;l.setAttribute(\"data-styles\",\"\");s.insertBefore(l,i?i.nextSibling:s.firstChild)}u=false;if($.length){$.map((function(e){return e.connectedCallback()}))}else{{plt.jmp((function(){return f=setTimeout(appDidLoad,30)}))}}r()};var getAssetPath=function(e){var t=new URL(e,plt.$resourcesUrl$);return t.origin!==win.location.origin?t.href:t.pathname};var hostRefs=new WeakMap;var getHostRef=function(e){return hostRefs.get(e)};var registerInstance=function(e,t){return hostRefs.set(t.$lazyInstance$=e,t)};var registerHost=function(e,t){var r={$flags$:0,$hostElement$:e,$cmpMeta$:t,$instanceValues$:new Map};{r.$onInstancePromise$=new Promise((function(e){return r.$onInstanceResolve$=e}))}{r.$onReadyPromise$=new Promise((function(e){return r.$onReadyResolve$=e}));e[\"s-p\"]=[];e[\"s-rc\"]=[]}addHostEventListeners(e,r,t.$listeners$);return hostRefs.set(e,r)};var isMemberInElement=function(e,t){return t in e};var consoleError=function(e,t){return(0,console.error)(e,t)};var cmpModules=new Map;var loadModule=function(e,t,r){var n=e.$tagName$.replace(/-/g,\"_\");var a=e.$lazyBundleId$;var o=cmpModules.get(a);if(o){return o[n]}return import(\"./\"+a+\".entry.js\"+\"\").then((function(e){{cmpModules.set(a,e)}return e[n]}),consoleError)};var styles=new Map;var modeResolutionChain=[];var queueDomReads=[];var queueDomWrites=[];var queueTask=function(e,t){return function(r){e.push(r);if(!queuePending){queuePending=true;if(t&&plt.$flags$&4){nextTick(flush)}else{plt.raf(flush)}}}};var consume=function(e){for(var t=0;t<e.length;t++){try{e[t](performance.now())}catch(r){consoleError(r)}}e.length=0};var flush=function(){consume(queueDomReads);{consume(queueDomWrites);if(queuePending=queueDomReads.length>0){plt.raf(flush)}}};var nextTick=function(e){return promiseResolve().then(e)};var readTask=queueTask(queueDomReads,false);var writeTask=queueTask(queueDomWrites,true);var Build={isDev:false,isBrowser:true,isServer:false,isTesting:false};export{Build as B,CSS as C,Host as H,NAMESPACE as N,promiseResolve as a,bootstrapLazy as b,writeTask as c,doc as d,createEvent as e,readTask as f,getMode as g,h,getElement as i,forceUpdate as j,getAssetPath as k,plt as p,registerInstance as r,setMode as s,win as w};","import{g as getMode,s as setMode}from\"./index-7a8b7a1c.js\";var getPlatforms=function(t){return setupPlatforms(t)};var isPlatform=function(t,e){if(typeof t===\"string\"){e=t;t=undefined}return getPlatforms(t).includes(e)};var setupPlatforms=function(t){if(t===void 0){t=window}if(typeof t===\"undefined\"){return[]}t.Ionic=t.Ionic||{};var e=t.Ionic.platforms;if(e==null){e=t.Ionic.platforms=detectPlatforms(t);e.forEach((function(e){return t.document.documentElement.classList.add(\"plt-\"+e)}))}return e};var detectPlatforms=function(t){return Object.keys(PLATFORMS_MAP).filter((function(e){return PLATFORMS_MAP[e](t)}))};var isMobileWeb=function(t){return isMobile(t)&&!isHybrid(t)};var isIpad=function(t){if(testUserAgent(t,/iPad/i)){return true}if(testUserAgent(t,/Macintosh/i)&&isMobile(t)){return true}return false};var isIphone=function(t){return testUserAgent(t,/iPhone/i)};var isIOS=function(t){return testUserAgent(t,/iPhone|iPod/i)||isIpad(t)};var isAndroid=function(t){return testUserAgent(t,/android|sink/i)};var isAndroidTablet=function(t){return isAndroid(t)&&!testUserAgent(t,/mobile/i)};var isPhablet=function(t){var e=t.innerWidth;var n=t.innerHeight;var i=Math.min(e,n);var r=Math.max(e,n);return i>390&&i<520&&(r>620&&r<800)};var isTablet=function(t){var e=t.innerWidth;var n=t.innerHeight;var i=Math.min(e,n);var r=Math.max(e,n);return isIpad(t)||isAndroidTablet(t)||i>460&&i<820&&(r>780&&r<1400)};var isMobile=function(t){return matchMedia(t,\"(any-pointer:coarse)\")};var isDesktop=function(t){return!isMobile(t)};var isHybrid=function(t){return isCordova(t)||isCapacitorNative(t)};var isCordova=function(t){return!!(t[\"cordova\"]||t[\"phonegap\"]||t[\"PhoneGap\"])};var isCapacitorNative=function(t){var e=t[\"Capacitor\"];return!!(e&&e.isNative)};var isElectron=function(t){return testUserAgent(t,/electron/i)};var isPWA=function(t){return!!(t.matchMedia(\"(display-mode: standalone)\").matches||t.navigator.standalone)};var testUserAgent=function(t,e){return e.test(t.navigator.userAgent)};var matchMedia=function(t,e){return t.matchMedia(e).matches};var PLATFORMS_MAP={ipad:isIpad,iphone:isIphone,ios:isIOS,android:isAndroid,phablet:isPhablet,tablet:isTablet,cordova:isCordova,capacitor:isCapacitorNative,electron:isElectron,pwa:isPWA,mobile:isMobile,mobileweb:isMobileWeb,desktop:isDesktop,hybrid:isHybrid};var Config=function(){function t(){this.m=new Map}t.prototype.reset=function(t){this.m=new Map(Object.entries(t))};t.prototype.get=function(t,e){var n=this.m.get(t);return n!==undefined?n:e};t.prototype.getBoolean=function(t,e){if(e===void 0){e=false}var n=this.m.get(t);if(n===undefined){return e}if(typeof n===\"string\"){return n===\"true\"}return!!n};t.prototype.getNumber=function(t,e){var n=parseFloat(this.m.get(t));return isNaN(n)?e!==undefined?e:NaN:n};t.prototype.set=function(t,e){this.m.set(t,e)};return t}();var config=new Config;var configFromSession=function(t){try{var e=t.sessionStorage.getItem(IONIC_SESSION_KEY);return e!==null?JSON.parse(e):{}}catch(n){return{}}};var saveConfig=function(t,e){try{t.sessionStorage.setItem(IONIC_SESSION_KEY,JSON.stringify(e))}catch(n){return}};var configFromURL=function(t){var e={};t.location.search.slice(1).split(\"&\").map((function(t){return t.split(\"=\")})).map((function(t){var e=t[0],n=t[1];return[decodeURIComponent(e),decodeURIComponent(n)]})).filter((function(t){var e=t[0];return startsWith(e,IONIC_PREFIX)})).map((function(t){var e=t[0],n=t[1];return[e.slice(IONIC_PREFIX.length),n]})).forEach((function(t){var n=t[0],i=t[1];e[n]=i}));return e};var startsWith=function(t,e){return t.substr(0,e.length)===e};var IONIC_PREFIX=\"ionic:\";var IONIC_SESSION_KEY=\"ionic-persist-config\";var defaultMode;var getIonMode=function(t){return t&&getMode(t)||defaultMode};var initialize=function(t){if(t===void 0){t={}}if(typeof window===\"undefined\"){return}var e=window.document;var n=window;var i=n.Ionic=n.Ionic||{};setupPlatforms(n);var r=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},configFromSession(n)),{persistConfig:false}),i.config),configFromURL(n)),t);config.reset(r);if(config.getBoolean(\"persistConfig\")){saveConfig(n,r)}i.config=config;i.mode=defaultMode=config.get(\"mode\",e.documentElement.getAttribute(\"mode\")||(isPlatform(n,\"ios\")?\"ios\":\"md\"));config.set(\"mode\",defaultMode);e.documentElement.setAttribute(\"mode\",defaultMode);e.documentElement.classList.add(defaultMode);if(config.getBoolean(\"_testing\")){config.set(\"animated\",false)}var o=function(t){return t.tagName&&t.tagName.startsWith(\"ION-\")};var a=function(t){return[\"ios\",\"md\"].includes(t)};setMode((function(t){while(t){var e=t.mode||t.getAttribute(\"mode\");if(e){if(a(e)){return e}else if(o(t)){console.warn('Invalid ionic mode: \"'+e+'\", expected: \"ios\" or \"md\"')}}t=t.parentElement}return defaultMode}))};export{isPlatform as a,getIonMode as b,config as c,getPlatforms as g,initialize as i};","import { CapacitorWeb } from './web-runtime';\n// Create our default Capacitor instance, which will be\n// overridden on native platforms\nvar Capacitor = (function (globalThis) {\n    // Create a new CapacitorWeb instance if one doesn't already exist on globalThis\n    // Ensure the global is assigned the same Capacitor instance,\n    // then export Capacitor so it can be imported in other modules\n    return globalThis.Capacitor = (globalThis.Capacitor || new CapacitorWeb());\n})(\n// figure out the current globalThis, such as \"window\", \"self\" or \"global\"\n// ensure errors are not thrown in an node SSR environment or web worker\ntypeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {});\nvar Plugins = Capacitor.Plugins;\nexport { Capacitor, Plugins };\n//# sourceMappingURL=global.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nrequire(\"react-calendar/dist/Calendar.css\");\n\nvar _DatePicker = _interopRequireDefault(require(\"./DatePicker\"));\n\nrequire(\"./DatePicker.css\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// File is created during build phase and placed in dist directory\n// eslint-disable-next-line import/no-unresolved\nvar _default = _DatePicker[\"default\"];\nexports[\"default\"] = _default;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n    Promise: undefined,\n    set useDeprecatedSynchronousErrorHandling(value) {\n        if (value) {\n            var error = /*@__PURE__*/ new Error();\n            /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n        }\n        else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n            /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n        }\n        _enable_super_gross_mode_that_will_cause_bad_things = value;\n    },\n    get useDeprecatedSynchronousErrorHandling() {\n        return _enable_super_gross_mode_that_will_cause_bad_things;\n    },\n};\n//# sourceMappingURL=config.js.map\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (toString.call(val) !== '[object Object]') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM\n};\n","import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n  public userAgent?: string;\n  public errors: number = 0;\n  public release?: string;\n  public sid: string = uuid4();\n  public did?: string;\n  public timestamp: number;\n  public started: number;\n  public duration?: number = 0;\n  public status: SessionStatus = 'ok';\n  public environment?: string;\n  public ipAddress?: string;\n  public init: boolean = true;\n  public ignoreDuration: boolean = false;\n\n  public constructor(context?: Omit<SessionContext, 'started' | 'status'>) {\n    // Both timestamp and started are in seconds since the UNIX epoch.\n    const startingTime = timestampInSeconds();\n    this.timestamp = startingTime;\n    this.started = startingTime;\n    if (context) {\n      this.update(context);\n    }\n  }\n\n  /** JSDoc */\n  // eslint-disable-next-line complexity\n  public update(context: SessionContext = {}): void {\n    if (context.user) {\n      if (!this.ipAddress && context.user.ip_address) {\n        this.ipAddress = context.user.ip_address;\n      }\n\n      if (!this.did && !context.did) {\n        this.did = context.user.id || context.user.email || context.user.username;\n      }\n    }\n\n    this.timestamp = context.timestamp || timestampInSeconds();\n    if (context.ignoreDuration) {\n      this.ignoreDuration = context.ignoreDuration;\n    }\n    if (context.sid) {\n      // Good enough uuid validation. — Kamil\n      this.sid = context.sid.length === 32 ? context.sid : uuid4();\n    }\n    if (context.init !== undefined) {\n      this.init = context.init;\n    }\n    if (!this.did && context.did) {\n      this.did = `${context.did}`;\n    }\n    if (typeof context.started === 'number') {\n      this.started = context.started;\n    }\n    if (this.ignoreDuration) {\n      this.duration = undefined;\n    } else if (typeof context.duration === 'number') {\n      this.duration = context.duration;\n    } else {\n      const duration = this.timestamp - this.started;\n      this.duration = duration >= 0 ? duration : 0;\n    }\n    if (context.release) {\n      this.release = context.release;\n    }\n    if (context.environment) {\n      this.environment = context.environment;\n    }\n    if (!this.ipAddress && context.ipAddress) {\n      this.ipAddress = context.ipAddress;\n    }\n    if (!this.userAgent && context.userAgent) {\n      this.userAgent = context.userAgent;\n    }\n    if (typeof context.errors === 'number') {\n      this.errors = context.errors;\n    }\n    if (context.status) {\n      this.status = context.status;\n    }\n  }\n\n  /** JSDoc */\n  public close(status?: Exclude<SessionStatus, 'ok'>): void {\n    if (status) {\n      this.update({ status });\n    } else if (this.status === 'ok') {\n      this.update({ status: 'exited' });\n    } else {\n      this.update();\n    }\n  }\n\n  /** JSDoc */\n  public toJSON(): {\n    init: boolean;\n    sid: string;\n    did?: string;\n    timestamp: string;\n    started: string;\n    duration?: number;\n    status: SessionStatus;\n    errors: number;\n    attrs?: {\n      release?: string;\n      environment?: string;\n      user_agent?: string;\n      ip_address?: string;\n    };\n  } {\n    return dropUndefinedKeys({\n      sid: `${this.sid}`,\n      init: this.init,\n      // Make sure that sec is converted to ms for date constructor\n      started: new Date(this.started * 1000).toISOString(),\n      timestamp: new Date(this.timestamp * 1000).toISOString(),\n      status: this.status,\n      errors: this.errors,\n      did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n      duration: this.duration,\n      attrs: {\n        release: this.release,\n        environment: this.environment,\n        ip_address: this.ipAddress,\n        user_agent: this.userAgent,\n      },\n    });\n  }\n}\n","function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n  return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n  // Test for strict equality first.\n  if (a === b) return true;\n\n  // Otherwise, if either of them == null they are not equal.\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return (\n      Array.isArray(b) &&\n      a.length === b.length &&\n      a.every(function(item, index) {\n        return valueEqual(item, b[index]);\n      })\n    );\n  }\n\n  if (typeof a === 'object' || typeof b === 'object') {\n    var aValue = valueOf(a);\n    var bValue = valueOf(b);\n\n    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n    return Object.keys(Object.assign({}, a, b)).every(function(key) {\n      return valueEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","module.exports = assert;\n\nfunction assert(val, msg) {\n  if (!val)\n    throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n  if (l != r)\n    throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n  var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n  naf.fill(0);\n\n  var ws = 1 << (w + 1);\n  var k = num.clone();\n\n  for (var i = 0; i < naf.length; i++) {\n    var z;\n    var mod = k.andln(ws - 1);\n    if (k.isOdd()) {\n      if (mod > (ws >> 1) - 1)\n        z = (ws >> 1) - mod;\n      else\n        z = mod;\n      k.isubn(z);\n    } else {\n      z = 0;\n    }\n\n    naf[i] = z;\n    k.iushrn(1);\n  }\n\n  return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n  var jsf = [\n    [],\n    [],\n  ];\n\n  k1 = k1.clone();\n  k2 = k2.clone();\n  var d1 = 0;\n  var d2 = 0;\n  var m8;\n  while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n    // First phase\n    var m14 = (k1.andln(3) + d1) & 3;\n    var m24 = (k2.andln(3) + d2) & 3;\n    if (m14 === 3)\n      m14 = -1;\n    if (m24 === 3)\n      m24 = -1;\n    var u1;\n    if ((m14 & 1) === 0) {\n      u1 = 0;\n    } else {\n      m8 = (k1.andln(7) + d1) & 7;\n      if ((m8 === 3 || m8 === 5) && m24 === 2)\n        u1 = -m14;\n      else\n        u1 = m14;\n    }\n    jsf[0].push(u1);\n\n    var u2;\n    if ((m24 & 1) === 0) {\n      u2 = 0;\n    } else {\n      m8 = (k2.andln(7) + d2) & 7;\n      if ((m8 === 3 || m8 === 5) && m14 === 2)\n        u2 = -m24;\n      else\n        u2 = m24;\n    }\n    jsf[1].push(u2);\n\n    // Second phase\n    if (2 * d1 === u1 + 1)\n      d1 = 1 - d1;\n    if (2 * d2 === u2 + 1)\n      d2 = 1 - d2;\n    k1.iushrn(1);\n    k2.iushrn(1);\n  }\n\n  return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n  var key = '_' + name;\n  obj.prototype[name] = function cachedProperty() {\n    return this[key] !== undefined ? this[key] :\n      this[key] = computer.call(this);\n  };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n  return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n    bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n  return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // eslint-disable-next-line no-param-reassign\n    colno = lineLength;\n  }\n\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += ' {snip}';\n  }\n\n  return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n  if (!Array.isArray(input)) {\n    return '';\n  }\n\n  const output = [];\n  // eslint-disable-next-line @typescript-eslint/prefer-for-of\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n    try {\n      output.push(String(value));\n    } catch (e) {\n      output.push('[value cannot be serialized]');\n    }\n  }\n\n  return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n  if (!isString(value)) {\n    return false;\n  }\n\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (typeof pattern === 'string') {\n    return value.indexOf(pattern) !== -1;\n  }\n  return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n  // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n  // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n  return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","import{__awaiter,__generator}from\"tslib\";import{c as writeTask,B as Build}from\"./index-7a8b7a1c.js\";import{c as componentOnReady}from\"./helpers-1457892a.js\";var LIFECYCLE_WILL_ENTER=\"ionViewWillEnter\";var LIFECYCLE_DID_ENTER=\"ionViewDidEnter\";var LIFECYCLE_WILL_LEAVE=\"ionViewWillLeave\";var LIFECYCLE_DID_LEAVE=\"ionViewDidLeave\";var LIFECYCLE_WILL_UNLOAD=\"ionViewWillUnload\";var iosTransitionAnimation=function(){return import(\"./ios.transition-7812dd37.js\")};var mdTransitionAnimation=function(){return import(\"./md.transition-51c13987.js\")};var transition=function(e){return new Promise((function(n,i){writeTask((function(){beforeTransition(e);runTransition(e).then((function(i){if(i.animation){i.animation.destroy()}afterTransition(e);n(i)}),(function(n){afterTransition(e);i(n)}))}))}))};var beforeTransition=function(e){var n=e.enteringEl;var i=e.leavingEl;setZIndex(n,i,e.direction);if(e.showGoBack){n.classList.add(\"can-go-back\")}else{n.classList.remove(\"can-go-back\")}setPageHidden(n,false);n.style.setProperty(\"pointer-events\",\"none\");if(i){setPageHidden(i,false);i.style.setProperty(\"pointer-events\",\"none\")}};var runTransition=function(e){return __awaiter(void 0,void 0,void 0,(function(){var n,i;return __generator(this,(function(r){switch(r.label){case 0:return[4,getAnimationBuilder(e)];case 1:n=r.sent();i=n&&Build.isBrowser?animation(n,e):noAnimation(e);return[2,i]}}))}))};var afterTransition=function(e){var n=e.enteringEl;var i=e.leavingEl;n.classList.remove(\"ion-page-invisible\");n.style.removeProperty(\"pointer-events\");if(i!==undefined){i.classList.remove(\"ion-page-invisible\");i.style.removeProperty(\"pointer-events\")}};var getAnimationBuilder=function(e){return __awaiter(void 0,void 0,void 0,(function(){var n,i;return __generator(this,(function(r){switch(r.label){case 0:if(!e.leavingEl||!e.animated||e.duration===0){return[2,undefined]}if(e.animationBuilder){return[2,e.animationBuilder]}if(!(e.mode===\"ios\"))return[3,2];return[4,iosTransitionAnimation()];case 1:i=r.sent().iosTransitionAnimation;return[3,4];case 2:return[4,mdTransitionAnimation()];case 3:i=r.sent().mdTransitionAnimation;r.label=4;case 4:n=i;return[2,n]}}))}))};var animation=function(e,n){return __awaiter(void 0,void 0,void 0,(function(){var i,r;return __generator(this,(function(t){switch(t.label){case 0:return[4,waitForReady(n,true)];case 1:t.sent();i=e(n.baseEl,n);fireWillEvents(n.enteringEl,n.leavingEl);return[4,playTransition(i,n)];case 2:r=t.sent();if(n.progressCallback){n.progressCallback(undefined)}if(r){fireDidEvents(n.enteringEl,n.leavingEl)}return[2,{hasCompleted:r,animation:i}]}}))}))};var noAnimation=function(e){return __awaiter(void 0,void 0,void 0,(function(){var n,i;return __generator(this,(function(r){switch(r.label){case 0:n=e.enteringEl;i=e.leavingEl;return[4,waitForReady(e,false)];case 1:r.sent();fireWillEvents(n,i);fireDidEvents(n,i);return[2,{hasCompleted:true}]}}))}))};var waitForReady=function(e,n){return __awaiter(void 0,void 0,void 0,(function(){var i,r;return __generator(this,(function(t){switch(t.label){case 0:i=e.deepWait!==undefined?e.deepWait:n;r=i?[deepReady(e.enteringEl),deepReady(e.leavingEl)]:[shallowReady(e.enteringEl),shallowReady(e.leavingEl)];return[4,Promise.all(r)];case 1:t.sent();return[4,notifyViewReady(e.viewIsReady,e.enteringEl)];case 2:t.sent();return[2]}}))}))};var notifyViewReady=function(e,n){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(i){switch(i.label){case 0:if(!e)return[3,2];return[4,e(n)];case 1:i.sent();i.label=2;case 2:return[2]}}))}))};var playTransition=function(e,n){var i=n.progressCallback;var r=new Promise((function(n){e.onFinish((function(e){return n(e===1)}))}));if(i){e.progressStart(true);i(e)}else{e.play()}return r};var fireWillEvents=function(e,n){lifecycle(n,LIFECYCLE_WILL_LEAVE);lifecycle(e,LIFECYCLE_WILL_ENTER)};var fireDidEvents=function(e,n){lifecycle(e,LIFECYCLE_DID_ENTER);lifecycle(n,LIFECYCLE_DID_LEAVE)};var lifecycle=function(e,n){if(e){var i=new CustomEvent(n,{bubbles:false,cancelable:false});e.dispatchEvent(i)}};var shallowReady=function(e){if(e){return new Promise((function(n){return componentOnReady(e,n)}))}return Promise.resolve()};var deepReady=function(e){return __awaiter(void 0,void 0,void 0,(function(){var n,i;return __generator(this,(function(r){switch(r.label){case 0:n=e;if(!n)return[3,4];if(!(n.componentOnReady!=null))return[3,2];return[4,n.componentOnReady()];case 1:i=r.sent();if(i!=null){return[2]}r.label=2;case 2:return[4,Promise.all(Array.from(n.children).map(deepReady))];case 3:r.sent();r.label=4;case 4:return[2]}}))}))};var setPageHidden=function(e,n){if(n){e.setAttribute(\"aria-hidden\",\"true\");e.classList.add(\"ion-page-hidden\")}else{e.hidden=false;e.removeAttribute(\"aria-hidden\");e.classList.remove(\"ion-page-hidden\")}};var setZIndex=function(e,n,i){if(e!==undefined){e.style.zIndex=i===\"back\"?\"99\":\"101\"}if(n!==undefined){n.style.zIndex=\"100\"}};var getIonPageElement=function(e){if(e.classList.contains(\"ion-page\")){return e}var n=e.querySelector(\":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs\");if(n){return n}return e};export{LIFECYCLE_WILL_ENTER as L,LIFECYCLE_DID_ENTER as a,LIFECYCLE_WILL_LEAVE as b,LIFECYCLE_DID_LEAVE as c,LIFECYCLE_WILL_UNLOAD as d,deepReady as e,getIonPageElement as g,lifecycle as l,setPageHidden as s,transition as t};","export default function mergeClassNames() {\n  return Array.prototype.slice.call(arguments).reduce(function (classList, arg) {\n    return classList.concat(arg);\n  }, []).filter(function (arg) {\n    return typeof arg === 'string';\n  }).join(' ');\n}","import type {\n  Breadcrumb,\n  BreadcrumbHint,\n  CaptureContext,\n  CheckIn,\n  Client,\n  CustomSamplingContext,\n  Event,\n  EventHint,\n  Extra,\n  Extras,\n  FinishedCheckIn,\n  MonitorConfig,\n  Primitive,\n  Scope as ScopeInterface,\n  Session,\n  SessionContext,\n  Severity,\n  SeverityLevel,\n  Span,\n  TransactionContext,\n  User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  exception: any,\n  hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n  message: string,\n  // eslint-disable-next-line deprecation/deprecation\n  captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n  // This is necessary to provide explicit scopes upgrade, without changing the original\n  // arity of the `captureMessage(message, level)` method.\n  const level = typeof captureContext === 'string' ? captureContext : undefined;\n  const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType<Hub['configureScope']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType<Hub['addBreadcrumb']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType<Hub['setContext']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType<Hub['setExtras']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType<Hub['setExtra']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType<Hub['setTags']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType<Hub['setTag']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType<Hub['setUser']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n *     pushScope();\n *     callback();\n *     popScope();\n */\nexport function withScope<T>(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope<T>(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope<T>(\n  ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n    if (!scope) {\n      // eslint-disable-next-line deprecation/deprecation\n      return hub.withScope(callback);\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    return hub.withScope(() => {\n      // eslint-disable-next-line deprecation/deprecation\n      hub.getStackTop().scope = scope as Scope;\n      return callback(scope as Scope);\n    });\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope<T>(callback: (isolationScope: Scope) => T): T {\n  return runWithAsyncContext(() => {\n    return callback(getIsolationScope());\n  });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan<T>(span: Span, callback: (scope: Scope) => T): T {\n  return withScope(scope => {\n    // eslint-disable-next-line deprecation/deprecation\n    scope.setSpan(span);\n    return callback(scope);\n  });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n  context: TransactionContext,\n  customSamplingContext?: CustomSamplingContext,\n  // eslint-disable-next-line deprecation/deprecation\n): ReturnType<Hub['startTransaction']> {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n  const scope = getCurrentScope();\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n  }\n\n  return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor<T>(\n  monitorSlug: CheckIn['monitorSlug'],\n  callback: () => T,\n  upsertMonitorConfig?: MonitorConfig,\n): T {\n  const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n  const now = timestampInSeconds();\n\n  function finishCheckIn(status: FinishedCheckIn['status']): void {\n    captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n  }\n\n  let maybePromiseResult: T;\n  try {\n    maybePromiseResult = callback();\n  } catch (e) {\n    finishCheckIn('error');\n    throw e;\n  }\n\n  if (isThenable(maybePromiseResult)) {\n    Promise.resolve(maybePromiseResult).then(\n      () => {\n        finishCheckIn('ok');\n      },\n      () => {\n        finishCheckIn('error');\n      },\n    );\n  } else {\n    finishCheckIn('ok');\n  }\n\n  return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient<C extends Client>(): C | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getClient<C>();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n  return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n  const client = getClient();\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n  // Will fetch userAgent if called from browser sdk\n  const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n  const session = makeSession({\n    release,\n    environment,\n    user: currentScope.getUser() || isolationScope.getUser(),\n    ...(userAgent && { userAgent }),\n    ...context,\n  });\n\n  // End existing session if there's one\n  const currentSession = isolationScope.getSession();\n  if (currentSession && currentSession.status === 'ok') {\n    updateSession(currentSession, { status: 'exited' });\n  }\n\n  endSession();\n\n  // Afterwards we set the new session on the scope\n  isolationScope.setSession(session);\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession(session);\n\n  return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n\n  // the session is over; take it off of the scope\n  isolationScope.setSession();\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n  const client = getClient();\n  // TODO (v8): Remove currentScope and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session && client && client.captureSession) {\n    client.captureSession(session);\n  }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n *            Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n  // both send the update and pull the session from the scope\n  if (end) {\n    endSession();\n    return;\n  }\n\n  // only send the update\n  _sendSessionUpdate();\n}\n","import type {\n  Client,\n  Event,\n  EventHint,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n  IntegrationFnResult,\n  Options,\n} from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { addGlobalEventProcessor } from './eventProcessors';\nimport { getClient } from './exports';\nimport { getCurrentHub } from './hub';\n\ndeclare module '@sentry/types' {\n  interface Integration {\n    isDefaultInstance?: boolean;\n  }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n  [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n  const integrationsByName: { [key: string]: Integration } = {};\n\n  integrations.forEach(currentInstance => {\n    const { name } = currentInstance;\n\n    const existingInstance = integrationsByName[name];\n\n    // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n    // default instance to overwrite an existing user instance\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n\n    integrationsByName[name] = currentInstance;\n  });\n\n  return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Pick<Options, 'defaultIntegrations' | 'integrations'>): Integration[] {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n\n  // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n  defaultIntegrations.forEach(integration => {\n    integration.isDefaultInstance = true;\n  });\n\n  let integrations: Integration[];\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    integrations = arrayify(userIntegrations(defaultIntegrations));\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  const finalIntegrations = filterDuplicates(integrations);\n\n  // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n  // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n  // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n  // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n  const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n  if (debugIndex !== -1) {\n    const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n    finalIntegrations.push(debugInstance);\n  }\n\n  return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n  const integrationIndex: IntegrationIndex = {};\n\n  integrations.forEach(integration => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n  for (const integration of integrations) {\n    // guard against empty provided integrations\n    if (integration && integration.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\n\n/** Setup a single integration.  */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n\n  // `setupOnce` is only called the first time\n  if (installedIntegrations.indexOf(integration.name) === -1) {\n    // eslint-disable-next-line deprecation/deprecation\n    integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n    installedIntegrations.push(integration.name);\n  }\n\n  // `setup` is run for each client\n  if (integration.setup && typeof integration.setup === 'function') {\n    integration.setup(client);\n  }\n\n  if (client.on && typeof integration.preprocessEvent === 'function') {\n    const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n    client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n  }\n\n  if (client.addEventProcessor && typeof integration.processEvent === 'function') {\n    const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n    const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n      id: integration.name,\n    });\n\n    client.addEventProcessor(processor);\n  }\n\n  DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current hub's client. */\nexport function addIntegration(integration: Integration): void {\n  const client = getClient();\n\n  if (!client || !client.addIntegration) {\n    DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n\n  client.addIntegration(integration);\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex<T>(arr: T[], callback: (item: T) => boolean): number {\n  for (let i = 0; i < arr.length; i++) {\n    if (callback(arr[i]) === true) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\n/**\n * Convert a new integration function to the legacy class syntax.\n * In v8, we can remove this and instead export the integration functions directly.\n *\n * @deprecated This will be removed in v8!\n */\nexport function convertIntegrationFnToClass<Fn extends IntegrationFn>(\n  name: string,\n  fn: Fn,\n): IntegrationClass<Integration> {\n  return Object.assign(\n    function ConvertedIntegration(...args: Parameters<Fn>): Integration {\n      return fn(...args);\n    },\n    { id: name },\n  ) as unknown as IntegrationClass<Integration>;\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration<Fn extends IntegrationFn>(fn: Fn): (...args: Parameters<Fn>) => IntegrationFnResult {\n  return fn;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n  // explicitly check for browser bundles as those can be optimized statically\n  // by terser/rollup.\n  return (\n    !isBrowserBundle() &&\n    Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n  );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule<T>(moduleName: string): T | undefined {\n  let mod: T | undefined;\n\n  try {\n    mod = dynamicRequire(module, moduleName);\n  } catch (e) {\n    // no-empty\n  }\n\n  try {\n    const { cwd } = dynamicRequire(module, 'process');\n    mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n  } catch (e) {\n    // no-empty\n  }\n\n  return mod;\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n  if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n    return false;\n  }\n  if (i < 0 || i + 1 >= msg.length) {\n    return false;\n  }\n  return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg === 'string') {\n    if (!enc) {\n      // Inspired by stringToUtf8ByteArray() in closure-library by Google\n      // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n      // Apache License 2.0\n      // https://github.com/google/closure-library/blob/master/LICENSE\n      var p = 0;\n      for (var i = 0; i < msg.length; i++) {\n        var c = msg.charCodeAt(i);\n        if (c < 128) {\n          res[p++] = c;\n        } else if (c < 2048) {\n          res[p++] = (c >> 6) | 192;\n          res[p++] = (c & 63) | 128;\n        } else if (isSurrogatePair(msg, i)) {\n          c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n          res[p++] = (c >> 18) | 240;\n          res[p++] = ((c >> 12) & 63) | 128;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        } else {\n          res[p++] = (c >> 12) | 224;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        }\n      }\n    } else if (enc === 'hex') {\n      msg = msg.replace(/[^a-z0-9]+/ig, '');\n      if (msg.length % 2 !== 0)\n        msg = '0' + msg;\n      for (i = 0; i < msg.length; i += 2)\n        res.push(parseInt(msg[i] + msg[i + 1], 16));\n    }\n  } else {\n    for (i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n  }\n  return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n  var res = (w >>> 24) |\n            ((w >>> 8) & 0xff00) |\n            ((w << 8) & 0xff0000) |\n            ((w & 0xff) << 24);\n  return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++) {\n    var w = msg[i];\n    if (endian === 'little')\n      w = htonl(w);\n    res += zero8(w.toString(16));\n  }\n  return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n  if (word.length === 7)\n    return '0' + word;\n  else if (word.length === 6)\n    return '00' + word;\n  else if (word.length === 5)\n    return '000' + word;\n  else if (word.length === 4)\n    return '0000' + word;\n  else if (word.length === 3)\n    return '00000' + word;\n  else if (word.length === 2)\n    return '000000' + word;\n  else if (word.length === 1)\n    return '0000000' + word;\n  else\n    return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n  var len = end - start;\n  assert(len % 4 === 0);\n  var res = new Array(len / 4);\n  for (var i = 0, k = start; i < res.length; i++, k += 4) {\n    var w;\n    if (endian === 'big')\n      w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n    else\n      w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n    res[i] = w >>> 0;\n  }\n  return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n  var res = new Array(msg.length * 4);\n  for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n    var m = msg[i];\n    if (endian === 'big') {\n      res[k] = m >>> 24;\n      res[k + 1] = (m >>> 16) & 0xff;\n      res[k + 2] = (m >>> 8) & 0xff;\n      res[k + 3] = m & 0xff;\n    } else {\n      res[k + 3] = m >>> 24;\n      res[k + 2] = (m >>> 16) & 0xff;\n      res[k + 1] = (m >>> 8) & 0xff;\n      res[k] = m & 0xff;\n    }\n  }\n  return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n  return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n  return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n  return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n  return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n  return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n  return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n  var bh = buf[pos];\n  var bl = buf[pos + 1];\n\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  buf[pos] = hi >>> 0;\n  buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n  var lo = al + bl;\n  return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + carry;\n  return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n  var lo = al + bl + cl + dl;\n  return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n  lo = (lo + el) >>> 0;\n  carry += lo < el ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + eh + carry;\n  return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var lo = al + bl + cl + dl + el;\n\n  return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n  var r = (al << (32 - num)) | (ah >>> num);\n  return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n  return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return construct(Class, arguments, getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return setPrototypeOf(Wrapper, Class);\n  };\n\n  return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n  '^[ \\\\t]*' + // whitespace\n    '([0-9a-f]{32})?' + // trace_id\n    '-?([0-9a-f]{16})?' + // span_id\n    '-?([01])?' + // sampled\n    '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n  const matches = traceparent.match(TRACEPARENT_REGEXP);\n  if (matches) {\n    let parentSampled: boolean | undefined;\n    if (matches[3] === '1') {\n      parentSampled = true;\n    } else if (matches[3] === '0') {\n      parentSampled = false;\n    }\n    return {\n      traceId: matches[1],\n      parentSampled,\n      parentSpanId: matches[2],\n    };\n  }\n  return undefined;\n}\n","import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n  return dropUndefinedKeys({\n    data,\n    op,\n    parent_span_id,\n    span_id,\n    status,\n    tags,\n    trace_id,\n    origin,\n  });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n  if (typeof input === 'number') {\n    return ensureTimestampInSeconds(input);\n  }\n\n  if (Array.isArray(input)) {\n    // See {@link HrTime} for the array-based time format\n    return input[0] + input[1] / 1e9;\n  }\n\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n\n  return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial<SpanJSON> {\n  if (spanIsSpanClass(span)) {\n    return span.getSpanJSON();\n  }\n\n  // Fallback: We also check for `.toJSON()` here...\n  // eslint-disable-next-line deprecation/deprecation\n  if (typeof span.toJSON === 'function') {\n    // eslint-disable-next-line deprecation/deprecation\n    return span.toJSON();\n  }\n\n  return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n  return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n  // We align our trace flags with the ones OpenTelemetry use\n  // So we also check for sampled the same way they do.\n  const { traceFlags } = span.spanContext();\n  // eslint-disable-next-line no-bitwise\n  return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n","import { checkAvailability } from './decorators/common';\nimport { get } from './util';\n\nexport class IonicNativePlugin {\n  static pluginName = '';\n  static pluginRef = '';\n  static plugin = '';\n  static repo = '';\n  static platforms: string[] = [];\n  static install = '';\n\n  /**\n   * Returns a boolean that indicates whether the plugin is installed\n   * @return {boolean}\n   */\n  static installed(): boolean {\n    const isAvailable = checkAvailability(this.pluginRef) === true;\n    return isAvailable;\n  }\n\n  /**\n   * Returns the original plugin object\n   */\n  static getPlugin(): any {\n    if (typeof window !== 'undefined') {\n      return get(window, this.pluginRef);\n    }\n    return null;\n  }\n\n  /**\n   * Returns the plugin's name\n   */\n  static getPluginName(): string {\n    const pluginName = this.pluginName;\n    return pluginName;\n  }\n\n  /**\n   * Returns the plugin's reference\n   */\n  static getPluginRef(): string {\n    const pluginRef = this.pluginRef;\n    return pluginRef;\n  }\n\n  /**\n   * Returns the plugin's install name\n   */\n  static getPluginInstallName(): string {\n    const plugin = this.plugin;\n    return plugin;\n  }\n\n  /**\n   * Returns the plugin's supported platforms\n   */\n  static getSupportedPlatforms(): string[] {\n    const platform = this.platforms;\n    return platform;\n  }\n}\n","declare const window: any;\n\n/**\n * @private\n */\nexport function get(element: Element | Window, path: string) {\n  const paths: string[] = path.split('.');\n  let obj: any = element;\n  for (let i = 0; i < paths.length; i++) {\n    if (!obj) {\n      return null;\n    }\n    obj = obj[paths[i]];\n  }\n  return obj;\n}\n\n/**\n * @private\n */\nexport function getPromise(callback: Function = () => {}): Promise<any> {\n  const tryNativePromise = () => {\n    if (typeof Promise === 'function' || (typeof window !== 'undefined' && window.Promise)) {\n      return new Promise<any>((resolve, reject) => {\n        callback(resolve, reject);\n      });\n    } else {\n      console.error(\n        'No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.'\n      );\n    }\n  };\n\n  return tryNativePromise();\n}\n","import { wrap } from './common';\nimport { CordovaOptions } from './interfaces';\n\nexport function cordova(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | any[]) {\n  return wrap(pluginObj, methodName, config).apply(this, args);\n}\n","import { checkReady } from './bootstrap';\n\nexport { IonicNativePlugin } from './ionic-native-plugin';\n\n// Decorators\nexport { checkAvailability, instanceAvailability, wrap, getPromise } from './decorators/common';\nexport * from './decorators/cordova';\nexport * from './decorators/cordova-function-override';\nexport * from './decorators/cordova-instance';\nexport * from './decorators/cordova-property';\nexport * from './decorators/instance-property';\nexport * from './decorators/interfaces';\n\ncheckReady();\n","import { getGlobalObject } from './global';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n  nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n  nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n  /**\n   * The millisecond timestamp at which measurement began, measured in Unix time.\n   */\n  timeOrigin: number;\n  /**\n   * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n   */\n  now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n  const { performance } = getGlobalObject<Window>();\n  if (!performance || !performance.now) {\n    return undefined;\n  }\n\n  // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n  //\n  // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n  // performance.now() gives a date arbitrarily in the past.\n  //\n  // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n  // undefined.\n  //\n  // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n  // interact with data coming out of performance entries.\n  //\n  // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n  // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n  // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n  // observed skews that can be as long as days, weeks or months.\n  //\n  // See https://github.com/getsentry/sentry-javascript/issues/2590.\n  //\n  // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n  // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n  // transactions of long-lived web pages.\n  const timeOrigin = Date.now() - performance.now();\n\n  return {\n    now: () => performance.now(),\n    timeOrigin,\n  };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n  try {\n    const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n    return perfHooks.performance;\n  } catch (_) {\n    return undefined;\n  }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n  platformPerformance === undefined\n    ? dateTimestampSource\n    : {\n        nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n      };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n  // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n  // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n  // data as reliable if they are within a reasonable threshold of the current time.\n\n  const { performance } = getGlobalObject<Window>();\n  if (!performance || !performance.now) {\n    _browserPerformanceTimeOriginMode = 'none';\n    return undefined;\n  }\n\n  const threshold = 3600 * 1000;\n  const performanceNow = performance.now();\n  const dateNow = Date.now();\n\n  // if timeOrigin isn't available set delta to threshold so it isn't used\n  const timeOriginDelta = performance.timeOrigin\n    ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n    : threshold;\n  const timeOriginIsReliable = timeOriginDelta < threshold;\n\n  // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n  // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n  // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n  // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n  // Date API.\n  // eslint-disable-next-line deprecation/deprecation\n  const navigationStart = performance.timing && performance.timing.navigationStart;\n  const hasNavigationStart = typeof navigationStart === 'number';\n  // if navigationStart isn't available set delta to threshold so it isn't used\n  const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n  const navigationStartIsReliable = navigationStartDelta < threshold;\n\n  if (timeOriginIsReliable || navigationStartIsReliable) {\n    // Use the more reliable time origin\n    if (timeOriginDelta <= navigationStartDelta) {\n      _browserPerformanceTimeOriginMode = 'timeOrigin';\n      return performance.timeOrigin;\n    } else {\n      _browserPerformanceTimeOriginMode = 'navigationStart';\n      return navigationStart;\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n  _browserPerformanceTimeOriginMode = 'dateNow';\n  return dateNow;\n})();\n","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","import{__awaiter,__generator,__spreadArray}from\"tslib\";import{b as getIonMode,c as config}from\"./ionic-global-63a97a32.js\";import{OVERLAY_BACK_BUTTON_PRIORITY}from\"./hardware-back-button-4a6b37fb.js\";import{c as componentOnReady,a as addEventListener,b as removeEventListener,g as getElementRoot}from\"./helpers-1457892a.js\";var lastId=0;var activeAnimations=new WeakMap;var createController=function(e){return{create:function(t){return createOverlay(e,t)},dismiss:function(t,r,n){return dismissOverlay(document,t,r,e,n)},getTop:function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){return[2,getOverlay(document,e)]}))}))}}};var alertController=createController(\"ion-alert\");var actionSheetController=createController(\"ion-action-sheet\");var loadingController=createController(\"ion-loading\");var modalController=createController(\"ion-modal\");var pickerController=createController(\"ion-picker\");var popoverController=createController(\"ion-popover\");var toastController=createController(\"ion-toast\");var prepareOverlay=function(e){if(typeof document!==\"undefined\"){connectListeners(document)}var t=lastId++;e.overlayIndex=t;if(!e.hasAttribute(\"id\")){e.id=\"ion-overlay-\"+t}};var createOverlay=function(e,t){if(typeof customElements!==\"undefined\"){return customElements.whenDefined(e).then((function(){var r=document.createElement(e);r.classList.add(\"overlay-hidden\");Object.assign(r,t);getAppRoot(document).appendChild(r);return new Promise((function(e){return componentOnReady(r,e)}))}))}return Promise.resolve()};var focusableQueryString='[tabindex]:not([tabindex^=\"-\"]), input:not([type=hidden]):not([tabindex^=\"-\"]), textarea:not([tabindex^=\"-\"]), button:not([tabindex^=\"-\"]), select:not([tabindex^=\"-\"]), .ion-focusable:not([tabindex^=\"-\"])';var innerFocusableQueryString=\"input:not([type=hidden]), textarea, button, select\";var focusFirstDescendant=function(e,t){var r=e.querySelector(focusableQueryString);var n=r&&r.shadowRoot;if(n){r=n.querySelector(innerFocusableQueryString)||r}if(r){r.focus()}else{t.focus()}};var focusLastDescendant=function(e,t){var r=Array.from(e.querySelectorAll(focusableQueryString));var n=r.length>0?r[r.length-1]:null;var o=n&&n.shadowRoot;if(o){n=o.querySelector(innerFocusableQueryString)||n}if(n){n.focus()}else{t.focus()}};var trapKeyboardFocus=function(e,t){var r=getOverlay(t);var n=e.target;if(!r||!n){return}if(r===n){r.lastFocus=undefined}else{var o=getElementRoot(r);if(!o.contains(n)){return}var a=o.querySelector(\".ion-overlay-wrapper\");if(!a){return}if(a.contains(n)){r.lastFocus=n}else{var i=r.lastFocus;focusFirstDescendant(a,r);if(i===t.activeElement){focusLastDescendant(a,r)}r.lastFocus=t.activeElement}}};var connectListeners=function(e){if(lastId===0){lastId=1;e.addEventListener(\"focus\",(function(t){return trapKeyboardFocus(t,e)}),true);e.addEventListener(\"ionBackButton\",(function(t){var r=getOverlay(e);if(r&&r.backdropDismiss){t.detail.register(OVERLAY_BACK_BUTTON_PRIORITY,(function(){return r.dismiss(undefined,BACKDROP)}))}}));e.addEventListener(\"keyup\",(function(t){if(t.key===\"Escape\"){var r=getOverlay(e);if(r&&r.backdropDismiss){r.dismiss(undefined,BACKDROP)}}}))}};var dismissOverlay=function(e,t,r,n,o){var a=getOverlay(e,n,o);if(!a){return Promise.reject(\"overlay does not exist\")}return a.dismiss(t,r)};var getOverlays=function(e,t){if(t===undefined){t=\"ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast\"}return Array.from(e.querySelectorAll(t)).filter((function(e){return e.overlayIndex>0}))};var getOverlay=function(e,t,r){var n=getOverlays(e,t);return r===undefined?n[n.length-1]:n.find((function(e){return e.id===r}))};var setRootAriaHidden=function(e){if(e===void 0){e=false}var t=getAppRoot(document);var r=t.querySelector(\"ion-router-outlet, ion-nav, #ion-view-container-root\");if(!r){return}if(e){r.setAttribute(\"aria-hidden\",\"true\")}else{r.removeAttribute(\"aria-hidden\")}};var present=function(e,t,r,n,o){return __awaiter(void 0,void 0,void 0,(function(){var a,i,s;return __generator(this,(function(l){switch(l.label){case 0:if(e.presented){return[2]}setRootAriaHidden(true);e.presented=true;e.willPresent.emit();a=getIonMode(e);i=e.enterAnimation?e.enterAnimation:config.get(t,a===\"ios\"?r:n);return[4,overlayAnimation(e,i,e.el,o)];case 1:s=l.sent();if(s){e.didPresent.emit()}if(e.el.tagName!==\"ION-TOAST\"){focusPreviousElementOnDismiss(e.el)}if(e.keyboardClose){e.el.focus()}return[2]}}))}))};var focusPreviousElementOnDismiss=function(e){return __awaiter(void 0,void 0,void 0,(function(){var t,r;return __generator(this,(function(n){switch(n.label){case 0:t=document.activeElement;if(!t){return[2]}r=t&&t.shadowRoot;if(r){t=r.querySelector(innerFocusableQueryString)||t}return[4,e.onDidDismiss()];case 1:n.sent();t.focus();return[2]}}))}))};var dismiss=function(e,t,r,n,o,a,i){return __awaiter(void 0,void 0,void 0,(function(){var s,l,u;return __generator(this,(function(c){switch(c.label){case 0:if(!e.presented){return[2,false]}setRootAriaHidden(false);e.presented=false;c.label=1;case 1:c.trys.push([1,4,,5]);e.el.style.setProperty(\"pointer-events\",\"none\");e.willDismiss.emit({data:t,role:r});s=getIonMode(e);l=e.leaveAnimation?e.leaveAnimation:config.get(n,s===\"ios\"?o:a);if(!(r!==\"gesture\"))return[3,3];return[4,overlayAnimation(e,l,e.el,i)];case 2:c.sent();c.label=3;case 3:e.didDismiss.emit({data:t,role:r});activeAnimations.delete(e);return[3,5];case 4:u=c.sent();console.error(u);return[3,5];case 5:e.el.remove();return[2,true]}}))}))};var getAppRoot=function(e){return e.querySelector(\"ion-app\")||e.body};var overlayAnimation=function(e,t,r,n){return __awaiter(void 0,void 0,void 0,(function(){var o,a,i;return __generator(this,(function(s){switch(s.label){case 0:r.classList.remove(\"overlay-hidden\");o=r.shadowRoot||e.el;a=t(o,n);if(!e.animated||!config.getBoolean(\"animated\",true)){a.duration(0)}if(e.keyboardClose){a.beforeAddWrite((function(){var e=r.ownerDocument.activeElement;if(e&&e.matches(\"input, ion-input, ion-textarea\")){e.blur()}}))}i=activeAnimations.get(e)||[];activeAnimations.set(e,__spreadArray(__spreadArray([],i),[a]));return[4,a.play()];case 1:s.sent();return[2,true]}}))}))};var eventMethod=function(e,t){var r;var n=new Promise((function(e){return r=e}));onceEvent(e,t,(function(e){r(e.detail)}));return n};var onceEvent=function(e,t,r){var n=function(o){removeEventListener(e,t,n);r(o)};addEventListener(e,t,n)};var isCancel=function(e){return e===\"cancel\"||e===BACKDROP};var defaultGate=function(e){return e()};var safeCall=function(e,t){if(typeof e===\"function\"){var r=config.get(\"_zoneGate\",defaultGate);return r((function(){try{return e(t)}catch(r){console.error(r)}}))}return undefined};var BACKDROP=\"backdrop\";export{BACKDROP as B,alertController as a,actionSheetController as b,popoverController as c,present as d,prepareOverlay as e,dismiss as f,eventMethod as g,activeAnimations as h,isCancel as i,loadingController as l,modalController as m,pickerController as p,safeCall as s,toastController as t};","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n  Transform.call(this)\n  this.hashMode = typeof hashMode === 'string'\n  if (this.hashMode) {\n    this[hashMode] = this._finalOrDigest\n  } else {\n    this.final = this._finalOrDigest\n  }\n  if (this._final) {\n    this.__final = this._final\n    this._final = null\n  }\n  this._decoder = null\n  this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n  if (typeof data === 'string') {\n    data = Buffer.from(data, inputEnc)\n  }\n\n  var outData = this._update(data)\n  if (this.hashMode) return this\n\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc)\n  }\n\n  return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n  throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n  throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n  throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n  var err\n  try {\n    if (this.hashMode) {\n      this._update(data)\n    } else {\n      this.push(this._update(data))\n    }\n  } catch (e) {\n    err = e\n  } finally {\n    next(err)\n  }\n}\nCipherBase.prototype._flush = function (done) {\n  var err\n  try {\n    this.push(this.__final())\n  } catch (e) {\n    err = e\n  }\n\n  done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n  var outData = this.__final() || Buffer.alloc(0)\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc, true)\n  }\n  return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n  if (!this._decoder) {\n    this._decoder = new StringDecoder(enc)\n    this._encoding = enc\n  }\n\n  if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n  var out = this._decoder.write(value)\n  if (fin) {\n    out += this._decoder.end()\n  }\n\n  return out\n}\n\nmodule.exports = CipherBase\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isValueType = exports.isRef = exports.isMinDate = exports.isMaxDate = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nvar isValueType = _propTypes[\"default\"].oneOf(allValueTypes);\n\nexports.isValueType = isValueType;\n\nvar isMinDate = function isMinDate(props, propName, componentName) {\n  var minDate = props[propName];\n\n  if (!minDate) {\n    return null;\n  }\n\n  if (!(minDate instanceof Date)) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n  }\n\n  var maxDate = props.maxDate;\n\n  if (maxDate && minDate > maxDate) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n  }\n\n  return null;\n};\n\nexports.isMinDate = isMinDate;\n\nvar isMaxDate = function isMaxDate(props, propName, componentName) {\n  var maxDate = props[propName];\n\n  if (!maxDate) {\n    return null;\n  }\n\n  if (!(maxDate instanceof Date)) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n  }\n\n  var minDate = props.minDate;\n\n  if (minDate && maxDate < minDate) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n  }\n\n  return null;\n};\n\nexports.isMaxDate = isMaxDate;\n\nvar isRef = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].shape({\n  current: _propTypes[\"default\"].any\n})]);\n\nexports.isRef = isRef;","/* eslint-disable max-lines */\nimport { Primitive, Span as SpanInterface, SpanContext, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n  public spans: Span[] = [];\n\n  private readonly _maxlen: number;\n\n  public constructor(maxlen: number = 1000) {\n    this._maxlen = maxlen;\n  }\n\n  /**\n   * This is just so that we don't run out of memory while recording a lot\n   * of spans. At some point we just stop and flush out the start of the\n   * trace tree (i.e.the first n spans with the smallest\n   * start_timestamp).\n   */\n  public add(span: Span): void {\n    if (this.spans.length > this._maxlen) {\n      span.spanRecorder = undefined;\n    } else {\n      this.spans.push(span);\n    }\n  }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n  /**\n   * @inheritDoc\n   */\n  public traceId: string = uuid4();\n\n  /**\n   * @inheritDoc\n   */\n  public spanId: string = uuid4().substring(16);\n\n  /**\n   * @inheritDoc\n   */\n  public parentSpanId?: string;\n\n  /**\n   * Internal keeper of the status\n   */\n  public status?: SpanStatusType | string;\n\n  /**\n   * @inheritDoc\n   */\n  public sampled?: boolean;\n\n  /**\n   * Timestamp in seconds when the span was created.\n   */\n  public startTimestamp: number = timestampWithMs();\n\n  /**\n   * Timestamp in seconds when the span ended.\n   */\n  public endTimestamp?: number;\n\n  /**\n   * @inheritDoc\n   */\n  public op?: string;\n\n  /**\n   * @inheritDoc\n   */\n  public description?: string;\n\n  /**\n   * @inheritDoc\n   */\n  public tags: { [key: string]: Primitive } = {};\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public data: { [key: string]: any } = {};\n\n  /**\n   * List of spans that were finalized\n   */\n  public spanRecorder?: SpanRecorder;\n\n  /**\n   * @inheritDoc\n   */\n  public transaction?: Transaction;\n\n  /**\n   * You should never call the constructor manually, always use `Sentry.startTransaction()`\n   * or call `startChild()` on an existing span.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n  public constructor(spanContext?: SpanContext) {\n    if (!spanContext) {\n      return this;\n    }\n    if (spanContext.traceId) {\n      this.traceId = spanContext.traceId;\n    }\n    if (spanContext.spanId) {\n      this.spanId = spanContext.spanId;\n    }\n    if (spanContext.parentSpanId) {\n      this.parentSpanId = spanContext.parentSpanId;\n    }\n    // We want to include booleans as well here\n    if ('sampled' in spanContext) {\n      this.sampled = spanContext.sampled;\n    }\n    if (spanContext.op) {\n      this.op = spanContext.op;\n    }\n    if (spanContext.description) {\n      this.description = spanContext.description;\n    }\n    if (spanContext.data) {\n      this.data = spanContext.data;\n    }\n    if (spanContext.tags) {\n      this.tags = spanContext.tags;\n    }\n    if (spanContext.status) {\n      this.status = spanContext.status;\n    }\n    if (spanContext.startTimestamp) {\n      this.startTimestamp = spanContext.startTimestamp;\n    }\n    if (spanContext.endTimestamp) {\n      this.endTimestamp = spanContext.endTimestamp;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated\n   */\n  public child(\n    spanContext?: Pick<SpanContext, Exclude<keyof SpanContext, 'spanId' | 'sampled' | 'traceId' | 'parentSpanId'>>,\n  ): Span {\n    return this.startChild(spanContext);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public startChild(\n    spanContext?: Pick<SpanContext, Exclude<keyof SpanContext, 'spanId' | 'sampled' | 'traceId' | 'parentSpanId'>>,\n  ): Span {\n    const childSpan = new Span({\n      ...spanContext,\n      parentSpanId: this.spanId,\n      sampled: this.sampled,\n      traceId: this.traceId,\n    });\n\n    childSpan.spanRecorder = this.spanRecorder;\n    if (childSpan.spanRecorder) {\n      childSpan.spanRecorder.add(childSpan);\n    }\n\n    childSpan.transaction = this.transaction;\n\n    return childSpan;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTag(key: string, value: Primitive): this {\n    this.tags = { ...this.tags, [key]: value };\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public setData(key: string, value: any): this {\n    this.data = { ...this.data, [key]: value };\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setStatus(value: SpanStatusType): this {\n    this.status = value;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setHttpStatus(httpStatus: number): this {\n    this.setTag('http.status_code', String(httpStatus));\n    const spanStatus = spanStatusfromHttpCode(httpStatus);\n    if (spanStatus !== 'unknown_error') {\n      this.setStatus(spanStatus);\n    }\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public isSuccess(): boolean {\n    return this.status === 'ok';\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public finish(endTimestamp?: number): void {\n    this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public toTraceparent(): string {\n    let sampledString = '';\n    if (this.sampled !== undefined) {\n      sampledString = this.sampled ? '-1' : '-0';\n    }\n    return `${this.traceId}-${this.spanId}${sampledString}`;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public toContext(): SpanContext {\n    return dropUndefinedKeys({\n      data: this.data,\n      description: this.description,\n      endTimestamp: this.endTimestamp,\n      op: this.op,\n      parentSpanId: this.parentSpanId,\n      sampled: this.sampled,\n      spanId: this.spanId,\n      startTimestamp: this.startTimestamp,\n      status: this.status,\n      tags: this.tags,\n      traceId: this.traceId,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public updateWithContext(spanContext: SpanContext): this {\n    this.data = spanContext.data ?? {};\n    this.description = spanContext.description;\n    this.endTimestamp = spanContext.endTimestamp;\n    this.op = spanContext.op;\n    this.parentSpanId = spanContext.parentSpanId;\n    this.sampled = spanContext.sampled;\n    this.spanId = spanContext.spanId ?? this.spanId;\n    this.startTimestamp = spanContext.startTimestamp ?? this.startTimestamp;\n    this.status = spanContext.status;\n    this.tags = spanContext.tags ?? {};\n    this.traceId = spanContext.traceId ?? this.traceId;\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTraceContext(): {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    data?: { [key: string]: any };\n    description?: string;\n    op?: string;\n    parent_span_id?: string;\n    span_id: string;\n    status?: string;\n    tags?: { [key: string]: Primitive };\n    trace_id: string;\n  } {\n    return dropUndefinedKeys({\n      data: Object.keys(this.data).length > 0 ? this.data : undefined,\n      description: this.description,\n      op: this.op,\n      parent_span_id: this.parentSpanId,\n      span_id: this.spanId,\n      status: this.status,\n      tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n      trace_id: this.traceId,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public toJSON(): {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    data?: { [key: string]: any };\n    description?: string;\n    op?: string;\n    parent_span_id?: string;\n    span_id: string;\n    start_timestamp: number;\n    status?: string;\n    tags?: { [key: string]: Primitive };\n    timestamp?: number;\n    trace_id: string;\n  } {\n    return dropUndefinedKeys({\n      data: Object.keys(this.data).length > 0 ? this.data : undefined,\n      description: this.description,\n      op: this.op,\n      parent_span_id: this.parentSpanId,\n      span_id: this.spanId,\n      start_timestamp: this.startTimestamp,\n      status: this.status,\n      tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n      timestamp: this.endTimestamp,\n      trace_id: this.traceId,\n    });\n  }\n}\n\nexport type SpanStatusType =\n  /** The operation completed successfully. */\n  | 'ok'\n  /** Deadline expired before operation could complete. */\n  | 'deadline_exceeded'\n  /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n  | 'unauthenticated'\n  /** 403 Forbidden */\n  | 'permission_denied'\n  /** 404 Not Found. Some requested entity (file or directory) was not found. */\n  | 'not_found'\n  /** 429 Too Many Requests */\n  | 'resource_exhausted'\n  /** Client specified an invalid argument. 4xx. */\n  | 'invalid_argument'\n  /** 501 Not Implemented */\n  | 'unimplemented'\n  /** 503 Service Unavailable */\n  | 'unavailable'\n  /** Other/generic 5xx. */\n  | 'internal_error'\n  /** Unknown. Any non-standard HTTP status code. */\n  | 'unknown_error'\n  /** The operation was cancelled (typically by the user). */\n  | 'cancelled'\n  /** Already exists (409) */\n  | 'already_exists'\n  /** Operation was rejected because the system is not in a state required for the operation's */\n  | 'failed_precondition'\n  /** The operation was aborted, typically due to a concurrency issue. */\n  | 'aborted'\n  /** Operation was attempted past the valid range. */\n  | 'out_of_range'\n  /** Unrecoverable data loss or corruption */\n  | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus: number): SpanStatusType {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return 'ok';\n  }\n\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return 'unauthenticated';\n      case 403:\n        return 'permission_denied';\n      case 404:\n        return 'not_found';\n      case 409:\n        return 'already_exists';\n      case 413:\n        return 'failed_precondition';\n      case 429:\n        return 'resource_exhausted';\n      default:\n        return 'invalid_argument';\n    }\n  }\n\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return 'unimplemented';\n      case 503:\n        return 'unavailable';\n      case 504:\n        return 'deadline_exceeded';\n      default:\n        return 'internal_error';\n    }\n  }\n\n  return 'unknown_error';\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n  return getGlobalSingleton<EventProcessor[]>('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n  // eslint-disable-next-line deprecation/deprecation\n  getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n  processors: EventProcessor[],\n  event: Event | null,\n  hint: EventHint,\n  index: number = 0,\n): PromiseLike<Event | null> {\n  return new SyncPromise<Event | null>((resolve, reject) => {\n    const processor = processors[index];\n    if (event === null || typeof processor !== 'function') {\n      resolve(event);\n    } else {\n      const result = processor({ ...event }, hint) as Event | null;\n\n      DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n      if (isThenable(result)) {\n        void result\n          .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n          .then(null, reject);\n      } else {\n        void notifyEventProcessors(processors, result, hint, index + 1)\n          .then(resolve)\n          .then(null, reject);\n      }\n    }\n  });\n}\n","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n    function UnsubscriptionErrorImpl(errors) {\n        Error.call(this);\n        this.message = errors ?\n            errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n  ') : '';\n        this.name = 'UnsubscriptionError';\n        this.errors = errors;\n        return this;\n    }\n    UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n    return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n    function Subscription(unsubscribe) {\n        this.closed = false;\n        this._parentOrParents = null;\n        this._subscriptions = null;\n        if (unsubscribe) {\n            this._ctorUnsubscribe = true;\n            this._unsubscribe = unsubscribe;\n        }\n    }\n    Subscription.prototype.unsubscribe = function () {\n        var errors;\n        if (this.closed) {\n            return;\n        }\n        var _a = this, _parentOrParents = _a._parentOrParents, _ctorUnsubscribe = _a._ctorUnsubscribe, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n        this.closed = true;\n        this._parentOrParents = null;\n        this._subscriptions = null;\n        if (_parentOrParents instanceof Subscription) {\n            _parentOrParents.remove(this);\n        }\n        else if (_parentOrParents !== null) {\n            for (var index = 0; index < _parentOrParents.length; ++index) {\n                var parent_1 = _parentOrParents[index];\n                parent_1.remove(this);\n            }\n        }\n        if (isFunction(_unsubscribe)) {\n            if (_ctorUnsubscribe) {\n                this._unsubscribe = undefined;\n            }\n            try {\n                _unsubscribe.call(this);\n            }\n            catch (e) {\n                errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n            }\n        }\n        if (isArray(_subscriptions)) {\n            var index = -1;\n            var len = _subscriptions.length;\n            while (++index < len) {\n                var sub = _subscriptions[index];\n                if (isObject(sub)) {\n                    try {\n                        sub.unsubscribe();\n                    }\n                    catch (e) {\n                        errors = errors || [];\n                        if (e instanceof UnsubscriptionError) {\n                            errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n                        }\n                        else {\n                            errors.push(e);\n                        }\n                    }\n                }\n            }\n        }\n        if (errors) {\n            throw new UnsubscriptionError(errors);\n        }\n    };\n    Subscription.prototype.add = function (teardown) {\n        var subscription = teardown;\n        if (!teardown) {\n            return Subscription.EMPTY;\n        }\n        switch (typeof teardown) {\n            case 'function':\n                subscription = new Subscription(teardown);\n            case 'object':\n                if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n                    return subscription;\n                }\n                else if (this.closed) {\n                    subscription.unsubscribe();\n                    return subscription;\n                }\n                else if (!(subscription instanceof Subscription)) {\n                    var tmp = subscription;\n                    subscription = new Subscription();\n                    subscription._subscriptions = [tmp];\n                }\n                break;\n            default: {\n                throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n            }\n        }\n        var _parentOrParents = subscription._parentOrParents;\n        if (_parentOrParents === null) {\n            subscription._parentOrParents = this;\n        }\n        else if (_parentOrParents instanceof Subscription) {\n            if (_parentOrParents === this) {\n                return subscription;\n            }\n            subscription._parentOrParents = [_parentOrParents, this];\n        }\n        else if (_parentOrParents.indexOf(this) === -1) {\n            _parentOrParents.push(this);\n        }\n        else {\n            return subscription;\n        }\n        var subscriptions = this._subscriptions;\n        if (subscriptions === null) {\n            this._subscriptions = [subscription];\n        }\n        else {\n            subscriptions.push(subscription);\n        }\n        return subscription;\n    };\n    Subscription.prototype.remove = function (subscription) {\n        var subscriptions = this._subscriptions;\n        if (subscriptions) {\n            var subscriptionIndex = subscriptions.indexOf(subscription);\n            if (subscriptionIndex !== -1) {\n                subscriptions.splice(subscriptionIndex, 1);\n            }\n        }\n    };\n    Subscription.EMPTY = (function (empty) {\n        empty.closed = true;\n        return empty;\n    }(new Subscription()));\n    return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n    return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nexport function isObject(x) {\n    return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(Subscriber, _super);\n    function Subscriber(destinationOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        _this.syncErrorValue = null;\n        _this.syncErrorThrown = false;\n        _this.syncErrorThrowable = false;\n        _this.isStopped = false;\n        switch (arguments.length) {\n            case 0:\n                _this.destination = emptyObserver;\n                break;\n            case 1:\n                if (!destinationOrNext) {\n                    _this.destination = emptyObserver;\n                    break;\n                }\n                if (typeof destinationOrNext === 'object') {\n                    if (destinationOrNext instanceof Subscriber) {\n                        _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n                        _this.destination = destinationOrNext;\n                        destinationOrNext.add(_this);\n                    }\n                    else {\n                        _this.syncErrorThrowable = true;\n                        _this.destination = new SafeSubscriber(_this, destinationOrNext);\n                    }\n                    break;\n                }\n            default:\n                _this.syncErrorThrowable = true;\n                _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n                break;\n        }\n        return _this;\n    }\n    Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n    Subscriber.create = function (next, error, complete) {\n        var subscriber = new Subscriber(next, error, complete);\n        subscriber.syncErrorThrowable = false;\n        return subscriber;\n    };\n    Subscriber.prototype.next = function (value) {\n        if (!this.isStopped) {\n            this._next(value);\n        }\n    };\n    Subscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    Subscriber.prototype.complete = function () {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (this.closed) {\n            return;\n        }\n        this.isStopped = true;\n        _super.prototype.unsubscribe.call(this);\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        this.destination.error(err);\n        this.unsubscribe();\n    };\n    Subscriber.prototype._complete = function () {\n        this.destination.complete();\n        this.unsubscribe();\n    };\n    Subscriber.prototype._unsubscribeAndRecycle = function () {\n        var _parentOrParents = this._parentOrParents;\n        this._parentOrParents = null;\n        this.unsubscribe();\n        this.closed = false;\n        this.isStopped = false;\n        this._parentOrParents = _parentOrParents;\n        return this;\n    };\n    return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(SafeSubscriber, _super);\n    function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        _this._parentSubscriber = _parentSubscriber;\n        var next;\n        var context = _this;\n        if (isFunction(observerOrNext)) {\n            next = observerOrNext;\n        }\n        else if (observerOrNext) {\n            next = observerOrNext.next;\n            error = observerOrNext.error;\n            complete = observerOrNext.complete;\n            if (observerOrNext !== emptyObserver) {\n                context = Object.create(observerOrNext);\n                if (isFunction(context.unsubscribe)) {\n                    _this.add(context.unsubscribe.bind(context));\n                }\n                context.unsubscribe = _this.unsubscribe.bind(_this);\n            }\n        }\n        _this._context = context;\n        _this._next = next;\n        _this._error = error;\n        _this._complete = complete;\n        return _this;\n    }\n    SafeSubscriber.prototype.next = function (value) {\n        if (!this.isStopped && this._next) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n                this.__tryOrUnsub(this._next, value);\n            }\n            else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n            if (this._error) {\n                if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(this._error, err);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, this._error, err);\n                    this.unsubscribe();\n                }\n            }\n            else if (!_parentSubscriber.syncErrorThrowable) {\n                this.unsubscribe();\n                if (useDeprecatedSynchronousErrorHandling) {\n                    throw err;\n                }\n                hostReportError(err);\n            }\n            else {\n                if (useDeprecatedSynchronousErrorHandling) {\n                    _parentSubscriber.syncErrorValue = err;\n                    _parentSubscriber.syncErrorThrown = true;\n                }\n                else {\n                    hostReportError(err);\n                }\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.complete = function () {\n        var _this = this;\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (this._complete) {\n                var wrappedComplete = function () { return _this._complete.call(_this._context); };\n                if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(wrappedComplete);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n                    this.unsubscribe();\n                }\n            }\n            else {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            this.unsubscribe();\n            if (config.useDeprecatedSynchronousErrorHandling) {\n                throw err;\n            }\n            else {\n                hostReportError(err);\n            }\n        }\n    };\n    SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n        if (!config.useDeprecatedSynchronousErrorHandling) {\n            throw new Error('bad call');\n        }\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            if (config.useDeprecatedSynchronousErrorHandling) {\n                parent.syncErrorValue = err;\n                parent.syncErrorThrown = true;\n                return true;\n            }\n            else {\n                hostReportError(err);\n                return true;\n            }\n        }\n        return false;\n    };\n    SafeSubscriber.prototype._unsubscribe = function () {\n        var _parentSubscriber = this._parentSubscriber;\n        this._context = null;\n        this._parentSubscriber = null;\n        _parentSubscriber.unsubscribe();\n    };\n    return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\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;","// Store finish reasons in tuple to save on bundle size\n// Readonly type should enforce that this is not mutated.\nexport const FINISH_REASON_TAG = 'finishReason';\n\nexport const IDLE_TRANSACTION_FINISH_REASONS = ['heartbeatFailed', 'idleTimeout', 'documentHidden'] as const;\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:(?:79|94)[01]|83[0-389])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"[24-689]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]]]],\"BL\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:395|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[125-9]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:(?:79|94)[01]|83[0-389])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"10(?:10|9[56])|2[0-57-9](?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:60\\\\d\\\\d|9101)\\\\d{6}|(?:1\\\\d|3)\\\\d{9}\",[10,11],[[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|91\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0(4(?:[14]4|56)|[579])?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:(?:79|94)[01]|83[0-389])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0-579])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-2]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"[56]94\\\\d{6}|(?:80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[56]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:395|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"(?:[2-489]\\\\d|55)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[25]\\\\d|33|77|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29[1289]|389)\",\"529(?:1[1-46-9]|2[013-8]|90)|5(?:298|389)[0-46-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5293[01]\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|9[0-289])|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[0189]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|2[0-2]|6[0-8]|8[0-3]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:395|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"596\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"1(?:(?:[27]2|44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[01]\\\\d|2[13-9]|[35][1-9]|4[0-35-9]|6[0-46-9]|7[013-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[047]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}|(?:708|80\\\\d)\\\\d{6}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[16]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-4]))\\\\d{4}\"],[\"69(?:2\\\\d\\\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-5]|76(?:2[27]|3[0-37]|9\\\\d))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"800\\\\d{4}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-7]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|77|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"[0-57-9]\\\\d{8}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"5056(?:[0-35-9]\\\\d|4[46])\\\\d{4}|(?:4722|505[2-57-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[0-2]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"(?:0004|4)\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[7,8,10,13],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:33|[5-79]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63|9(?:39|47)8\"],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|51\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|50\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[013-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Extracts the following properties from function arguments:\r\n// * input `text`\r\n// * `options` object\r\n// * `metadata` JSON\r\nexport default function normalizeArguments(args) {\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions  = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Otherwise istanbul would show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst isObject = _ => typeof _ === 'object'","// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n  constructor(code) {\r\n    super(code)\r\n    // Set the prototype explicitly.\r\n    // Any subclass of FooError will have to manually set the prototype as well.\r\n    Object.setPrototypeOf(this, ParseError.prototype)\r\n    this.name = this.constructor.name\r\n  }\r\n}","// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n    a = a.split('-')\r\n    b = b.split('-')\r\n    var pa = a[0].split('.')\r\n    var pb = b[0].split('.')\r\n    for (var i = 0; i < 3; i++) {\r\n        var na = Number(pa[i])\r\n        var nb = Number(pb[i])\r\n        if (na > nb) return 1\r\n        if (nb > na) return -1\r\n        if (!isNaN(na) && isNaN(nb)) return 1\r\n        if (isNaN(na) && !isNaN(nb)) return -1\r\n    }\r\n    if (a[1] && b[1]) {\r\n        return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n    }\r\n    return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}","import compare from './tools/semver-compare.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t//  which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to\r\n\t// `country_calling_codes` in `1.0.18`.\r\n\tif (!is_object(metadata) || !is_object(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst type_of = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param  {string} country\r\n * @param  {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param  {string} country\r\n * @param  {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries[country] !== undefined\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }","import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t  \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t     + possibleCharsAfterExtLabel\r\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t     + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t     + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t     + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t     + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t    + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t    + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t    + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t       + explicitExtn + \"|\"\r\n\t       + ambiguousExtn + \"|\"\r\n\t       + americanStyleExtnWithSuffix + \"|\"\r\n\t       + autoDiallingExtn + \"|\"\r\n\t       + onlyCommasExtn;\r\n}","import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n//  Regular expression of viable phone numbers. This is location independent.\r\n//  Checks we have at least three leading digits, and only valid punctuation,\r\n//  alpha characters and digits in the phone number. Does not include extension\r\n//  data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n//  used as a placeholder for carrier codes, for example in Brazilian phone\r\n//  numbers. We also allow multiple '+' characters at the start.\r\n//\r\n//  Corresponds to the following:\r\n//  [digits]{minLengthNsn}|\r\n//  plus_sign*\r\n//  (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n//  The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n//  they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n//  The second expression restricts the number of digits to three or more, but\r\n//  then allows them to be in international form, and to have alpha-characters\r\n//  and punctuation. We split up the two reg-exes here and combine them when\r\n//  creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n//  with ^ and append $ to each branch.\r\n//\r\n//  \"Note VALID_PUNCTUATION starts with a -,\r\n//   so must be the first in the range\" (c) Google devs.\r\n//  (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}","import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9'  // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param  {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}","import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param  {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param  {string} character - Yet another character from raw input string.\r\n * @param  {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param  {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}","import mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for the country based on its length.\r\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\r\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"<possiblePengths/>\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths    = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}","/**\r\n * Merges two arrays.\r\n * @param  {*} a\r\n * @param  {*} b\r\n * @return {*}\r\n */\r\nexport default function mergeArrays(a, b) {\r\n\tconst merged = a.slice()\r\n\r\n\tfor (const element of b) {\r\n\t\tif (a.indexOf(element) < 0) {\r\n\t\t\tmerged.push(element)\r\n\t\t}\r\n\t}\r\n\r\n\treturn merged.sort((a, b) => a - b)\r\n\r\n\t// ES6 version, requires Set polyfill.\r\n\t// let merged = new Set(a)\r\n\t// for (const element of b) {\r\n\t// \tmerged.add(i)\r\n\t// }\r\n\t// return Array.from(merged).sort((a, b) => a - b)\r\n}","import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {string}\r\n */\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.country(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regular_expression) {\r\n\t// If assigning the `''` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text)\r\n}","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returned `{}`\r\n\t// meaning that the phone number is not a valid one.\r\n\tif (!input.country) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param  {string} callingCode — Calling code.\r\n * @param  {string} nationalNumber — National (significant) number.\r\n * @param  {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\r\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\tlet possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn []\r\n\t}\r\n\treturn possibleCountries.filter((country) => {\r\n\t\treturn couldNationalNumberBelongToCountry(nationalNumber, country, metadata)\r\n\t})\r\n}\r\n\r\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.selectNumberingPlan(country)\r\n\tif (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\r\n\t\treturn true\r\n\t}\r\n\treturn false\r\n}","import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// For regions that have multiple IDD prefixes\r\n// a preferred IDD prefix is returned.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n","import template_formatter from './templateFormatter.js'\r\n\r\n// Formats `value` value preserving `caret` at the same character.\r\n//\r\n// `{ value, caret }` attribute is the result of `parse()` function call.\r\n//\r\n// Returns `{ text, caret }` where the new `caret` is the caret position\r\n// inside `text` text corresponding to the original `caret` position inside `value`.\r\n//\r\n// `formatter(value)` is a function returning `{ text, template }`.\r\n//\r\n// `text` is the `value` value formatted using `template`.\r\n// It may either cut off the non-filled right part of the `template`\r\n// or it may fill the non-filled character placeholders\r\n// in the right part of the `template` with `spacer`\r\n// which is a space (' ') character by default.\r\n//\r\n// `template` is the template used to format the `value`.\r\n// It can be either a full-length template or a partial template.\r\n//\r\n// `formatter` can also be a string — a `template`\r\n// where character placeholders are denoted by 'x'es.\r\n// In this case `formatter` function is automatically created.\r\n//\r\n// Example:\r\n//\r\n// `value` is '880',\r\n// `caret` is `2` (before the first `0`)\r\n//\r\n// `formatter` is `'880' =>\r\n//   { text: '8 (80 )', template: 'x (xxx) xxx-xx-xx' }`\r\n//\r\n// The result is `{ text: '8 (80 )', caret: 4 }`.\r\n//\r\nexport default function format(value, caret, formatter)\r\n{\r\n\tif (typeof formatter === 'string')\r\n\t{\r\n\t\tformatter = template_formatter(formatter)\r\n\t}\r\n\r\n\tlet { text, template } = formatter(value) || {}\r\n\r\n\tif (text === undefined)\r\n\t{\r\n\t\t text = value\r\n\t}\r\n\r\n\tif (template)\r\n\t{\r\n\t\tif (caret === undefined)\r\n\t\t{\r\n\t\t\tcaret = text.length\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlet index = 0\r\n\t\t\tlet found = false\r\n\r\n\t\t\tlet possibly_last_input_character_index = -1\r\n\r\n\t\t\twhile (index < text.length && index < template.length)\r\n\t\t\t{\r\n\t\t\t\t// Character placeholder found\r\n\t\t\t\tif (text[index] !== template[index])\r\n\t\t\t\t{\r\n\t\t\t\t\tif (caret === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfound = true\r\n\t\t\t\t\t\tcaret = index\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpossibly_last_input_character_index = index\r\n\r\n\t\t\t\t\tcaret--\r\n\t\t\t\t}\r\n\r\n\t\t\t\tindex++\r\n\t\t\t}\r\n\r\n\t\t\t// If the caret was positioned after last input character,\r\n\t\t\t// then the text caret index is just after the last input character.\r\n\t\t\tif (!found)\r\n\t\t\t{\r\n\t\t\t\tcaret = possibly_last_input_character_index + 1\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { text, caret }\r\n}","import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param  {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param  {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}","import Metadata from './metadata.js'\r\nimport isPossibleNumber from './isPossible.js'\r\nimport isValidNumber from './isValid.js'\r\n// import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js'\r\nimport formatNumber from './format.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\t/**\r\n\t * @param  {string} countryOrCountryCallingCode\r\n\t * @param  {string} nationalNumber\r\n\t * @param  {object} metadata — Metadata JSON\r\n\t * @return {PhoneNumber}\r\n\t */\r\n\tconstructor(countryOrCountryCallingCode, nationalNumber, metadata) {\r\n\t\tif (!countryOrCountryCallingCode) {\r\n\t\t\tthrow new TypeError('`country` or `countryCallingCode` not passed')\r\n\t\t}\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` not passed')\r\n\t\t}\r\n\t\tif (!metadata) {\r\n\t\t\tthrow new TypeError('`metadata` not passed')\r\n\t\t}\r\n\t\tconst { country, countryCallingCode } = getCountryAndCountryCallingCode(\r\n\t\t\tcountryOrCountryCallingCode,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tthis.country = country\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\t// Exclude `metadata` property output from `PhoneNumber.toString()`\r\n\t\t// so that it doesn't clutter the console output of Node.js.\r\n\t\t// Previously, when Node.js did `console.log(new PhoneNumber(...))`,\r\n\t\t// it would output the whole internal structure of the `metadata` object.\r\n\t\tthis.getMetadata = () => metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tgetPossibleCountries() {\r\n\t\tif (this.country) {\r\n\t\t\treturn [this.country]\r\n\t\t}\r\n\t\treturn getPossibleCountriesForNumber(\r\n\t\t\tthis.countryCallingCode,\r\n\t\t\tthis.nationalNumber,\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.getMetadata())\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\r\n\t// but later it was found out that it doesn't include the possible `TOO_SHORT` result\r\n\t// returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\r\n\t// so eventually I simply commented out this method from the `PhoneNumber` class\r\n\t// and just left the `validatePhoneNumberLength()` function, even though that one would require\r\n\t// and additional step to also validate the actual country / calling code of the phone number.\r\n\t// validateLength() {\r\n\t// \tconst metadata = new Metadata(this.getMetadata())\r\n\t// \tmetadata.selectNumberingPlan(this.countryCallingCode)\r\n\t// \tconst result = checkNumberLength(this.nationalNumber, metadata)\r\n\t// \tif (result !== 'IS_POSSIBLE') {\r\n\t// \t\treturn result\r\n\t// \t}\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)\r\n\r\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\r\n\tlet country\r\n\tlet countryCallingCode\r\n\r\n\tconst metadata = new Metadata(metadataJson)\r\n\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t// Also store the country code as `.country`.\r\n\tif (isCountryCode(countryOrCountryCallingCode)) {\r\n\t\tcountry = countryOrCountryCallingCode\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\tcountryCallingCode = metadata.countryCallingCode()\r\n\t} else {\r\n\t\tcountryCallingCode = countryOrCountryCallingCode\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tif (metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\tcountry = '001'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode\r\n\t}\r\n}","import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {string}\r\n */\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes()) {\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n}","import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used  in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n   return {\r\n   \tnationalNumber: number\r\n   }\r\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param  {string} number — Complete phone number digits.\r\n * @param  {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.possibleLengths()) {\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param  {string} number — Phone number digits.\r\n * @param  {string?} country\r\n * @param  {string?} callingCode\r\n * @param  {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country, callingCode)\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t\t&&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn { number }\r\n}","import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param  {string} number — Phone number digits (possibly with a `+`).\r\n * @param  {string} [country] — Default country.\r\n * @param  {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param  {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tlet isNumberWithIddPrefix\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tisNumberWithIddPrefix = true\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tcallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\t// No need to set it to `UNSPECIFIED`. It can be just `undefined`.\r\n\t\t\t\t// countryCallingCodeSource: 'UNSPECIFIED',\r\n\t\t\t\tnumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}\r\n\r\n// The possible values for the returned `countryCallingCodeSource` are:\r\n//\r\n// Copy-pasted from:\r\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\r\n//\r\n// // The source from which the country_code is derived. This is not set in the\r\n// // general parsing method, but in the method that parses and keeps raw_input.\r\n// // New fields could be added upon request.\r\n// enum CountryCodeSource {\r\n//  // Default value returned if this is not set, because the phone number was\r\n//  // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\r\n//  // return false if this is the case.\r\n//  UNSPECIFIED = 0;\r\n//\r\n//  // The country_code is derived based on a phone number with a leading \"+\",\r\n//  // e.g. the French number \"+33 1 42 68 53 00\".\r\n//  FROM_NUMBER_WITH_PLUS_SIGN = 1;\r\n//\r\n//  // The country_code is derived based on a phone number with a leading IDD,\r\n//  // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\r\n//  FROM_NUMBER_WITH_IDD = 5;\r\n//\r\n//  // The country_code is derived based on a phone number without a leading\r\n//  // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\r\n//  // supplied as France.\r\n//  FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\r\n//\r\n//  // The country_code is derived NOT based on the phone number itself, but\r\n//  // from the defaultCountry parameter provided in the parsing function by the\r\n//  // clients. This happens mostly for numbers written in the national format\r\n//  // (without country code). For example, this would be set when parsing the\r\n//  // French number \"01 42 68 53 00\", when defaultCountry is supplied as\r\n//  // France.\r\n//  FROM_DEFAULT_COUNTRY = 20;\r\n// }","import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\nexport default function getCountryByNationalNumber(nationalPhoneNumber, {\r\n\tcountries,\r\n\tdefaultCountry,\r\n\tmetadata\r\n}) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tconst matchingCountries = []\r\n\r\n\tfor (const country of countries) {\r\n\t\tmetadata.country(country)\r\n\t\t// \"Leading digits\" patterns are only defined for about 20% of all countries.\r\n\t\t// By definition, matching \"leading digits\" is a sufficient but not a necessary\r\n\t\t// condition for a phone number to belong to a country.\r\n\t\t// The point of \"leading digits\" check is that it's the fastest one to get a match.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\t// I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\r\n\t\t// because of the intended use of that feature.\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\t// If the `defaultCountry` is among the `matchingCountries` then return it.\r\n\t\t\tif (defaultCountry) {\r\n\t\t\t\tif (country === defaultCountry) {\r\n\t\t\t\t\treturn country\r\n\t\t\t\t}\r\n\t\t\t\tmatchingCountries.push(country)\r\n\t\t\t} else {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the first (\"main\") one of the `matchingCountries`.\r\n\tif (matchingCountries.length > 0) {\r\n\t\treturn matchingCountries[0]\r\n\t}\r\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default function getCountryByCallingCode(callingCode, {\r\n\tnationalNumber: nationalPhoneNumber,\r\n\tdefaultCountry,\r\n\tmetadata\r\n}) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn getCountryByNationalNumber(nationalPhoneNumber, {\r\n\t\tcountries: possibleCountries,\r\n\t\tdefaultCountry,\r\n\t\tmetadata: metadata.metadata\r\n\t})\r\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\r\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\r\n// Example: `\"tel:12133734253;phone-context=+1\"`.\r\n// This function parses the full phone number from the local number and the `phone-context`\r\n// when the `phone-context` contains a `+` sign.\r\n\r\nimport {\r\n  VALID_DIGITS,\r\n  // PLUS_CHARS\r\n} from '../constants.js'\r\n\r\nexport const PLUS_SIGN = '+'\r\n\r\nconst RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?'\r\n\r\nconst RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')'\r\n\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_ =\r\n\t'^' +\r\n\t'\\\\' +\r\n\tPLUS_SIGN +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'[' + VALID_DIGITS +  ']' +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'$'\r\n\r\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g')\r\n\r\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\r\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\r\nconst ALPHANUM_ = VALID_DIGITS\r\n\r\nconst RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst VALID_ALPHA_ = 'a-zA-Z'\r\nconst RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$'\r\n\r\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g')\r\n\r\nexport const RFC3966_PREFIX_ = 'tel:'\r\nexport const RFC3966_PHONE_CONTEXT_ = ';phone-context='\r\nexport const RFC3966_ISDN_SUBADDRESS_ = ';isub='\r\n\r\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\r\nexport default function extractPhoneContext(numberToExtractFrom) {\r\n\tconst indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t// If no phone-context parameter is present\r\n\tif (indexOfPhoneContext < 0) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length\r\n\t// If phone-context parameter is empty\r\n\tif (phoneContextStart >= numberToExtractFrom.length) {\r\n\t\treturn ''\r\n\t}\r\n\r\n\tconst phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart)\r\n\t// If phone-context is not the last parameter\r\n\tif (phoneContextEnd >= 0) {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart, phoneContextEnd)\r\n\t} else {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart)\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\r\nexport function isPhoneContextValid(phoneContext) {\r\n\tif (phoneContext === null) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (phoneContext.length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Does phone-context value match pattern of global-number-digits or domainname.\r\n\treturn RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) ||\r\n\t\tRFC3966_DOMAINNAME_PATTERN_.test(phoneContext)\r\n}","import extractPhoneContext, {\r\n\tisPhoneContextValid,\r\n\tPLUS_SIGN,\r\n\tRFC3966_PREFIX_,\r\n\tRFC3966_PHONE_CONTEXT_,\r\n\tRFC3966_ISDN_SUBADDRESS_\r\n} from './extractPhoneContext.js'\r\n\r\nimport ParseError from '../ParseError.js'\r\n\r\n/**\r\n * @param  {string} numberToParse\r\n * @param  {string} nationalNumber\r\n * @return {}\r\n */\r\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, {\r\n\textractFormattedPhoneNumber\r\n}) {\r\n\tconst phoneContext = extractPhoneContext(numberToParse)\r\n\tif (!isPhoneContextValid(phoneContext)) {\r\n\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t}\r\n\r\n\tlet phoneNumberString\r\n\r\n\tif (phoneContext === null) {\r\n\t\t// Extract a possible number from the string passed in.\r\n\t\t// (this strips leading characters that could not be the start of a phone number)\r\n\t\tphoneNumberString = extractFormattedPhoneNumber(numberToParse) || ''\r\n\t} else {\r\n\t\tphoneNumberString = ''\r\n\r\n\t\t// If the phone context contains a phone number prefix, we need to capture\r\n\t\t// it, whereas domains will be ignored.\r\n\t\tif (phoneContext.charAt(0) === PLUS_SIGN) {\r\n\t\t\tphoneNumberString += phoneContext\r\n\t\t}\r\n\r\n\t\t// Now append everything between the \"tel:\" prefix and the phone-context.\r\n\t\t// This should include the national number, an optional extension or\r\n\t\t// isdn-subaddress component. Note we also handle the case when \"tel:\" is\r\n\t\t// missing, as we have seen in some of the phone number inputs.\r\n\t\t// In that case, we append everything from the beginning.\r\n\t\tconst indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_)\r\n\t\tlet indexOfNationalNumber\r\n\t\t// RFC 3966 \"tel:\" prefix is preset at this stage because\r\n\t\t// `isPhoneContextValid()` requires it to be present.\r\n\t\t/* istanbul ignore else */\r\n\t\tif (indexOfRfc3966Prefix >= 0) {\r\n\t\t\tindexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length\r\n\t\t} else {\r\n\t\t\tindexOfNationalNumber = 0\r\n\t\t}\r\n\t\tconst indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t\tphoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext)\r\n\t}\r\n\r\n\t// Delete the isdn-subaddress and everything after it if it is present.\r\n\t// Note extension won't appear at the same time with isdn-subaddress\r\n\t// according to paragraph 5.3 of the RFC3966 spec.\r\n\tconst indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_)\r\n\tif (indexOfIsdn > 0) {\r\n\t\tphoneNumberString = phoneNumberString.substring(0, indexOfIsdn)\r\n\t}\r\n\t// If both phone context and isdn-subaddress are absent but other\r\n\t// parameters are present, the parameters are left in nationalNumber.\r\n\t// This is because we are concerned about deleting content from a potential\r\n\t// number string when there is no strong evidence that the number is\r\n\t// actually written in RFC3966.\r\n\r\n\tif (phoneNumberString !== '') {\r\n\t\treturn phoneNumberString\r\n\t}\r\n}","// Parses the `text`.\r\n//\r\n// Returns `{ value, caret }` where `caret` is\r\n// the caret position inside `value`\r\n// corresponding to the `caret_position` inside `text`.\r\n//\r\n// The `text` is parsed by feeding each character sequentially to\r\n// `parse_character(character, value)` function\r\n// and appending the result (if it's not `undefined`) to `value`.\r\n//\r\n// Example:\r\n//\r\n// `text` is `8 (800) 555-35-35`,\r\n// `caret_position` is `4` (before the first `0`).\r\n// `parse_character` is `(character, value) =>\r\n//   if (character >= '0' && character <= '9') { return character }`.\r\n//\r\n// then `parse()` outputs `{ value: '88005553535', caret: 2 }`.\r\n//\r\nexport default function parse(text, caret_position, parse_character)\r\n{\r\n\tlet value = ''\r\n\r\n\tlet focused_input_character_index = 0\r\n\r\n\tlet index = 0\r\n\twhile (index < text.length)\r\n\t{\r\n\t\tconst character = parse_character(text[index], value)\r\n\r\n\t\tif (character !== undefined)\r\n\t\t{\r\n\t\t\tvalue += character\r\n\r\n\t\t\tif (caret_position !== undefined)\r\n\t\t\t{\r\n\t\t\t\tif (caret_position === index)\r\n\t\t\t\t{\r\n\t\t\t\t\tfocused_input_character_index = value.length - 1;\r\n\t\t\t\t}\r\n\t\t\t\telse if (caret_position > index)\r\n\t\t\t\t{\r\n\t\t\t\t\tfocused_input_character_index = value.length\r\n\t\t\t\t}\r\n\t\t\t }\r\n\t\t}\r\n\r\n\t\tindex++\r\n\t}\r\n\r\n\t// If caret position wasn't specified\r\n\tif (caret_position === undefined)\r\n\t{\r\n\t\t// Then set caret position to \"after the last input character\"\r\n\t\tfocused_input_character_index = value.length\r\n\t}\r\n\r\n\tconst result =\r\n\t{\r\n\t\tvalue,\r\n\t\tcaret : focused_input_character_index\r\n\t}\r\n\r\n\treturn result\r\n}","import parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumberWithError(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n","import parse from './parse.js'\r\n\r\nexport default function parsePhoneNumberWithError(text, options, metadata) {\r\n\treturn parse(text, { ...options, v2: true }, metadata)\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber_ from './parsePhoneNumber_.js'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\n\r\nexport default function isPossiblePhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isPossible() || false\r\n}","import Metadata from './metadata.js'\r\n\r\nexport default function getCountries(metadata) {\r\n\treturn new Metadata(metadata).getCountries()\r\n}","export default {\n  \"ext\": \"ext.\",\n  \"country\": \"Phone number country\",\n  \"phone\": \"Phone\",\n  \"AB\": \"Abkhazia\",\n  \"AC\": \"Ascension Island\",\n  \"AD\": \"Andorra\",\n  \"AE\": \"United Arab Emirates\",\n  \"AF\": \"Afghanistan\",\n  \"AG\": \"Antigua and Barbuda\",\n  \"AI\": \"Anguilla\",\n  \"AL\": \"Albania\",\n  \"AM\": \"Armenia\",\n  \"AO\": \"Angola\",\n  \"AQ\": \"Antarctica\",\n  \"AR\": \"Argentina\",\n  \"AS\": \"American Samoa\",\n  \"AT\": \"Austria\",\n  \"AU\": \"Australia\",\n  \"AW\": \"Aruba\",\n  \"AX\": \"Åland Islands\",\n  \"AZ\": \"Azerbaijan\",\n  \"BA\": \"Bosnia and Herzegovina\",\n  \"BB\": \"Barbados\",\n  \"BD\": \"Bangladesh\",\n  \"BE\": \"Belgium\",\n  \"BF\": \"Burkina Faso\",\n  \"BG\": \"Bulgaria\",\n  \"BH\": \"Bahrain\",\n  \"BI\": \"Burundi\",\n  \"BJ\": \"Benin\",\n  \"BL\": \"Saint Barthélemy\",\n  \"BM\": \"Bermuda\",\n  \"BN\": \"Brunei Darussalam\",\n  \"BO\": \"Bolivia\",\n  \"BQ\": \"Bonaire, Sint Eustatius and Saba\",\n  \"BR\": \"Brazil\",\n  \"BS\": \"Bahamas\",\n  \"BT\": \"Bhutan\",\n  \"BV\": \"Bouvet Island\",\n  \"BW\": \"Botswana\",\n  \"BY\": \"Belarus\",\n  \"BZ\": \"Belize\",\n  \"CA\": \"Canada\",\n  \"CC\": \"Cocos (Keeling) Islands\",\n  \"CD\": \"Congo, Democratic Republic of the\",\n  \"CF\": \"Central African Republic\",\n  \"CG\": \"Congo\",\n  \"CH\": \"Switzerland\",\n  \"CI\": \"Cote d'Ivoire\",\n  \"CK\": \"Cook Islands\",\n  \"CL\": \"Chile\",\n  \"CM\": \"Cameroon\",\n  \"CN\": \"China\",\n  \"CO\": \"Colombia\",\n  \"CR\": \"Costa Rica\",\n  \"CU\": \"Cuba\",\n  \"CV\": \"Cape Verde\",\n  \"CW\": \"Curaçao\",\n  \"CX\": \"Christmas Island\",\n  \"CY\": \"Cyprus\",\n  \"CZ\": \"Czech Republic\",\n  \"DE\": \"Germany\",\n  \"DJ\": \"Djibouti\",\n  \"DK\": \"Denmark\",\n  \"DM\": \"Dominica\",\n  \"DO\": \"Dominican Republic\",\n  \"DZ\": \"Algeria\",\n  \"EC\": \"Ecuador\",\n  \"EE\": \"Estonia\",\n  \"EG\": \"Egypt\",\n  \"EH\": \"Western Sahara\",\n  \"ER\": \"Eritrea\",\n  \"ES\": \"Spain\",\n  \"ET\": \"Ethiopia\",\n  \"FI\": \"Finland\",\n  \"FJ\": \"Fiji\",\n  \"FK\": \"Falkland Islands\",\n  \"FM\": \"Federated States of Micronesia\",\n  \"FO\": \"Faroe Islands\",\n  \"FR\": \"France\",\n  \"GA\": \"Gabon\",\n  \"GB\": \"United Kingdom\",\n  \"GD\": \"Grenada\",\n  \"GE\": \"Georgia\",\n  \"GF\": \"French Guiana\",\n  \"GG\": \"Guernsey\",\n  \"GH\": \"Ghana\",\n  \"GI\": \"Gibraltar\",\n  \"GL\": \"Greenland\",\n  \"GM\": \"Gambia\",\n  \"GN\": \"Guinea\",\n  \"GP\": \"Guadeloupe\",\n  \"GQ\": \"Equatorial Guinea\",\n  \"GR\": \"Greece\",\n  \"GS\": \"South Georgia and the South Sandwich Islands\",\n  \"GT\": \"Guatemala\",\n  \"GU\": \"Guam\",\n  \"GW\": \"Guinea-Bissau\",\n  \"GY\": \"Guyana\",\n  \"HK\": \"Hong Kong\",\n  \"HM\": \"Heard Island and McDonald Islands\",\n  \"HN\": \"Honduras\",\n  \"HR\": \"Croatia\",\n  \"HT\": \"Haiti\",\n  \"HU\": \"Hungary\",\n  \"ID\": \"Indonesia\",\n  \"IE\": \"Ireland\",\n  \"IL\": \"Israel\",\n  \"IM\": \"Isle of Man\",\n  \"IN\": \"India\",\n  \"IO\": \"British Indian Ocean Territory\",\n  \"IQ\": \"Iraq\",\n  \"IR\": \"Iran\",\n  \"IS\": \"Iceland\",\n  \"IT\": \"Italy\",\n  \"JE\": \"Jersey\",\n  \"JM\": \"Jamaica\",\n  \"JO\": \"Jordan\",\n  \"JP\": \"Japan\",\n  \"KE\": \"Kenya\",\n  \"KG\": \"Kyrgyzstan\",\n  \"KH\": \"Cambodia\",\n  \"KI\": \"Kiribati\",\n  \"KM\": \"Comoros\",\n  \"KN\": \"Saint Kitts and Nevis\",\n  \"KP\": \"North Korea\",\n  \"KR\": \"South Korea\",\n  \"KW\": \"Kuwait\",\n  \"KY\": \"Cayman Islands\",\n  \"KZ\": \"Kazakhstan\",\n  \"LA\": \"Laos\",\n  \"LB\": \"Lebanon\",\n  \"LC\": \"Saint Lucia\",\n  \"LI\": \"Liechtenstein\",\n  \"LK\": \"Sri Lanka\",\n  \"LR\": \"Liberia\",\n  \"LS\": \"Lesotho\",\n  \"LT\": \"Lithuania\",\n  \"LU\": \"Luxembourg\",\n  \"LV\": \"Latvia\",\n  \"LY\": \"Libya\",\n  \"MA\": \"Morocco\",\n  \"MC\": \"Monaco\",\n  \"MD\": \"Moldova\",\n  \"ME\": \"Montenegro\",\n  \"MF\": \"Saint Martin (French Part)\",\n  \"MG\": \"Madagascar\",\n  \"MH\": \"Marshall Islands\",\n  \"MK\": \"North Macedonia\",\n  \"ML\": \"Mali\",\n  \"MM\": \"Myanmar\",\n  \"MN\": \"Mongolia\",\n  \"MO\": \"Macao\",\n  \"MP\": \"Northern Mariana Islands\",\n  \"MQ\": \"Martinique\",\n  \"MR\": \"Mauritania\",\n  \"MS\": \"Montserrat\",\n  \"MT\": \"Malta\",\n  \"MU\": \"Mauritius\",\n  \"MV\": \"Maldives\",\n  \"MW\": \"Malawi\",\n  \"MX\": \"Mexico\",\n  \"MY\": \"Malaysia\",\n  \"MZ\": \"Mozambique\",\n  \"NA\": \"Namibia\",\n  \"NC\": \"New Caledonia\",\n  \"NE\": \"Niger\",\n  \"NF\": \"Norfolk Island\",\n  \"NG\": \"Nigeria\",\n  \"NI\": \"Nicaragua\",\n  \"NL\": \"Netherlands\",\n  \"NO\": \"Norway\",\n  \"NP\": \"Nepal\",\n  \"NR\": \"Nauru\",\n  \"NU\": \"Niue\",\n  \"NZ\": \"New Zealand\",\n  \"OM\": \"Oman\",\n  \"OS\": \"South Ossetia\",\n  \"PA\": \"Panama\",\n  \"PE\": \"Peru\",\n  \"PF\": \"French Polynesia\",\n  \"PG\": \"Papua New Guinea\",\n  \"PH\": \"Philippines\",\n  \"PK\": \"Pakistan\",\n  \"PL\": \"Poland\",\n  \"PM\": \"Saint Pierre and Miquelon\",\n  \"PN\": \"Pitcairn\",\n  \"PR\": \"Puerto Rico\",\n  \"PS\": \"Palestine\",\n  \"PT\": \"Portugal\",\n  \"PW\": \"Palau\",\n  \"PY\": \"Paraguay\",\n  \"QA\": \"Qatar\",\n  \"RE\": \"Reunion\",\n  \"RO\": \"Romania\",\n  \"RS\": \"Serbia\",\n  \"RU\": \"Russia\",\n  \"RW\": \"Rwanda\",\n  \"SA\": \"Saudi Arabia\",\n  \"SB\": \"Solomon Islands\",\n  \"SC\": \"Seychelles\",\n  \"SD\": \"Sudan\",\n  \"SE\": \"Sweden\",\n  \"SG\": \"Singapore\",\n  \"SH\": \"Saint Helena\",\n  \"SI\": \"Slovenia\",\n  \"SJ\": \"Svalbard and Jan Mayen\",\n  \"SK\": \"Slovakia\",\n  \"SL\": \"Sierra Leone\",\n  \"SM\": \"San Marino\",\n  \"SN\": \"Senegal\",\n  \"SO\": \"Somalia\",\n  \"SR\": \"Suriname\",\n  \"SS\": \"South Sudan\",\n  \"ST\": \"Sao Tome and Principe\",\n  \"SV\": \"El Salvador\",\n  \"SX\": \"Sint Maarten\",\n  \"SY\": \"Syria\",\n  \"SZ\": \"Swaziland\",\n  \"TA\": \"Tristan da Cunha\",\n  \"TC\": \"Turks and Caicos Islands\",\n  \"TD\": \"Chad\",\n  \"TF\": \"French Southern Territories\",\n  \"TG\": \"Togo\",\n  \"TH\": \"Thailand\",\n  \"TJ\": \"Tajikistan\",\n  \"TK\": \"Tokelau\",\n  \"TL\": \"Timor-Leste\",\n  \"TM\": \"Turkmenistan\",\n  \"TN\": \"Tunisia\",\n  \"TO\": \"Tonga\",\n  \"TR\": \"Turkey\",\n  \"TT\": \"Trinidad and Tobago\",\n  \"TV\": \"Tuvalu\",\n  \"TW\": \"Taiwan\",\n  \"TZ\": \"Tanzania\",\n  \"UA\": \"Ukraine\",\n  \"UG\": \"Uganda\",\n  \"UM\": \"United States Minor Outlying Islands\",\n  \"US\": \"United States\",\n  \"UY\": \"Uruguay\",\n  \"UZ\": \"Uzbekistan\",\n  \"VA\": \"Holy See (Vatican City State)\",\n  \"VC\": \"Saint Vincent and the Grenadines\",\n  \"VE\": \"Venezuela\",\n  \"VG\": \"Virgin Islands, British\",\n  \"VI\": \"Virgin Islands, U.S.\",\n  \"VN\": \"Vietnam\",\n  \"VU\": \"Vanuatu\",\n  \"WF\": \"Wallis and Futuna\",\n  \"WS\": \"Samoa\",\n  \"XK\": \"Kosovo\",\n  \"YE\": \"Yemen\",\n  \"YT\": \"Mayotte\",\n  \"ZA\": \"South Africa\",\n  \"ZM\": \"Zambia\",\n  \"ZW\": \"Zimbabwe\",\n  \"ZZ\": \"International\"\n}","import PropTypes from 'prop-types'\r\n\r\nexport const metadata = PropTypes.shape({\r\n\tcountry_calling_codes : PropTypes.object.isRequired,\r\n\tcountries : PropTypes.object.isRequired\r\n})\r\n\r\nexport const labels = PropTypes.objectOf(PropTypes.string)","// Counts all occurences of a symbol in a string\r\nexport function count_occurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes)\r\n\t// but template placeholder characters don't fall into that range\r\n\t// so skipping such miscellaneous \"exotic\" characters\r\n\t// won't matter here for just counting placeholder character occurrences.\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}","import { count_occurences } from './helpers.js'\r\n\r\nexport default function closeBraces(retained_template, template, placeholder = 'x', empty_placeholder = ' ')\r\n{\r\n\tlet cut_before = retained_template.length\r\n\r\n\tconst opening_braces = count_occurences('(', retained_template)\r\n\tconst closing_braces = count_occurences(')', retained_template)\r\n\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\r\n\twhile (dangling_braces > 0 && cut_before < template.length)\r\n\t{\r\n\t\tretained_template += template[cut_before].replace(placeholder, empty_placeholder)\r\n\r\n\t\tif (template[cut_before] === ')')\r\n\t\t{\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\r\n\t\tcut_before++\r\n\t}\r\n\r\n\treturn retained_template\r\n}\r\n","import { count_occurences } from './helpers.js'\r\nimport close_braces from './closeBraces.js'\r\n\r\n// Takes a `template` where character placeholders\r\n// are denoted by 'x'es (e.g. 'x (xxx) xxx-xx-xx').\r\n//\r\n// Returns a function which takes `value` characters\r\n// and returns the `template` filled with those characters.\r\n// If the `template` can only be partially filled\r\n// then it is cut off.\r\n//\r\n// If `should_close_braces` is `true`,\r\n// then it will also make sure all dangling braces are closed,\r\n// e.g. \"8 (8\" -> \"8 (8  )\" (iPhone style phone number input).\r\n//\r\nexport default function(template, placeholder = 'x', should_close_braces)\r\n{\r\n\tif (!template)\r\n\t{\r\n\t\treturn value => ({ text: value })\r\n\t}\r\n\r\n\tconst characters_in_template = count_occurences(placeholder, template)\r\n\r\n\treturn function(value)\r\n\t{\r\n\t\tif (!value)\r\n\t\t{\r\n\t\t\treturn { text: '', template }\r\n\t\t}\r\n\r\n\t\tlet value_character_index = 0\r\n\t\tlet filled_in_template = ''\r\n\r\n\t\t// Using `.split('')` here instead of normal `for ... of`\r\n\t\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t\t// (the ones consisting of four bytes)\r\n\t\t// but template placeholder characters don't fall into that range\r\n\t\t// and appending UTF-8 characters to a string in parts still works.\r\n\t\tfor (const character of template.split(''))\r\n\t\t{\r\n\t\t\tif (character !== placeholder)\r\n\t\t\t{\r\n\t\t\t\tfilled_in_template += character\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tfilled_in_template += value[value_character_index]\r\n\t\t\tvalue_character_index++\r\n\r\n\t\t\t// If the last available value character has been filled in,\r\n\t\t\t// then return the filled in template\r\n\t\t\t// (either trim the right part or retain it,\r\n\t\t\t//  if no more character placeholders in there)\r\n\t\t\tif (value_character_index === value.length)\r\n\t\t\t{\r\n\t\t\t\t// If there are more character placeholders\r\n\t\t\t\t// in the right part of the template\r\n\t\t\t\t// then simply trim it.\r\n\t\t\t\tif (value.length < characters_in_template)\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (should_close_braces)\r\n\t\t{\r\n\t\t\tfilled_in_template = close_braces(filled_in_template, template)\r\n\t\t}\r\n\r\n\t\treturn { text: filled_in_template, template }\r\n\t}\r\n}","export function isReadOnly(element)\r\n{\r\n\treturn element.hasAttribute('readonly')\r\n}\r\n\r\n// Gets <input/> selection bounds\r\nexport function getSelection(element)\r\n{\r\n\t// If no selection, return nothing\r\n\tif (element.selectionStart === element.selectionEnd)\r\n\t{\r\n\t\treturn\r\n\t}\r\n\r\n\treturn { start: element.selectionStart, end: element.selectionEnd }\r\n}\r\n\r\n// Key codes\r\nexport const Keys =\r\n{\r\n\tBackspace : 8,\r\n\tDelete    : 46\r\n}\r\n\r\n// Finds out the operation to be intercepted and performed\r\n// based on the key down event `keyCode`.\r\nexport function getOperation(event)\r\n{\r\n\tswitch (event.keyCode)\r\n\t{\r\n\t\tcase Keys.Backspace:\r\n\t\t\treturn 'Backspace'\r\n\r\n\t\tcase Keys.Delete:\r\n\t\t\treturn 'Delete'\r\n\t}\r\n}\r\n\r\n// Gets <input/> caret position\r\nexport function getCaretPosition(element)\r\n{\r\n\treturn element.selectionStart\r\n}\r\n\r\n// Sets <input/> caret position\r\nexport function setCaretPosition(element, caret_position)\r\n{\r\n\t// Sanity check\r\n\tif (caret_position === undefined)\r\n\t{\r\n\t\treturn\r\n\t}\r\n\r\n\t// Set caret position.\r\n\t// There has been an issue with caret positioning on Android devices.\r\n\t// https://github.com/catamphetamine/input-format/issues/2\r\n\t// I was revisiting this issue and looked for similar issues in other libraries.\r\n\t// For example, there's [`text-mask`](https://github.com/text-mask/text-mask) library.\r\n\t// They've had exactly the same issue when the caret seemingly refused to be repositioned programmatically.\r\n\t// The symptoms were the same: whenever the caret passed through a non-digit character of a mask (a whitespace, a bracket, a dash, etc), it looked as if it placed itself one character before its correct position.\r\n\t// https://github.com/text-mask/text-mask/issues/300\r\n\t// They seem to have found a basic fix for it: calling `input.setSelectionRange()` in a timeout rather than instantly for Android devices.\r\n\t// https://github.com/text-mask/text-mask/pull/400/files\r\n\t// I've implemented the same workaround here.\r\n\tif (isAndroid()) {\r\n      setTimeout(() => element.setSelectionRange(caret_position, caret_position), 0)\r\n\t} else {\r\n\t\telement.setSelectionRange(caret_position, caret_position)\r\n\t}\r\n}\r\n\r\nfunction isAndroid() {\r\n\t// `navigator` is not defined when running mocha tests.\r\n\tif (typeof navigator !== 'undefined') {\r\n\t\treturn ANDROID_USER_AGENT_REG_EXP.test(navigator.userAgent)\r\n\t}\r\n}\r\n\r\nconst ANDROID_USER_AGENT_REG_EXP = /Android/i","import edit   from './edit.js'\r\nimport parse  from './parse.js'\r\nimport format from './format.js'\r\n\r\nimport\r\n{\r\n\tisReadOnly,\r\n\tgetOperation,\r\n\tgetSelection,\r\n\tgetCaretPosition,\r\n\tsetCaretPosition\r\n}\r\nfrom './dom.js'\r\n\r\n// Deprecated.\r\n// I don't know why this function exists.\r\nexport function onCut(event, input, _parse, _format, on_change)\r\n{\r\n\tif (isReadOnly(input)) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// The actual cut hasn't happened just yet hence the timeout.\r\n\tsetTimeout(() => formatInputText(input, _parse, _format, undefined, on_change), 0)\r\n}\r\n\r\n// Deprecated.\r\n// I don't know why this function exists.\r\nexport function onPaste(event, input, _parse, _format, on_change)\r\n{\r\n\tif (isReadOnly(input)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tconst selection = getSelection(input)\r\n\r\n\t// If selection is made,\r\n\t// just erase the selected text\r\n\t// prior to pasting\r\n\tif (selection)\r\n\t{\r\n\t\teraseSelection(input, selection)\r\n\t}\r\n\r\n\tformatInputText(input, _parse, _format, undefined, on_change)\r\n}\r\n\r\nexport function onChange(event, input, _parse, _format, on_change)\r\n{\r\n\tformatInputText(input, _parse, _format, undefined, on_change)\r\n}\r\n\r\n// \"Delete\" and \"Backspace\" keys are special\r\n// in a way that they're not handled by the regular `onChange()` handler\r\n// and instead are intercepted and re-applied manually.\r\n// The reason is that normally hitting \"Backspace\" or \"Delete\"\r\n// results in erasing a character, but that character might be any character,\r\n// while it would be a better \"user experience\" if it erased not just any character\r\n// but the closest \"meaningful\" character.\r\n// For example, if a template is `(xxx) xxx-xxxx`,\r\n// and the `<input/>` value is `(111) 222-3333`,\r\n// then, if a user begins erasing the `3333` part via \"Backspace\"\r\n// and reaches the \"-\" character, then it would just erase the \"-\" character.\r\n// Nothing wrong with that, but it would be a better \"user experience\"\r\n// if hitting \"Backspace\" at that position would erase the closest \"meaningful\"\r\n// character, which would be the rightmost `2`.\r\n// So, what this `onKeyDown()` handler does is it intercepts\r\n// \"Backspace\" and \"Delete\" keys and re-applies those operations manually\r\n// following the logic described above.\r\nexport function onKeyDown(event, input, _parse, _format, on_change)\r\n{\r\n\tif (isReadOnly(input)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tconst operation = getOperation(event)\r\n\tswitch (operation)\r\n\t{\r\n\t\tcase 'Delete':\r\n\t\tcase 'Backspace':\r\n\t\t\t// Intercept this operation and perform it manually.\r\n\t\t\tevent.preventDefault()\r\n\r\n\t\t\tconst selection = getSelection(input)\r\n\r\n\t\t\t// If a selection is made, just erase the selected text.\r\n\t\t\tif (selection)\r\n\t\t\t{\r\n\t\t\t\teraseSelection(input, selection)\r\n\t\t\t\treturn formatInputText(input, _parse, _format, undefined, on_change)\r\n\t\t\t}\r\n\r\n\t\t\t// Else, perform the (character erasing) operation manually.\r\n\t\t\treturn formatInputText(input, _parse, _format, operation, on_change)\r\n\r\n\t\tdefault:\r\n\t\t\t// Will be handled normally as part of the `onChange` handler.\r\n\t}\r\n}\r\n\r\n/**\r\n * Erases the selected text inside an `<input/>`.\r\n * @param  {DOMElement} input\r\n * @param  {Selection} selection\r\n */\r\nfunction eraseSelection(input, selection)\r\n{\r\n\tlet text = input.value\r\n\ttext = text.slice(0, selection.start) + text.slice(selection.end)\r\n\r\n\tinput.value = text\r\n\tsetCaretPosition(input, selection.start)\r\n}\r\n\r\n/**\r\n * Parses and re-formats `<input/>` textual value.\r\n * E.g. when a user enters something into the `<input/>`\r\n * that raw input must first be parsed and the re-formatted properly.\r\n * Is called either after some user input (e.g. entered a character, pasted something)\r\n * or after the user performed an `operation` (e.g. \"Backspace\", \"Delete\").\r\n * @param  {DOMElement} input\r\n * @param  {Function} parse\r\n * @param  {Function} format\r\n * @param  {string} [operation] - The operation that triggered `<input/>` textual value change. E.g. \"Backspace\", \"Delete\".\r\n * @param  {Function} onChange\r\n */\r\nfunction formatInputText(input, _parse, _format, operation, on_change)\r\n{\r\n\t// Parse `<input/>` textual value.\r\n\t// Get the `value` and `caret` position.\r\n\tlet { value, caret } = parse(input.value, getCaretPosition(input), _parse)\r\n\r\n\t// If a user performed an operation (\"Backspace\", \"Delete\")\r\n\t// then apply that operation and get the new `value` and `caret` position.\r\n\tif (operation)\r\n\t{\r\n\t\tconst newValueAndCaret = edit(value, caret, operation)\r\n\r\n\t\tvalue = newValueAndCaret.value\r\n\t\tcaret = newValueAndCaret.caret\r\n\t}\r\n\r\n\t// Format the `value`.\r\n\t// (and reposition the caret accordingly)\r\n\tconst formatted = format(value, caret, _format)\r\n\r\n\tconst text = formatted.text\r\n\tcaret      = formatted.caret\r\n\r\n\t// Set `<input/>` textual value manually\r\n\t// to prevent React from resetting the caret position\r\n\t// later inside a subsequent `render()`.\r\n\t// Doesn't work for custom `inputComponent`s for some reason.\r\n\tinput.value = text\r\n\t// Position the caret properly.\r\n\tsetCaretPosition(input, caret)\r\n\r\n\t// If the `<input/>` textual value did change,\r\n\t// then the parsed `value` may have changed too.\r\n\ton_change(value)\r\n}","// Edits text `value` (if `operation` is passed) and repositions the `caret` if needed.\r\n//\r\n// Example:\r\n//\r\n// value - '88005553535'\r\n// caret - 2 // starting from 0; is positioned before the first zero\r\n// operation - 'Backspace'\r\n//\r\n// Returns\r\n// {\r\n// \tvalue: '8005553535'\r\n// \tcaret: 1\r\n// }\r\n//\r\n// Currently supports just 'Delete' and 'Backspace' operations\r\n//\r\nexport default function edit(value, caret, operation)\r\n{\r\n\tswitch (operation)\r\n\t{\r\n\t\tcase 'Backspace':\r\n\t\t\t// If there exists the previous character,\r\n\t\t\t// then erase it and reposition the caret.\r\n\t\t\tif (caret > 0)\r\n\t\t\t{\r\n\t\t\t\t// Remove the previous character\r\n\t\t\t\tvalue = value.slice(0, caret - 1) + value.slice(caret)\r\n\t\t\t\t// Position the caret where the previous (erased) character was\r\n\t\t\t\tcaret--\r\n\t\t\t}\r\n\t\t\tbreak\r\n\r\n\t\tcase 'Delete':\r\n\t\t\t// Remove current digit (if any)\r\n\t\t\tvalue = value.slice(0, caret) + value.slice(caret + 1)\r\n\t\t\tbreak\r\n\t}\r\n\r\n\treturn { value, caret }\r\n}","// This is just `./ReactInput.js` rewritten in Hooks.\r\n\r\nimport React, { useCallback, useRef } from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport {\r\n\tonChange as onInputChange,\r\n\tonKeyDown as onInputKeyDown\r\n} from '../inputControl.js'\r\n\r\n// Usage:\r\n//\r\n// <ReactInput\r\n// \tvalue={this.state.phone}\r\n// \tonChange={phone => this.setState({ phone })}\r\n// \tparse={character => character}\r\n// \tformat={value => ({ text: value, template: 'xxxxxxxx' })}/>\r\n//\r\nfunction Input({\r\n\tvalue,\r\n\tparse,\r\n\tformat,\r\n\tinputComponent: InputComponent,\r\n\tonChange,\r\n\tonKeyDown,\r\n\t...rest\r\n}, ref) {\r\n\tconst internalRef = useRef();\r\n\tconst setRef = useCallback((instance) => {\r\n\t\tinternalRef.current = instance;\r\n\t\tif (ref) {\r\n\t\t\tif (typeof ref === 'function') {\r\n\t\t\t\tref(instance)\r\n\t\t\t} else {\r\n\t\t\t\tref.current = instance\r\n\t\t\t}\r\n\t\t}\r\n\t}, [ref]);\r\n\tconst _onChange = useCallback((event) => {\r\n\t\treturn onInputChange(\r\n\t\t\tevent,\r\n\t\t\tinternalRef.current,\r\n\t\t\tparse,\r\n\t\t\tformat,\r\n\t\t\tonChange\r\n\t\t)\r\n\t}, [internalRef, parse, format, onChange])\r\n\r\n\tconst _onKeyDown = useCallback((event) => {\r\n\t\tif (onKeyDown) {\r\n\t\t\tonKeyDown(event)\r\n\t\t}\r\n\t\treturn onInputKeyDown(\r\n\t\t\tevent,\r\n\t\t\tinternalRef.current,\r\n\t\t\tparse,\r\n\t\t\tformat,\r\n\t\t\tonChange\r\n\t\t)\r\n\t}, [internalRef, parse, format, onChange, onKeyDown])\r\n\r\n\treturn (\r\n\t\t<InputComponent\r\n\t\t\t{...rest}\r\n\t\t\tref={setRef}\r\n\t\t\tvalue={format(isEmptyValue(value) ? '' : value).text}\r\n\t\t\tonKeyDown={_onKeyDown}\r\n\t\t\tonChange={_onChange}/>\r\n\t)\r\n}\r\n\r\nInput = React.forwardRef(Input)\r\n\r\nInput.propTypes = {\r\n\t// Parses a single characher of `<input/>` text.\r\n\tparse: PropTypes.func.isRequired,\r\n\r\n\t// Formats `value` into `<input/>` text.\r\n\tformat: PropTypes.func.isRequired,\r\n\r\n\t// Renders `<input/>` by default.\r\n\tinputComponent: PropTypes.elementType.isRequired,\r\n\r\n\t// `<input/>` `type` attribute.\r\n\ttype: PropTypes.string.isRequired,\r\n\r\n\t// Is parsed from <input/> text.\r\n\tvalue: PropTypes.string,\r\n\r\n\t// This handler is called each time `<input/>` text is changed.\r\n\tonChange: PropTypes.func.isRequired,\r\n\r\n\t// Passthrough\r\n\tonKeyDown: PropTypes.func,\r\n\tonCut: PropTypes.func,\r\n\tonPaste: PropTypes.func\r\n}\r\n\r\nInput.defaultProps = {\r\n\t// Renders `<input/>` by default.\r\n\tinputComponent: 'input',\r\n\r\n\t// `<input/>` `type` attribute.\r\n\ttype: 'text'\r\n}\r\n\r\nexport default Input\r\n\r\nfunction isEmptyValue(value) {\r\n\treturn value === undefined || value === null\r\n}","// This \"state\" object simply holds the state of the \"AsYouType\" parser:\r\n//\r\n// * `country?: string`\r\n// * `callingCode?: string`\r\n// * `digits: string`\r\n// * `international: boolean`\r\n// * `missingPlus: boolean`\r\n// * `IDDPrefix?: string`\r\n// * `carrierCode?: string`\r\n// * `nationalPrefix?: string`\r\n// * `nationalSignificantNumber?: string`\r\n// * `nationalSignificantNumberMatchesInput: boolean`\r\n// * `complexPrefixBeforeNationalSignificantNumber?: string`\r\n//\r\n// `state.country` and `state.callingCode` aren't required to be in sync.\r\n// For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\r\n// So `state.country` and `state.callingCode` are totally independent.\r\n//\r\nexport default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset({ country, callingCode }) {\r\n\t\tthis.international = false\r\n\t\tthis.missingPlus = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberMatchesInput = true\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.complexPrefixBeforeNationalSignificantNumber = undefined\r\n\t}\r\n\r\n\tupdate(properties) {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\tthis.onCallingCodeChange(callingCode, this.country)\r\n\t}\r\n\r\n\tstartInternationalNumber(country, callingCode) {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}","// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}","import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\tformattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}","export default class PatternParser {\r\n\tparse(pattern) {\r\n\t\tthis.context = [{\r\n\t\t\tor: true,\r\n\t\t\tinstructions: []\r\n\t\t}]\r\n\r\n\t\tthis.parsePattern(pattern)\r\n\r\n\t\tif (this.context.length !== 1) {\r\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\r\n\t\t}\r\n\r\n\t\tconst { branches, instructions } = this.context[0]\r\n\r\n\t\tif (branches) {\r\n\t\t\treturn {\r\n\t\t\t\top: '|',\r\n\t\t\t\targs: branches.concat([\r\n\t\t\t\t\texpandSingleElementArray(instructions)\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* istanbul ignore if */\r\n\t\tif (instructions.length === 0) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tif (instructions.length === 1) {\r\n\t\t\treturn instructions[0]\r\n\t\t}\r\n\r\n\t\treturn instructions\r\n\t}\r\n\r\n\tstartContext(context) {\r\n\t\tthis.context.push(context)\r\n\t}\r\n\r\n\tendContext() {\r\n\t\tthis.context.pop()\r\n\t}\r\n\r\n\tgetContext() {\r\n\t\treturn this.context[this.context.length - 1]\r\n\t}\r\n\r\n\tparsePattern(pattern) {\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tconst match = pattern.match(OPERATOR)\r\n\t\tif (!match) {\r\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\r\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\r\n\t\t\t\tpattern.split('')\r\n\t\t\t)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst operator = match[1]\r\n\t\tconst before = pattern.slice(0, match.index)\r\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\r\n\r\n\t\tswitch (operator) {\r\n\t\t\tcase '(?:':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\tor: true,\r\n\t\t\t\t\tinstructions: [],\r\n\t\t\t\t\tbranches: []\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ')':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.getContext().instructions.length === 0) {\r\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\r\n\t\t\t\t}\r\n\t\t\t\tconst { branches } = this.getContext()\r\n\t\t\t\tbranches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '|',\r\n\t\t\t\t\targs: branches\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '|':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\r\n\t\t\t\tif (!this.getContext().branches) {\r\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\r\n\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\tif (this.context.length === 1) {\r\n\t\t\t\t\t\tthis.getContext().branches = []\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.getContext().branches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.getContext().instructions = []\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '[':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\toneOfSet: true\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ']':\r\n\t\t\t\tif (!this.getContext().oneOfSet) {\r\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: parseOneOfSet(before)\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\r\n\t\t}\r\n\r\n\t\tif (rightPart) {\r\n\t\t\tthis.parsePattern(rightPart)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parseOneOfSet(pattern) {\r\n\tconst values = []\r\n\tlet i = 0\r\n\twhile (i < pattern.length) {\r\n\t\tif (pattern[i] === '-') {\r\n\t\t\tif (i === 0 || i === pattern.length - 1) {\r\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\r\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\r\n\t\t\tlet value = prevValue\r\n\t\t\twhile (value <= nextValue) {\r\n\t\t\t\tvalues.push(String.fromCharCode(value))\r\n\t\t\t\tvalue++\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalues.push(pattern[i])\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn values\r\n}\r\n\r\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\r\n\r\nconst OPERATOR = new RegExp(\r\n\t// any of:\r\n\t'(' +\r\n\t\t// or operator\r\n\t\t'\\\\|' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group start\r\n\t\t'\\\\(\\\\?\\\\:' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group end\r\n\t\t'\\\\)' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set start\r\n\t\t'\\\\[' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set end\r\n\t\t'\\\\]' +\r\n\t')'\r\n)\r\n\r\nfunction expandSingleElementArray(array) {\r\n\tif (array.length === 1) {\r\n\t\treturn array[0]\r\n\t}\r\n\treturn array\r\n}","import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\nexport default class PatternMatcher {\r\n\tconstructor(pattern) {\r\n\t\tthis.matchTree = new PatternParser().parse(pattern)\r\n\t}\r\n\r\n\tmatch(string, { allowOverflow } = {}) {\r\n\t\tif (!string) {\r\n\t\t\tthrow new Error('String is required')\r\n\t\t}\r\n\t\tconst result = match(string.split(''), this.matchTree, true)\r\n\t\tif (result && result.match) {\r\n\t\t\tdelete result.matchedChars\r\n\t\t}\r\n\t\tif (result && result.overflow) {\r\n\t\t\tif (!allowOverflow) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result\r\n\t}\r\n}\r\n\r\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param  {string[]} characters\r\n * @param  {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param  {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\r\nfunction match(characters, tree, last) {\r\n\t// If `tree` is a string, then `tree` is a single character.\r\n\t// That's because when a pattern is parsed, multi-character-string parts\r\n\t// of a pattern are compiled into arrays of single characters.\r\n\t// I still wrote this piece of code for a \"general\" hypothetical case\r\n\t// when `tree` could be a string of several characters, even though\r\n\t// such case is not possible with the current implementation.\r\n\tif (typeof tree === 'string') {\r\n\t\tconst characterString = characters.join('')\r\n\t\tif (tree.indexOf(characterString) === 0) {\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (characters.length === tree.length) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmatch: true,\r\n\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn {\r\n\t\t\t\tpartialMatch: true,\r\n\t\t\t\t// matchedChars: characters\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterString.indexOf(tree) === 0) {\r\n\t\t\tif (last) {\r\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\r\n\t\t\t\t// The `else` case for `characters.length > tree.length` would be\r\n\t\t\t\t// `characters.length <= tree.length` which means `characters.length <= 1`.\r\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\r\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\r\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\r\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (characters.length > tree.length) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmatch: true,\r\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\r\n\tif (Array.isArray(tree)) {\r\n\t\tlet restCharacters = characters.slice()\r\n\t\tlet i = 0\r\n\t\twhile (i < tree.length) {\r\n\t\t\tconst subtree = tree[i]\r\n\t\t\tconst result = match(restCharacters, subtree, last && (i === tree.length - 1))\r\n\t\t\tif (!result) {\r\n\t\t\t\treturn\r\n\t\t\t} else if (result.overflow) {\r\n\t\t\t\treturn result\r\n\t\t\t} else if (result.match) {\r\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\r\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\r\n\t\t\t\tif (restCharacters.length === 0) {\r\n\t\t\t\t\tif (i === tree.length - 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\t\t// If `last` then overflow has already been checked\r\n\t\t// by the last element of the `tree` array.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (last) {\r\n\t\t\treturn {\r\n\t\t\t\toverflow: true\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tmatch: true,\r\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (tree.op) {\r\n\t\tcase '|':\r\n\t\t\tlet partialMatch\r\n\t\t\tfor (const branch of tree.args) {\r\n\t\t\t\tconst result = match(characters, branch, last)\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tif (result.overflow) {\r\n\t\t\t\t\t\treturn result\r\n\t\t\t\t\t} else if (result.match) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\t\t\tpartialMatch = true\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (partialMatch) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t// matchedChars: ...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Not even a partial match.\r\n\t\t\treturn\r\n\r\n\t\tcase '[]':\r\n\t\t\tfor (const char of tree.args) {\r\n\t\t\t\tif (characters[0] === char) {\r\n\t\t\t\t\tif (characters.length === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (last) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\tmatchedChars: [char]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No character matches.\r\n\t\t\treturn\r\n\r\n\t\t/* istanbul ignore next */\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\r\n\t}\r\n}","import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util.js'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete.js'\r\n\r\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\nimport parseDigits from './helpers/parseDigits.js'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\r\nimport { VALID_PUNCTUATION } from './constants.js'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n//    \"leading_digits_patterns\": [\"91\"],\r\n//    \"national_prefix_formatting_rule\": \"0$1\",\r\n//    \"format\": \"$2 15-$3-$4\",\r\n//    \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t// Google developers say:\r\n\t// \"We require that the first matching group is present in the\r\n\t//  output pattern to ensure no data is lost while formatting.\"\r\n\t'\\\\$1' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats an updated phone number.\r\n\t * @param  {string} nextDigits — Additional phone number digits.\r\n\t * @param  {object} state — `AsYouType` state.\r\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n\t */\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t//  If so, we should use this instead of any other formatting template\r\n\t\t//  whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 `<leadingDigits>`\r\n\t\t// and yielding another format for 4 `<leadingDigits>` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\r\n\t\t// (only previously matched formats take part in the narrowing down process)\r\n\r\n\t\t// `leading_digits_patterns` start with 3 digits min\r\n\t\t// and then go up from there one digit at a time.\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\r\n\t\t// Google imposes a requirement on the leading digits\r\n\t\t// to be minimum 3 digits long in order to be eligible\r\n\t\t// for checking those with a leading digits pattern.\r\n\t\t//\r\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\r\n\t\t// Google's original `libphonenumber` library only starts\r\n\t\t// excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t//\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\t//\r\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\r\n\t\t// digits count. For example, `60|8` pattern would already match `8`\r\n\t\t// but the `60` part would require having at least two leading digits,\r\n\t\t// so the whole pattern would require inputting two digits first in order to\r\n\t\t// decide on whether it matches the input, even when the input is \"80\".\r\n\t\t//\r\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\r\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\r\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\r\n\t\t//\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t\t// return true\r\n\t\t\t//\r\n\t\t\t// After leading digits < 3 matching was implemented:\r\n\t\t\ttry {\r\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\r\n\t\t\t} catch (error) /* istanbul ignore next */ {\r\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\r\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits < 3 matching\"\r\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\r\n\t\t\t\t// in case of any issues rather than halting the application's execution.\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\r\n\t\t// available then use the usual regular expression matching.\r\n\t\t//\r\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\r\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\r\n\t\t//\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\t//\r\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\r\n\t\t// for the `for of` line below. Supposedly that means that\r\n\t\t// the loop doesn't ever go over the last element in the list.\r\n\t\t// That's true because there always is `this.chosenFormat`\r\n\t\t// when `this.matchingFormats` is non-empty.\r\n\t\t// And, for some weird reason, it doesn't think that the case\r\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\r\n\t\t// So simply muting this `istanbul` warning.\r\n\t\t// It doesn't skip the contents of the `for of` loop,\r\n\t\t// it just skips the `for of` line.\r\n\t\t//\r\n\t\t/* istanbul ignore next */\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t//    \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t//    \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t//    \"format\": \"$2 15-$3-$4\",\r\n\t\t\t//    \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix(format) {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param  {Format} format\r\n\t * @param  {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use  the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants.js'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber()\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param  {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\tlet complexPrefixBeforeNationalSignificantNumber\r\n\t\tlet nationalSignificantNumberMatchesInput\r\n\t\t// This check also works with empty `this.nationalSignificantNumber`.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\t\t// If the extracted national (significant) number is the\r\n\t\t// last substring of the `digits`, then it means that it hasn't been altered:\r\n\t\t// no digits have been removed from the national (significant) number\r\n\t\t// while applying `national_prefix_transform_rule`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tif (nationalSignificantNumberIndex >= 0 &&\r\n\t\t\tnationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\r\n\t\t\tnationalSignificantNumberMatchesInput = true\r\n\t\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t\t// as just a basic national prefix, then such prefix is stored in\r\n\t\t\t// `this.complexPrefixBeforeNationalSignificantNumber` property and will be\r\n\t\t\t// prepended \"as is\" to the national (significant) number to produce\r\n\t\t\t// a formatted result.\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// `prefixBeforeNationalNumber` is always non-empty,\r\n\t\t\t// because `onExtractedNationalNumber()` isn't called\r\n\t\t\t// when a national (significant) number hasn't been actually \"extracted\":\r\n\t\t\t// when a national (significant) number is equal to the national part of `digits`,\r\n\t\t\t// then `onExtractedNationalNumber()` doesn't get called.\r\n\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\tcomplexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberMatchesInput,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1” after Mexico’s country code\r\n\t\t// (which is “52”) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1”, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\tcountry: undefined,\r\n\t\t\t\tcallingCode: undefined\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode,\r\n\t\t\t\tnumber\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\t\tcountry: state.country,\r\n\t\t\t\t\tcallingCode: newCallingCode\r\n\t\t\t\t})\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state, { country, callingCode }) {\r\n\t\tstate.startInternationalNumber(country, callingCode)\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param  {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param  {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param  {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}","import Metadata from './metadata.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport AsYouTypeState from './AsYouTypeState.js'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport getCountryByNationalNumber from './helpers/getCountryByNationalNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\t// `this.defaultCountry` and `this.defaultCallingCode` aren't required to be in sync.\r\n\t\t// For example, `this.defaultCountry` could be `\"AR\"` and `this.defaultCallingCode` could be `undefined`.\r\n\t\t// So `this.defaultCountry` and `this.defaultCallingCode` are totally independent.\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (typeof optionsOrDefaultCountry === 'object') {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param  {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included the `.country` property of an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (callingCode, country) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset({\r\n\t\t\tcountry: this.defaultCountry,\r\n\t\t\tcallingCode: this.defaultCallingCode\r\n\t\t})\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"calling code\" part of the phone number when it's being input\r\n\t * in an international format.\r\n\t * If no valid calling code has been entered so far, returns `undefined`.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\t // If the number is being input in national format and some \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\r\n\t\t // is equal to that \"default calling code\".\r\n\t\t //\r\n\t\t // If the number is being input in national format and no \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\r\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\r\n\t\t //\r\n\t\tif (this.isInternational()) {\r\n\t\t\treturn this.state.callingCode\r\n\t\t}\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits } = this.state\r\n\t\t// Return `undefined` if no digits have been input yet.\r\n\t\tif (digits) {\r\n\t\t\treturn this._getCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * @return {string} [country]\r\n\t */\r\n\t_getCountry() {\r\n\t\tconst { country } = this.state\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (country === '001') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn country\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberMatchesInput } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberMatchesInput\r\n\t\t\t\t? this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t\t\t: this.state.getNationalDigits()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\t{\r\n\t\t\t\tnationalNumber: this.state.nationalSignificantNumber,\r\n\t\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\t\tmetadata: this.metadata\r\n\t\t\t}\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a E.164 phone number value for the user's input.\r\n\t *\r\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n\t * it will return `\"+12223334444\"`.\r\n\t *\r\n\t * For international phone number input, it will also auto-correct\r\n\t * some minor errors such as using a national prefix when writing\r\n\t * an international phone number. For example, if the user inputs\r\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n\t * `\"+447400000000\"` phone number value.\r\n\t *\r\n\t * Will return `undefined` if no digits have been input,\r\n\t * or when inputting a phone number in national format and no\r\n\t * default country or default \"country calling code\" have been set.\r\n\t *\r\n\t * @return {string} [value]\r\n\t */\r\n\tgetNumberValue() {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tcallingCode,\r\n\t\t\tcountry,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = this.state\r\n\r\n\t \t// Will return `undefined` if no digits have been input.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (callingCode) {\r\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\r\n\t\t\t} else {\r\n\t\t\t\treturn '+' + digits\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\r\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode,\r\n\t\t\tcallingCode\r\n\t\t} = this.state\r\n\r\n\t\t// `this._getCountry()` is basically same as `this.state.country`\r\n\t\t// with the only change that it return `undefined` in case of a\r\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\r\n\t\tlet country = this._getCountry()\r\n\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t// For example, `country` could be `\"AR\"` and `callingCode` could be `undefined`.\r\n\t\t// So `country` and `callingCode` are totally independent.\r\n\r\n\t\tif (!country && !callingCode) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// By default, if `defaultCountry` parameter was passed when\r\n\t\t// creating `AsYouType` instance, `state.country` is gonna be\r\n\t\t// that `defaultCountry`, which doesn't entirely conform with\r\n\t\t// `parsePhoneNumber()`'s behavior where it attempts to determine\r\n\t\t// the country more precisely in cases when multiple countries\r\n\t\t// could correspond to the same `countryCallingCode`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417192969\r\n\t\t//\r\n\t\t// Because `AsYouType.getNumber()` method is supposed to be a 1:1\r\n\t\t// equivalent for `parsePhoneNumber(AsYouType.getNumberValue())`,\r\n\t\t// then it should also behave accordingly in cases of `country` ambiguity.\r\n\t\t// That's how users of this library would expect it to behave anyway.\r\n\t\t//\r\n\t\tif (country) {\r\n\t\t\tif (country === this.defaultCountry) {\r\n\t\t\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t\t\t// For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\r\n\t\t\t\t// So `state.country` and `state.callingCode` are totally independent.\r\n\t\t\t\tconst metadata = new Metadata(this.metadata.metadata)\r\n\t\t\t\tmetadata.selectNumberingPlan(country)\r\n\t\t\t\tconst callingCode = metadata.numberingPlan.callingCode()\r\n\t\t\t\tconst ambiguousCountries = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\t\t\tif (ambiguousCountries.length > 1) {\r\n\t\t\t\t\tconst exactCountry = getCountryByNationalNumber(nationalSignificantNumber, {\r\n\t\t\t\t\t\tcountries: ambiguousCountries,\r\n\t\t\t\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\t\t\t\tmetadata: this.metadata.metadata\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (exactCountry) {\r\n\t\t\t\t\t\tcountry = exactCountry\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountry || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}","import { getCountryCallingCode } from 'libphonenumber-js/core'\r\n\r\nexport function getInputValuePrefix({\r\n\tcountry,\r\n\tinternational,\r\n\twithCountryCallingCode,\r\n\tmetadata\r\n}) {\r\n\treturn country && international && !withCountryCallingCode ?\r\n\t\t`+${getCountryCallingCode(country, metadata)}` :\r\n\t\t''\r\n}\r\n\r\nexport function removeInputValuePrefix(value, prefix) {\r\n\tif (prefix) {\r\n\t\tvalue = value.slice(prefix.length)\r\n\t\tif (value[0] === ' ') {\r\n\t\t\tvalue = value.slice(1)\r\n\t\t}\r\n\t}\r\n\treturn value\r\n}","import React, { useCallback } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport Input from 'input-format/react'\r\nimport { AsYouType, parsePhoneNumberCharacter } from 'libphonenumber-js/core'\r\n\r\nimport { getInputValuePrefix, removeInputValuePrefix } from './helpers/inputValuePrefix.js'\r\n\r\nexport function createInput(defaultMetadata)\r\n{\r\n\t/**\r\n\t * `InputSmart` is a \"smarter\" implementation of a `Component`\r\n\t * that can be passed to `<PhoneInput/>`. It parses and formats\r\n\t * the user's and maintains the caret's position in the process.\r\n\t * The caret positioning is maintained using `input-format` library.\r\n\t * Relies on being run in a DOM environment for calling caret positioning functions.\r\n\t */\r\n\tfunction InputSmart({\r\n\t\tcountry,\r\n\t\tinternational,\r\n\t\twithCountryCallingCode,\r\n\t\tmetadata = defaultMetadata,\r\n\t\t...rest\r\n\t}, ref) {\r\n\t\tconst format = useCallback((value) => {\r\n\t\t\t// \"As you type\" formatter.\r\n\t\t\tconst formatter = new AsYouType(country, metadata)\r\n\t\t\tconst prefix = getInputValuePrefix({\r\n\t\t\t\tcountry,\r\n\t\t\t\tinternational,\r\n\t\t\t\twithCountryCallingCode,\r\n\t\t\t\tmetadata\r\n\t\t\t})\r\n\t\t\t// Format the number.\r\n\t\t\tlet text = formatter.input(prefix + value)\r\n\t\t\tlet template = formatter.getTemplate()\r\n\t\t\tif (prefix) {\r\n\t\t\t\ttext = removeInputValuePrefix(text, prefix)\r\n\t\t\t\t// `AsYouType.getTemplate()` can be `undefined`.\r\n\t\t\t\tif (template) {\r\n\t\t\t\t\ttemplate = removeInputValuePrefix(template, prefix)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\ttext,\r\n\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}, [country, metadata])\r\n\r\n\t\treturn (\r\n\t\t\t<Input\r\n\t\t\t\t{...rest}\r\n\t\t\t\tref={ref}\r\n\t\t\t\tparse={parsePhoneNumberCharacter}\r\n\t\t\t\tformat={format}/>\r\n\t\t)\r\n\t}\r\n\r\n\tInputSmart = React.forwardRef(InputSmart)\r\n\r\n\tInputSmart.propTypes = {\r\n\t\t/**\r\n\t\t * The parsed phone number.\r\n\t\t * \"Parsed\" not in a sense of \"E.164\"\r\n\t\t * but rather in a sense of \"having only\r\n\t\t * digits and possibly a leading plus character\".\r\n\t\t * Examples: `\"\"`, `\"+\"`, `\"+123\"`, `\"123\"`.\r\n\t\t */\r\n\t\tvalue: PropTypes.string.isRequired,\r\n\r\n\t\t/**\r\n\t\t * A function of `value: string`.\r\n\t\t * Updates the `value` property.\r\n\t\t */\r\n\t\tonChange: PropTypes.func.isRequired,\r\n\r\n\t\t/**\r\n\t\t * A two-letter country code for formatting `value`\r\n\t\t * as a national phone number (e.g. `(800) 555 35 35`).\r\n\t\t * E.g. \"US\", \"RU\", etc.\r\n\t\t * If no `country` is passed then `value`\r\n\t\t * is formatted as an international phone number.\r\n\t\t * (e.g. `+7 800 555 35 35`)\r\n\t\t * Perhaps the `country` property should have been called `defaultCountry`\r\n\t\t * because if `value` is an international number then `country` is ignored.\r\n\t\t */\r\n\t\tcountry: PropTypes.string,\r\n\r\n\t\t/**\r\n\t\t * If `country` property is passed along with `international={true}` property\r\n\t\t * then the phone number will be input in \"international\" format for that `country`\r\n\t\t * (without \"country calling code\").\r\n\t\t * For example, if `country=\"US\"` property is passed to \"without country select\" input\r\n\t\t * then the phone number will be input in the \"national\" format for `US` (`(213) 373-4253`).\r\n\t\t * But if both `country=\"US\"` and `international={true}` properties are passed then\r\n\t\t * the phone number will be input in the \"international\" format for `US` (`213 373 4253`)\r\n\t\t * (without \"country calling code\" `+1`).\r\n\t\t */\r\n\t\tinternational: PropTypes.bool,\r\n\r\n\t\t/**\r\n\t\t * If `country` and `international` properties are set,\r\n\t\t * then by default it won't include \"country calling code\" in the input field.\r\n\t\t * To change that, pass `withCountryCallingCode` property,\r\n\t\t * and it will include \"country calling code\" in the input field.\r\n\t\t */\r\n\t\twithCountryCallingCode: PropTypes.bool,\r\n\r\n\t\t/**\r\n\t\t * `libphonenumber-js` metadata.\r\n\t\t */\r\n\t\tmetadata: PropTypes.object\r\n\t}\r\n\r\n\treturn InputSmart\r\n}\r\n\r\nexport default createInput()","import React, { useCallback } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { parseIncompletePhoneNumber, formatIncompletePhoneNumber } from 'libphonenumber-js/core'\r\n\r\nimport { getInputValuePrefix, removeInputValuePrefix } from './helpers/inputValuePrefix.js'\r\n\r\nexport function createInput(defaultMetadata) {\r\n\t/**\r\n\t * `InputBasic` is the most basic implementation of a `Component`\r\n\t * that can be passed to `<PhoneInput/>`. It parses and formats\r\n\t * the user's input but doesn't control the caret in the process:\r\n\t * when erasing or inserting digits in the middle of a phone number\r\n\t * the caret usually jumps to the end (this is the expected behavior).\r\n\t * Why does `InputBasic` exist when there's `InputSmart`?\r\n\t * One reason is working around the [Samsung Galaxy smart caret positioning bug]\r\n\t * (https://github.com/catamphetamine/react-phone-number-input/issues/75).\r\n\t * Another reason is that, unlike `InputSmart`, it doesn't require DOM environment.\r\n\t */\r\n\tfunction InputBasic({\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tcountry,\r\n\t\tinternational,\r\n\t\twithCountryCallingCode,\r\n\t\tmetadata = defaultMetadata,\r\n\t\tinputComponent: Input = 'input',\r\n\t\t...rest\r\n\t}, ref) {\r\n\t\tconst prefix = getInputValuePrefix({\r\n\t\t\tcountry,\r\n\t\t\tinternational,\r\n\t\t\twithCountryCallingCode,\r\n\t\t\tmetadata\r\n\t\t})\r\n\r\n\t\tconst _onChange = useCallback((event) => {\r\n\t\t\tlet newValue = parseIncompletePhoneNumber(event.target.value)\r\n\t\t\t// By default, if a value is something like `\"(123)\"`\r\n\t\t\t// then Backspace would only erase the rightmost brace\r\n\t\t\t// becoming something like `\"(123\"`\r\n\t\t\t// which would give the same `\"123\"` value\r\n\t\t\t// which would then be formatted back to `\"(123)\"`\r\n\t\t\t// and so a user wouldn't be able to erase the phone number.\r\n\t\t\t// Working around this issue with this simple hack.\r\n\t\t\tif (newValue === value) {\r\n\t\t\t\tconst newValueFormatted = format(prefix, newValue, country, metadata)\r\n\t\t\t\tif (newValueFormatted.indexOf(event.target.value) === 0) {\r\n\t\t\t\t\t// Trim the last digit (or plus sign).\r\n\t\t\t\t\tnewValue = newValue.slice(0, -1)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tonChange(newValue)\r\n\t\t}, [\r\n\t\t\tprefix,\r\n\t\t\tvalue,\r\n\t\t\tonChange,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t])\r\n\r\n\t\treturn (\r\n\t\t\t<Input\r\n\t\t\t\t{...rest}\r\n\t\t\t\tref={ref}\r\n\t\t\t\tvalue={format(prefix, value, country, metadata)}\r\n\t\t\t\tonChange={_onChange}/>\r\n\t\t)\r\n\t}\r\n\r\n\tInputBasic = React.forwardRef(InputBasic)\r\n\r\n\tInputBasic.propTypes = {\r\n\t\t/**\r\n\t\t * The parsed phone number.\r\n\t\t * \"Parsed\" not in a sense of \"E.164\"\r\n\t\t * but rather in a sense of \"having only\r\n\t\t * digits and possibly a leading plus character\".\r\n\t\t * Examples: `\"\"`, `\"+\"`, `\"+123\"`, `\"123\"`.\r\n\t\t */\r\n\t\tvalue: PropTypes.string.isRequired,\r\n\r\n\t\t/**\r\n\t\t * A function of `value: string`.\r\n\t\t * Updates the `value` property.\r\n\t\t */\r\n\t\tonChange: PropTypes.func.isRequired,\r\n\r\n\t\t/**\r\n\t\t * A two-letter country code for formatting `value`\r\n\t\t * as a national phone number (e.g. `(800) 555 35 35`).\r\n\t\t * E.g. \"US\", \"RU\", etc.\r\n\t\t * If no `country` is passed then `value`\r\n\t\t * is formatted as an international phone number.\r\n\t\t * (e.g. `+7 800 555 35 35`)\r\n\t\t * Perhaps the `country` property should have been called `defaultCountry`\r\n\t\t * because if `value` is an international number then `country` is ignored.\r\n\t\t */\r\n\t\tcountry : PropTypes.string,\r\n\r\n\t\t/**\r\n\t\t * If `country` property is passed along with `international={true}` property\r\n\t\t * then the phone number will be input in \"international\" format for that `country`\r\n\t\t * (without \"country calling code\").\r\n\t\t * For example, if `country=\"US\"` property is passed to \"without country select\" input\r\n\t\t * then the phone number will be input in the \"national\" format for `US` (`(213) 373-4253`).\r\n\t\t * But if both `country=\"US\"` and `international={true}` properties are passed then\r\n\t\t * the phone number will be input in the \"international\" format for `US` (`213 373 4253`)\r\n\t\t * (without \"country calling code\" `+1`).\r\n\t\t */\r\n\t\tinternational: PropTypes.bool,\r\n\r\n\t\t/**\r\n\t\t * If `country` and `international` properties are set,\r\n\t\t * then by default it won't include \"country calling code\" in the input field.\r\n\t\t * To change that, pass `withCountryCallingCode` property,\r\n\t\t * and it will include \"country calling code\" in the input field.\r\n\t\t */\r\n\t\twithCountryCallingCode: PropTypes.bool,\r\n\r\n\t\t/**\r\n\t\t * `libphonenumber-js` metadata.\r\n\t\t */\r\n\t\tmetadata: PropTypes.object,\r\n\r\n\t\t/**\r\n\t\t * The `<input/>` component.\r\n\t\t */\r\n\t\tinputComponent: PropTypes.elementType\r\n\t}\r\n\r\n\treturn InputBasic\r\n}\r\n\r\nexport default createInput()\r\n\r\nfunction format(prefix, value, country, metadata) {\r\n\treturn removeInputValuePrefix(\r\n\t\tformatIncompletePhoneNumber(\r\n\t\t\tprefix + value,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t),\r\n\t\tprefix\r\n\t)\r\n}","import AsYouType from './AsYouType.js'\r\n\r\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\r\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\r\n\tif (!metadata) {\r\n\t\tmetadata = country\r\n\t\tcountry = undefined\r\n\t}\r\n\treturn new AsYouType(country, metadata).input(value)\r\n}","/**\r\n * Creates Unicode flag from a two-letter ISO country code.\r\n * https://stackoverflow.com/questions/24050671/how-to-put-japan-flag-character-in-a-string\r\n * @param  {string} country — A two-letter ISO country code (case-insensitive).\r\n * @return {string}\r\n */\r\nexport default function getCountryFlag(country) {\r\n\treturn getRegionalIndicatorSymbol(country[0]) + getRegionalIndicatorSymbol(country[1])\r\n}\r\n\r\n/**\r\n * Converts a letter to a Regional Indicator Symbol.\r\n * @param  {string} letter\r\n * @return {string}\r\n */\r\nfunction getRegionalIndicatorSymbol(letter) {\r\n\treturn String.fromCodePoint(0x1F1E6 - 65 + letter.toUpperCase().charCodeAt(0))\r\n}","import React, { useCallback, useMemo } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport classNames from 'classnames'\r\nimport getUnicodeFlagIcon from 'country-flag-icons/unicode'\r\n\r\nexport default function CountrySelect({\r\n\tvalue,\r\n\tonChange,\r\n\toptions,\r\n\t...rest\r\n}) {\r\n\tconst onChange_ = useCallback((event) => {\r\n\t\tconst value = event.target.value\r\n\t\tonChange(value === 'ZZ' ? undefined : value)\r\n\t}, [onChange])\r\n\r\n\tconst selectedOption = useMemo(() => {\r\n\t\treturn getSelectedOption(options, value)\r\n\t}, [options, value])\r\n\r\n\t// \"ZZ\" means \"International\".\r\n\t// (HTML requires each `<option/>` have some string `value`).\r\n\treturn (\r\n\t\t<select\r\n\t\t\t{...rest}\r\n\t\t\tvalue={value || 'ZZ'}\r\n\t\t\tonChange={onChange_}>\r\n\t\t\t{options.map(({ value, label, divider }) => (\r\n\t\t\t\t<option\r\n\t\t\t\t\tkey={divider ? '|' : value || 'ZZ'}\r\n\t\t\t\t\tvalue={divider ? '|' : value || 'ZZ'}\r\n\t\t\t\t\tdisabled={divider ? true : false}\r\n\t\t\t\t\tstyle={divider ? DIVIDER_STYLE : undefined}>\r\n\t\t\t\t\t{label}\r\n\t\t\t\t</option>\r\n\t\t\t))}\r\n\t\t</select>\r\n\t)\r\n}\r\n\r\nCountrySelect.propTypes = {\r\n\t/**\r\n\t * A two-letter country code.\r\n\t * Example: \"US\", \"RU\", etc.\r\n\t */\r\n\tvalue: PropTypes.string,\r\n\r\n\t/**\r\n\t * A function of `value: string`.\r\n\t * Updates the `value` property.\r\n\t */\r\n\tonChange: PropTypes.func.isRequired,\r\n\r\n\t// `<select/>` options.\r\n\toptions: PropTypes.arrayOf(PropTypes.shape({\r\n\t\tvalue: PropTypes.string,\r\n\t\tlabel: PropTypes.string,\r\n\t\tdivider: PropTypes.bool\r\n\t})).isRequired\r\n}\r\n\r\nconst DIVIDER_STYLE = {\r\n\tfontSize: '1px',\r\n\tbackgroundColor: 'currentColor',\r\n\tcolor: 'inherit'\r\n}\r\n\r\nexport function CountrySelectWithIcon({\r\n\tvalue,\r\n\toptions,\r\n\tclassName,\r\n\ticonComponent: Icon,\r\n\tgetIconAspectRatio,\r\n\tarrowComponent: Arrow = DefaultArrowComponent,\r\n\tunicodeFlags,\r\n\t...rest\r\n}) {\r\n\tconst selectedOption = useMemo(() => {\r\n\t\treturn getSelectedOption(options, value)\r\n\t}, [options, value])\r\n\r\n\treturn (\r\n\t\t<div className=\"PhoneInputCountry\">\r\n\t\t\t<CountrySelect\r\n\t\t\t\t{...rest}\r\n\t\t\t\tvalue={value}\r\n\t\t\t\toptions={options}\r\n\t\t\t\tclassName={classNames('PhoneInputCountrySelect', className)}/>\r\n\r\n\t\t\t{/* Either a Unicode flag icon. */}\r\n\t\t\t{(unicodeFlags && value) &&\r\n\t\t\t\t<div className=\"PhoneInputCountryIconUnicode\">\r\n\t\t\t\t\t{getUnicodeFlagIcon(value)}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t{/* Or an SVG flag icon. */}\r\n\t\t\t{!(unicodeFlags && value) &&\r\n\t\t\t\t<Icon\r\n\t\t\t\t\taria-hidden\r\n\t\t\t\t\tcountry={value}\r\n\t\t\t\t\tlabel={selectedOption && selectedOption.label}\r\n\t\t\t\t\taspectRatio={unicodeFlags ? 1 : undefined}/>\r\n\t\t\t}\r\n\r\n\t\t\t<Arrow/>\r\n\t\t</div>\r\n\t)\r\n}\r\n\r\nCountrySelectWithIcon.propTypes = {\r\n\t// Country flag component.\r\n\ticonComponent: PropTypes.elementType,\r\n\r\n\t// Select arrow component.\r\n\tarrowComponent: PropTypes.elementType,\r\n\r\n\t// Set to `true` to render Unicode flag icons instead of SVG images.\r\n\tunicodeFlags: PropTypes.bool\r\n}\r\n\r\nfunction DefaultArrowComponent() {\r\n\treturn <div className=\"PhoneInputCountrySelectArrow\"/>\r\n}\r\n\r\nfunction getSelectedOption(options, value) {\r\n\tfor (const option of options) {\r\n\t\tif (!option.divider && option.value === value) {\r\n\t\t\treturn option\r\n\t\t}\r\n\t}\r\n}","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport classNames from 'classnames'\r\n\r\n// Default country flag icon.\r\n// `<img/>` is wrapped in a `<div/>` to prevent SVGs from exploding in size in IE 11.\r\n// https://github.com/catamphetamine/react-phone-number-input/issues/111\r\nexport default function FlagComponent({\r\n\tcountry,\r\n\tcountryName,\r\n\tflags,\r\n\tflagUrl,\r\n\t...rest\r\n}) {\r\n\tif (flags && flags[country]) {\r\n\t\treturn flags[country]({ title: countryName })\r\n\t}\r\n\treturn (\r\n\t\t<img\r\n\t\t\t{...rest}\r\n\t\t\talt={countryName}\r\n\t\t\trole={countryName ? undefined : \"presentation\"}\r\n\t\t\tsrc={flagUrl.replace('{XX}', country).replace('{xx}', country.toLowerCase())}/>\r\n\t)\r\n}\r\n\r\nFlagComponent.propTypes = {\r\n\t// The country to be selected by default.\r\n\t// Two-letter country code (\"ISO 3166-1 alpha-2\").\r\n\tcountry: PropTypes.string.isRequired,\r\n\r\n\t// Will be HTML `title` attribute of the `<img/>`.\r\n\tcountryName: PropTypes.string.isRequired,\r\n\r\n\t// Country flag icon components.\r\n\t// By default flag icons are inserted as `<img/>`s\r\n\t// with their `src` pointed to `country-flag-icons` gitlab pages website.\r\n\t// There might be cases (e.g. an offline application)\r\n\t// where having a large (3 megabyte) `<svg/>` flags\r\n\t// bundle is more appropriate.\r\n\t// `import flags from 'react-phone-number-input/flags'`.\r\n\tflags: PropTypes.objectOf(PropTypes.elementType),\r\n\r\n\t// A URL for a country flag icon.\r\n\t// By default it points to `country-flag-icons` gitlab pages website.\r\n\tflagUrl: PropTypes.string.isRequired\r\n}\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nexport default function InternationalIcon({ aspectRatio, ...rest }) {\r\n\tif (aspectRatio === 1) {\r\n\t\treturn <InternationalIcon1x1 {...rest}/>\r\n\t} else {\r\n\t\treturn <InternationalIcon3x2 {...rest}/>\r\n\t}\r\n}\r\n\r\nInternationalIcon.propTypes = {\r\n\ttitle: PropTypes.string.isRequired,\r\n\taspectRatio: PropTypes.number\r\n}\r\n\r\n// 3x2.\r\n// Using `<title/>` in `<svg/>`s:\r\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element/title\r\nfunction InternationalIcon3x2({ title, ...rest }) {\r\n\treturn (\r\n\t\t<svg\r\n\t\t\t{...rest}\r\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\tviewBox=\"0 0 75 50\">\r\n\t\t\t<title>{title}</title>\r\n\t\t\t<g\r\n\t\t\t\tclassName=\"PhoneInputInternationalIconGlobe\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeMiterlimit=\"10\">\r\n\t\t\t\t<path strokeLinecap=\"round\" d=\"M47.2,36.1C48.1,36,49,36,50,36c7.4,0,14,1.7,18.5,4.3\"/>\r\n\t\t\t\t<path d=\"M68.6,9.6C64.2,12.3,57.5,14,50,14c-7.4,0-14-1.7-18.5-4.3\"/>\r\n\t\t\t\t<line x1=\"26\" y1=\"25\" x2=\"74\" y2=\"25\"/>\r\n\t\t\t\t<line x1=\"50\" y1=\"1\" x2=\"50\" y2=\"49\"/>\r\n\t\t\t\t<path strokeLinecap=\"round\" d=\"M46.3,48.7c1.2,0.2,2.5,0.3,3.7,0.3c13.3,0,24-10.7,24-24S63.3,1,50,1S26,11.7,26,25c0,2,0.3,3.9,0.7,5.8\"/>\r\n\t\t\t\t<path strokeLinecap=\"round\" d=\"M46.8,48.2c1,0.6,2.1,0.8,3.2,0.8c6.6,0,12-10.7,12-24S56.6,1,50,1S38,11.7,38,25c0,1.4,0.1,2.7,0.2,4c0,0.1,0,0.2,0,0.2\"/>\r\n\t\t\t</g>\r\n\t\t\t<path\r\n\t\t\t\tclassName=\"PhoneInputInternationalIconPhone\"\r\n\t\t\t\tstroke=\"none\"\r\n\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\td=\"M12.4,17.9c2.9-2.9,5.4-4.8,0.3-11.2S4.1,5.2,1.3,8.1C-2,11.4,1.1,23.5,13.1,35.6s24.3,15.2,27.5,11.9c2.8-2.8,7.8-6.3,1.4-11.5s-8.3-2.6-11.2,0.3c-2,2-7.2-2.2-11.7-6.7S10.4,19.9,12.4,17.9z\"/>\r\n\t\t</svg>\r\n\t)\r\n}\r\n\r\nInternationalIcon3x2.propTypes = {\r\n\ttitle: PropTypes.string.isRequired\r\n}\r\n\r\n// 1x1.\r\n// Using `<title/>` in `<svg/>`s:\r\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element/title\r\nfunction InternationalIcon1x1({ title, ...rest }) {\r\n\treturn (\r\n\t\t<svg\r\n\t\t\t{...rest}\r\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\tviewBox=\"0 0 50 50\">\r\n\t\t\t<title>{title}</title>\r\n\t\t\t<g\r\n\t\t\t\tclassName=\"PhoneInputInternationalIconGlobe\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\">\r\n\t\t\t\t<path d=\"M8.45,13A21.44,21.44,0,1,1,37.08,41.56\"/>\r\n\t\t\t\t<path d=\"M19.36,35.47a36.9,36.9,0,0,1-2.28-13.24C17.08,10.39,21.88.85,27.8.85s10.72,9.54,10.72,21.38c0,6.48-1.44,12.28-3.71,16.21\"/>\r\n\t\t\t\t<path d=\"M17.41,33.4A39,39,0,0,1,27.8,32.06c6.62,0,12.55,1.5,16.48,3.86\"/>\r\n\t\t\t\t<path d=\"M44.29,8.53c-3.93,2.37-9.86,3.88-16.49,3.88S15.25,10.9,11.31,8.54\"/>\r\n\t\t\t\t<line x1=\"27.8\" y1=\"0.85\" x2=\"27.8\" y2=\"34.61\"/>\r\n\t\t\t\t<line x1=\"15.2\" y1=\"22.23\" x2=\"49.15\" y2=\"22.23\"/>\r\n\t\t\t</g>\r\n\t\t\t<path\r\n\t\t\t\tclassName=\"PhoneInputInternationalIconPhone\"\r\n\t\t\t\tstroke=\"transparent\"\r\n\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\td=\"M9.42,26.64c2.22-2.22,4.15-3.59.22-8.49S3.08,17,.93,19.17c-2.49,2.48-.13,11.74,9,20.89s18.41,11.5,20.89,9c2.15-2.15,5.91-4.77,1-8.71s-6.27-2-8.49.22c-1.55,1.55-5.48-1.69-8.86-5.08S7.87,28.19,9.42,26.64Z\"/>\r\n\t\t</svg>\r\n\t)\r\n}\r\n\r\nInternationalIcon1x1.propTypes = {\r\n\ttitle: PropTypes.string.isRequired\r\n}\r\n","import { isSupportedCountry } from 'libphonenumber-js/core'\r\nexport { getCountries } from 'libphonenumber-js/core'\r\n\r\n/**\r\n * Sorts country `<select/>` options.\r\n * Can move some country `<select/>` options\r\n * to the top of the list, for example.\r\n * @param  {object[]} countryOptions — Country `<select/>` options.\r\n * @param  {string[]} [countryOptionsOrder] — Country `<select/>` options order. Example: `[\"US\", \"CA\", \"AU\", \"|\", \"...\"]`.\r\n * @return {object[]}\r\n */\r\nexport function sortCountryOptions(options, order) {\r\n\tif (!order) {\r\n\t\treturn options\r\n\t}\r\n\tconst optionsOnTop = []\r\n\tconst optionsOnBottom = []\r\n\tlet appendTo = optionsOnTop\r\n\tfor (const element of order) {\r\n\t\tif (element === '|') {\r\n\t\t\tappendTo.push({ divider: true })\r\n\t\t} else if (element === '...' || element === '…') {\r\n\t\t\tappendTo = optionsOnBottom\r\n\t\t} else {\r\n\t\t\tlet countryCode\r\n\t\t\tif (element === '🌐') {\r\n\t\t\t\tcountryCode = undefined\r\n\t\t\t} else {\r\n\t\t\t\tcountryCode = element\r\n\t\t\t}\r\n\t\t\t// Find the position of the option.\r\n\t\t\tconst index = options.indexOf(options.filter(option => option.value === countryCode)[0])\r\n\t\t\t// Get the option.\r\n\t\t\tconst option = options[index]\r\n\t\t\t// Remove the option from its default position.\r\n\t\t\toptions.splice(index, 1)\r\n\t\t\t// Add the option on top.\r\n\t\t\tappendTo.push(option)\r\n\t\t}\r\n\t}\r\n\treturn optionsOnTop.concat(options).concat(optionsOnBottom)\r\n}\r\n\r\nexport function getSupportedCountryOptions(countryOptions, metadata) {\r\n\tif (countryOptions) {\r\n\t\tcountryOptions = countryOptions.filter((option) => {\r\n\t\t\tswitch (option) {\r\n\t\t\t\tcase '🌐':\r\n\t\t\t\tcase '|':\r\n\t\t\t\tcase '...':\r\n\t\t\t\tcase '…':\r\n\t\t\t\t\treturn true\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn isCountrySupportedWithError(option, metadata)\r\n\t\t\t}\r\n\t\t})\r\n\t\tif (countryOptions.length > 0) {\r\n\t\t\treturn countryOptions\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isCountrySupportedWithError(country, metadata) {\r\n\tif (isSupportedCountry(country, metadata)) {\r\n\t\treturn true\r\n\t} else {\r\n\t\tconsole.error(`Country not found: ${country}`)\r\n\t\treturn false\r\n\t}\r\n}\r\n\r\nexport function getSupportedCountries(countries, metadata) {\r\n\tif (countries) {\r\n\t\tcountries = countries.filter(country => isCountrySupportedWithError(country, metadata))\r\n\t\tif (countries.length === 0) {\r\n\t\t\tcountries = undefined\r\n\t\t}\r\n\t}\r\n\treturn countries\r\n}","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport classNames from 'classnames'\r\n\r\nimport DefaultInternationalIcon from './InternationalIcon.js'\r\nimport Flag from './Flag.js'\r\n\r\nexport function createCountryIconComponent({\r\n\tflags,\r\n\tflagUrl,\r\n\tflagComponent: FlagComponent,\r\n\tinternationalIcon: InternationalIcon\r\n}) {\r\n\tfunction CountryIcon({\r\n\t\tcountry,\r\n\t\tlabel,\r\n\t\taspectRatio,\r\n\t\t...rest\r\n\t}) {\r\n\t\t// `aspectRatio` is currently a hack for the default \"International\" icon\r\n\t\t// to render it as a square when Unicode flag icons are used.\r\n\t\t// So `aspectRatio` property is only used with the default \"International\" icon.\r\n\t\tconst _aspectRatio = InternationalIcon === DefaultInternationalIcon ? aspectRatio : undefined\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\t{...rest}\r\n\t\t\t\tclassName={classNames('PhoneInputCountryIcon', {\r\n\t\t\t\t\t'PhoneInputCountryIcon--square': _aspectRatio === 1,\r\n\t\t\t\t\t'PhoneInputCountryIcon--border': country\r\n\t\t\t\t})}>\r\n\t\t\t\t{\r\n\t\t\t\t\tcountry\r\n\t\t\t\t\t?\r\n\t\t\t\t\t<FlagComponent\r\n\t\t\t\t\t\tcountry={country}\r\n\t\t\t\t\t\tcountryName={label}\r\n\t\t\t\t\t\tflags={flags}\r\n\t\t\t\t\t\tflagUrl={flagUrl}\r\n\t\t\t\t\t\tclassName=\"PhoneInputCountryIconImg\"/>\r\n\t\t\t\t\t:\r\n\t\t\t\t\t<InternationalIcon\r\n\t\t\t\t\t\ttitle={label}\r\n\t\t\t\t\t\taspectRatio={_aspectRatio}\r\n\t\t\t\t\t\tclassName=\"PhoneInputCountryIconImg\"/>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t)\r\n\t}\r\n\r\n\tCountryIcon.propTypes = {\r\n\t\tcountry: PropTypes.string,\r\n\t\tlabel: PropTypes.string.isRequired,\r\n\t\taspectRatio: PropTypes.number\r\n\t}\r\n\r\n\treturn CountryIcon\r\n}\r\n\r\nexport default createCountryIconComponent({\r\n\t// Must be equal to `defaultProps.flagUrl` in `./PhoneInputWithCountry.js`.\r\n\tflagUrl: 'https://purecatamphetamine.github.io/country-flag-icons/3x2/{XX}.svg',\r\n\tflagComponent: Flag,\r\n\tinternationalIcon: DefaultInternationalIcon\r\n})","import {\r\n\tgetCountryCallingCode,\r\n\tMetadata\r\n} from 'libphonenumber-js/core'\r\n\r\nconst ONLY_DIGITS_REGEXP = /^\\d+$/\r\n\r\nexport default function getInternationalPhoneNumberPrefix(country, metadata) {\r\n\t// Standard international phone number prefix: \"+\" and \"country calling code\".\r\n\tlet prefix = '+' + getCountryCallingCode(country, metadata)\r\n\r\n\t// \"Leading digits\" can't be used to rule out any countries.\r\n\t// So the \"pre-fill with leading digits on country selection\" feature had to be reverted.\r\n\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/10#note_1231042367\r\n\t// // Get \"leading digits\" for a phone number of the country.\r\n\t// // If there're \"leading digits\" then they can be part of the prefix too.\r\n\t// // https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/10\r\n\t// metadata = new Metadata(metadata)\r\n\t// metadata.selectNumberingPlan(country)\r\n\t// // \"Leading digits\" patterns are only defined for about 20% of all countries.\r\n\t// // By definition, matching \"leading digits\" is a sufficient but not a necessary\r\n\t// // condition for a phone number to belong to a country.\r\n\t// // The point of \"leading digits\" check is that it's the fastest one to get a match.\r\n\t// // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t// const leadingDigits = metadata.numberingPlan.leadingDigits()\r\n\t// if (leadingDigits && ONLY_DIGITS_REGEXP.test(leadingDigits)) {\r\n\t// \tprefix += leadingDigits\r\n\t// }\r\n\r\n\treturn prefix\r\n}","import parsePhoneNumber_, {\r\n\tgetCountryCallingCode,\r\n\tAsYouType,\r\n\tMetadata\r\n} from 'libphonenumber-js/core'\r\n\r\nimport getInternationalPhoneNumberPrefix from './getInternationalPhoneNumberPrefix.js'\r\n\r\n/**\r\n * Decides which country should be pre-selected\r\n * when the phone number input component is first mounted.\r\n * @param  {object?} phoneNumber - An instance of `PhoneNumber` class.\r\n * @param  {string?} country - Pre-defined country (two-letter code).\r\n * @param  {string[]?} countries - A list of countries available.\r\n * @param  {object} metadata - `libphonenumber-js` metadata\r\n * @return {string?}\r\n */\r\nexport function getPreSelectedCountry({\r\n\tvalue,\r\n\tphoneNumber,\r\n\tdefaultCountry,\r\n\tgetAnyCountry,\r\n\tcountries,\r\n\trequired,\r\n\tmetadata\r\n}) {\r\n\tlet country\r\n\r\n\t// If can get country from E.164 phone number\r\n\t// then it overrides the `country` passed (or not passed).\r\n\tif (phoneNumber && phoneNumber.country) {\r\n\t\t// `country` will be left `undefined` in case of non-detection.\r\n\t\tcountry = phoneNumber.country\r\n\t} else if (defaultCountry) {\r\n\t\tif (!value || couldNumberBelongToCountry(value, defaultCountry, metadata)) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t}\r\n\t}\r\n\r\n\t// Only pre-select a country if it's in the available `countries` list.\r\n\tif (countries && countries.indexOf(country) < 0) {\r\n\t\tcountry = undefined\r\n\t}\r\n\r\n\t// If there will be no \"International\" option\r\n\t// then some `country` must be selected.\r\n\t// It will still be the wrong country though.\r\n\t// But still country `<select/>` can't be left in a broken state.\r\n\tif (!country && required && countries && countries.length > 0) {\r\n\t\tcountry = getAnyCountry()\r\n\t\t// noCountryMatchesTheNumber = true\r\n\t}\r\n\r\n\treturn country\r\n}\r\n\r\n/**\r\n * Generates a sorted list of country `<select/>` options.\r\n * @param  {string[]} countries - A list of two-letter (\"ISO 3166-1 alpha-2\") country codes.\r\n * @param  {object} labels - Custom country labels. E.g. `{ RU: 'Россия', US: 'США', ... }`.\r\n * @param  {boolean} addInternationalOption - Whether should include \"International\" option at the top of the list.\r\n * @return {object[]} A list of objects having shape `{ value : string, label : string }`.\r\n */\r\nexport function getCountrySelectOptions({\r\n\tcountries,\r\n\tcountryNames,\r\n\taddInternationalOption,\r\n\t// `locales` are only used in country name comparator:\r\n\t// depending on locale, string sorting order could be different.\r\n\tcompareStringsLocales,\r\n\tcompareStrings: _compareStrings\r\n}) {\r\n\t// Default country name comparator uses `String.localeCompare()`.\r\n\tif (!_compareStrings) {\r\n\t\t_compareStrings = compareStrings\r\n\t}\r\n\r\n\t// Generates a `<Select/>` option for each country.\r\n\tconst countrySelectOptions = countries.map((country) => ({\r\n\t\tvalue: country,\r\n\t\t// All `locale` country names included in this library\r\n\t\t// include all countries (this is checked at build time).\r\n\t\t// The only case when a country name might be missing\r\n\t\t// is when a developer supplies their own `labels` property.\r\n\t\t// To guard against such cases, a missing country name\r\n\t\t// is substituted by country code.\r\n\t\tlabel: countryNames[country] || country\r\n\t}))\r\n\r\n\t// Sort the list of countries alphabetically.\r\n\tcountrySelectOptions.sort((a, b) => _compareStrings(a.label, b.label, compareStringsLocales))\r\n\r\n\t// Add the \"International\" option to the country list (if suitable)\r\n\tif (addInternationalOption) {\r\n\t\tcountrySelectOptions.unshift({\r\n\t\t\tlabel: countryNames.ZZ\r\n\t\t})\r\n\t}\r\n\r\n\treturn countrySelectOptions\r\n}\r\n\r\n/**\r\n * Parses a E.164 phone number to an instance of `PhoneNumber` class.\r\n * @param {string?} value = E.164 phone number.\r\n * @param  {object} metadata - `libphonenumber-js` metadata\r\n * @return {object} Object having shape `{ country: string?, countryCallingCode: string, number: string }`. `PhoneNumber`: https://gitlab.com/catamphetamine/libphonenumber-js#phonenumber.\r\n * @example\r\n * parsePhoneNumber('+78005553535')\r\n */\r\nexport function parsePhoneNumber(value, metadata) {\r\n\treturn parsePhoneNumber_(value || '', metadata)\r\n}\r\n\r\n/**\r\n * Generates national number digits for a parsed phone.\r\n * May prepend national prefix.\r\n * The phone number must be a complete and valid phone number.\r\n * @param  {object} phoneNumber - An instance of `PhoneNumber` class.\r\n * @param  {object} metadata - `libphonenumber-js` metadata\r\n * @return {string}\r\n * @example\r\n * getNationalNumberDigits({ country: 'RU', phone: '8005553535' })\r\n * // returns '88005553535'\r\n */\r\nexport function generateNationalNumberDigits(phoneNumber) {\r\n\treturn phoneNumber.formatNational().replace(/\\D/g, '')\r\n}\r\n\r\n/**\r\n * Migrates parsed `<input/>` `value` for the newly selected `country`.\r\n * @param {string?} phoneDigits - Phone number digits (and `+`) parsed from phone number `<input/>` (it's not the same as the `value` property).\r\n * @param {string?} prevCountry - Previously selected country.\r\n * @param {string?} newCountry - Newly selected country. Can't be same as previously selected country.\r\n * @param {object} metadata - `libphonenumber-js` metadata.\r\n * @param {boolean} useNationalFormat - whether should attempt to convert from international to national number for the new country.\r\n * @return {string?}\r\n */\r\nexport function getPhoneDigitsForNewCountry(phoneDigits, {\r\n\tprevCountry,\r\n\tnewCountry,\r\n\tmetadata,\r\n\tuseNationalFormat\r\n}) {\r\n\tif (prevCountry === newCountry) {\r\n\t\treturn phoneDigits\r\n\t}\r\n\r\n\t// If `parsed_input` is empty\r\n\t// then no need to migrate anything.\r\n\tif (!phoneDigits) {\r\n\t\tif (useNationalFormat) {\r\n\t\t\treturn ''\r\n\t\t} else {\r\n\t\t\t// If `phoneDigits` is empty then set `phoneDigits` to\r\n\t\t\t// `+{getCountryCallingCode(newCountry)}`.\r\n\t\t\treturn getInternationalPhoneNumberPrefix(newCountry, metadata)\r\n\t\t}\r\n\t}\r\n\r\n\t// If switching to some country.\r\n\t// (from \"International\" or another country)\r\n\t// If switching from \"International\" then `phoneDigits` starts with a `+`.\r\n\t// Otherwise it may or may not start with a `+`.\r\n\tif (newCountry) {\r\n\t\t// If the phone number was entered in international format\r\n\t\t// then migrate it to the newly selected country.\r\n\t\t// The phone number may be incomplete.\r\n\t\t// The phone number entered not necessarily starts with\r\n\t\t// the previously selected country phone prefix.\r\n\t\tif (phoneDigits[0] === '+') {\r\n\t\t\t// If the international phone number is for the new country\r\n\t\t\t// then convert it to local if required.\r\n\t\t\tif (useNationalFormat) {\r\n\t\t\t\t// // If a phone number is being input in international form\r\n\t\t\t\t// // and the country can already be derived from it,\r\n\t\t\t\t// // and if it is the new country, then format as a national number.\r\n\t\t\t\t// const derived_country = getCountryFromPossiblyIncompleteInternationalPhoneNumber(phoneDigits, metadata)\r\n\t\t\t\t// if (derived_country === newCountry) {\r\n\t\t\t\t// \treturn stripCountryCallingCode(phoneDigits, derived_country, metadata)\r\n\t\t\t\t// }\r\n\r\n\t\t\t\t// Actually, the two countries don't necessarily need to match:\r\n\t\t\t\t// the condition could be looser here, because several countries\r\n\t\t\t\t// might share the same international phone number format\r\n\t\t\t\t// (for example, \"NANPA\" countries like US, Canada, etc).\r\n\t\t\t\t// The looser condition would be just \"same nternational phone number format\"\r\n\t\t\t\t// which would mean \"same country calling code\" in the context of `libphonenumber-js`.\r\n\t\t\t\tif (phoneDigits.indexOf('+' + getCountryCallingCode(newCountry, metadata)) === 0) {\r\n\t\t\t\t\treturn stripCountryCallingCode(phoneDigits, newCountry, metadata)\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Simply discard the previously entered international phone number,\r\n\t\t\t\t// because otherwise any \"smart\" transformation like getting the\r\n\t\t\t\t// \"national (significant) number\" part and then prepending the\r\n\t\t\t\t// newly selected country's \"country calling code\" to it\r\n\t\t\t\t// would just be confusing for a user without being actually useful.\r\n\t\t\t\treturn ''\r\n\r\n\t\t\t\t// // Simply strip the leading `+` character\r\n\t\t\t\t// // therefore simply converting all digits into a \"local\" phone number.\r\n\t\t\t\t// // https://github.com/catamphetamine/react-phone-number-input/issues/287\r\n\t\t\t\t// return phoneDigits.slice(1)\r\n\t\t\t}\r\n\r\n\t\t\tif (prevCountry) {\r\n\t\t\t\tconst newCountryPrefix = getInternationalPhoneNumberPrefix(newCountry, metadata)\r\n\t\t\t\tif (phoneDigits.indexOf(newCountryPrefix) === 0) {\r\n\t\t\t\t\treturn phoneDigits\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn newCountryPrefix\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst defaultValue = getInternationalPhoneNumberPrefix(newCountry, metadata)\r\n\t\t\t\t// If `phoneDigits`'s country calling code part is the same\r\n\t\t\t\t// as for the new `country`, then leave `phoneDigits` as is.\r\n\t\t\t\tif (phoneDigits.indexOf(defaultValue) === 0) {\r\n\t\t\t\t\treturn phoneDigits\r\n\t\t\t\t}\r\n\t\t\t\t// If `phoneDigits`'s country calling code part is not the same\r\n\t\t\t\t// as for the new `country`, then set `phoneDigits` to\r\n\t\t\t\t// `+{getCountryCallingCode(newCountry)}`.\r\n\t\t\t\treturn defaultValue\r\n\t\t\t}\r\n\r\n\t\t\t// // If the international phone number already contains\r\n\t\t\t// // any country calling code then trim the country calling code part.\r\n\t\t\t// // (that could also be the newly selected country phone code prefix as well)\r\n\t\t\t// // `phoneDigits` doesn't neccessarily belong to `prevCountry`.\r\n\t\t\t// // (e.g. if a user enters an international number\r\n\t\t\t// //  not belonging to any of the reduced `countries` list).\r\n\t\t\t// phoneDigits = stripCountryCallingCode(phoneDigits, prevCountry, metadata)\r\n\r\n\t\t\t// // Prepend country calling code prefix\r\n\t\t\t// // for the newly selected country.\r\n\t\t\t// return e164(phoneDigits, newCountry, metadata) || `+${getCountryCallingCode(newCountry, metadata)}`\r\n\t\t}\r\n\t}\r\n\t// If switching to \"International\" from a country.\r\n\telse {\r\n\t\t// If the phone number was entered in national format.\r\n\t\tif (phoneDigits[0] !== '+') {\r\n\t\t\t// Format the national phone number as an international one.\r\n\t\t\t// The phone number entered not necessarily even starts with\r\n\t\t\t// the previously selected country phone prefix.\r\n\t\t\t// Even if the phone number belongs to whole another country\r\n\t\t\t// it will still be parsed into some national phone number.\r\n\t\t\t//\r\n\t\t\t// Ignore the now-uncovered `|| ''` code branch:\r\n\t\t\t// previously `e164()` function could return an empty string\r\n\t\t\t// even when `phoneDigits` were not empty.\r\n\t\t\t// Now it always returns some `value` when there're any `phoneDigits`.\r\n\t\t\t// Still, didn't remove the `|| ''` code branch just in case\r\n\t\t\t// that logic changes somehow in some future, so there're no\r\n\t\t\t// possible bugs related to that.\r\n\t\t\t//\r\n\t\t\t// (ignore the `|| ''` code branch)\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn e164(phoneDigits, prevCountry, metadata) || ''\r\n\t\t}\r\n\t}\r\n\r\n\treturn phoneDigits\r\n}\r\n\r\n/**\r\n * Converts phone number digits to a (possibly incomplete) E.164 phone number.\r\n * @param  {string?} number - A possibly incomplete phone number digits string. Can be a possibly incomplete E.164 phone number.\r\n * @param  {string?} country\r\n * @param  {object} metadata - `libphonenumber-js` metadata.\r\n * @return {string?}\r\n */\r\nexport function e164(number, country, metadata) {\r\n\tif (!number) {\r\n\t\treturn\r\n\t}\r\n\t// If the phone number is being input in international format.\r\n\tif (number[0] === '+') {\r\n\t\t// If it's just the `+` sign then return nothing.\r\n\t\tif (number === '+') {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Return a E.164 phone number.\r\n\t\t//\r\n\t\t// Could return `number` \"as is\" here, but there's a possibility\r\n\t\t// that some user might incorrectly input an international number\r\n\t\t// with a \"national prefix\". Such numbers aren't considered valid,\r\n\t\t// but `libphonenumber-js` is \"forgiving\" when it comes to parsing\r\n\t\t// user's input, and this input component follows that behavior.\r\n\t\t//\r\n\t\tconst asYouType = new AsYouType(country, metadata)\r\n\t\tasYouType.input(number)\r\n\t\t// This function would return `undefined` only when `number` is `\"+\"`,\r\n\t\t// but at this point it is known that `number` is not `\"+\"`.\r\n\t\treturn asYouType.getNumberValue()\r\n\t}\r\n\t// For non-international phone numbers\r\n\t// an accompanying country code is required.\r\n\t// The situation when `country` is `undefined`\r\n\t// and a non-international phone number is passed\r\n\t// to this function shouldn't happen.\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\tconst partial_national_significant_number = getNationalSignificantNumberDigits(number, country, metadata)\r\n\t//\r\n\t// Even if no \"national (significant) number\" digits have been input,\r\n\t// still return a non-`undefined` value.\r\n\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/113\r\n\t//\r\n\t// For example, if the user has selected country `US` and entered `\"1\"`\r\n\t// then that `\"1\"` is just a \"national prefix\" and no \"national (significant) number\"\r\n\t// digits have been input yet. Still, return `\"+1\"` as `value` in such cases,\r\n\t// because otherwise the app would think that the input is empty and mark it as such\r\n\t// while in reality it isn't empty, which might be thought of as a \"bug\", or just\r\n\t// a \"weird\" behavior.\r\n\t//\r\n\t// if (partial_national_significant_number) {\r\n\t\treturn `+${getCountryCallingCode(country, metadata)}${partial_national_significant_number || ''}`\r\n\t// }\r\n}\r\n\r\n/**\r\n * Trims phone number digits if they exceed the maximum possible length\r\n * for a national (significant) number for the country.\r\n * @param  {string} number - A possibly incomplete phone number digits string. Can be a possibly incomplete E.164 phone number.\r\n * @param  {string} country\r\n * @param  {object} metadata - `libphonenumber-js` metadata.\r\n * @return {string} Can be empty.\r\n */\r\nexport function trimNumber(number, country, metadata) {\r\n\tconst nationalSignificantNumberPart = getNationalSignificantNumberDigits(number, country, metadata)\r\n\tif (nationalSignificantNumberPart) {\r\n\t\tconst overflowDigitsCount = nationalSignificantNumberPart.length - getMaxNumberLength(country, metadata)\r\n\t\tif (overflowDigitsCount > 0) {\r\n\t\t\treturn number.slice(0, number.length - overflowDigitsCount)\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}\r\n\r\nfunction getMaxNumberLength(country, metadata) {\r\n\t// Get \"possible lengths\" for a phone number of the country.\r\n\tmetadata = new Metadata(metadata)\r\n\tmetadata.selectNumberingPlan(country)\r\n\t// Return the last \"possible length\".\r\n\treturn metadata.numberingPlan.possibleLengths()[metadata.numberingPlan.possibleLengths().length - 1]\r\n}\r\n\r\n// If the phone number being input is an international one\r\n// then tries to derive the country from the phone number.\r\n// (regardless of whether there's any country currently selected)\r\n/**\r\n * @param {string} partialE164Number - A possibly incomplete E.164 phone number.\r\n * @param {string?} country - Currently selected country.\r\n * @param {string[]?} countries - A list of available countries. If not passed then \"all countries\" are assumed.\r\n * @param  {object} metadata - `libphonenumber-js` metadata.\r\n * @return {string?}\r\n */\r\nexport function getCountryForPartialE164Number(partialE164Number, {\r\n\tcountry,\r\n\tcountries,\r\n\trequired,\r\n\tmetadata\r\n}) {\r\n\tif (partialE164Number === '+') {\r\n\t\t// Don't change the currently selected country yet.\r\n\t\treturn country\r\n\t}\r\n\r\n\tconst derived_country = getCountryFromPossiblyIncompleteInternationalPhoneNumber(partialE164Number, metadata)\r\n\r\n\t// If a phone number is being input in international form\r\n\t// and the country can already be derived from it,\r\n\t// then select that country.\r\n\tif (derived_country && (!countries || (countries.indexOf(derived_country) >= 0))) {\r\n\t\treturn derived_country\r\n\t}\r\n\t// If \"International\" country option has not been disabled\r\n\t// and the international phone number entered doesn't correspond\r\n\t// to the currently selected country then reset the currently selected country.\r\n\telse if (country &&\r\n\t\t!required &&\r\n\t\t!couldNumberBelongToCountry(partialE164Number, country, metadata)) {\r\n\t\treturn undefined\r\n\t}\r\n\r\n\t// Don't change the currently selected country.\r\n\treturn country\r\n}\r\n\r\n/**\r\n * Parses `<input/>` value. Derives `country` from `input`. Derives an E.164 `value`.\r\n * @param  {string?} phoneDigits — Parsed `<input/>` value. Examples: `\"\"`, `\"+\"`, `\"+123\"`, `\"123\"`.\r\n * @param  {string?} prevPhoneDigits — Previous parsed `<input/>` value. Examples: `\"\"`, `\"+\"`, `\"+123\"`, `\"123\"`.\r\n * @param  {string?} country - Currently selected country.\r\n * @param  {boolean} countryRequired - Is selecting some country required.\r\n * @param  {function} getAnyCountry - Can be used to get any country when selecting some country required.\r\n * @param  {string[]?} countries - A list of available countries. If not passed then \"all countries\" are assumed.\r\n * @param  {boolean} international - Set to `true` to force international phone number format (leading `+`). Set to `false` to force \"national\" phone number format. Is `undefined` by default.\r\n * @param  {boolean} limitMaxLength — Whether to enable limiting phone number max length.\r\n * @param  {object} metadata - `libphonenumber-js` metadata.\r\n * @return {object} An object of shape `{ input, country, value }`.\r\n */\r\nexport function onPhoneDigitsChange(phoneDigits, {\r\n\tprevPhoneDigits,\r\n\tcountry,\r\n\tdefaultCountry,\r\n\tcountryRequired,\r\n\tgetAnyCountry,\r\n\tcountries,\r\n\tinternational,\r\n\tlimitMaxLength,\r\n\tcountryCallingCodeEditable,\r\n\tmetadata\r\n}) {\r\n\tif (international && countryCallingCodeEditable === false) {\r\n\t\tif (country) {\r\n\t\t\t// For international phone numbers written with non-editable country calling code,\r\n\t\t\t// the `<input/>` value must always start with that non-editable country calling code.\r\n\t\t\tconst prefix = getInternationalPhoneNumberPrefix(country, metadata)\r\n\t\t\t// If the input value doesn't start with the non-editable country calling code,\r\n\t\t\t// it should be fixed.\r\n\t\t\tif (phoneDigits.indexOf(prefix) !== 0) {\r\n\t\t\t\tlet value\r\n\t\t\t\t// If a phone number input is declared as\r\n\t\t\t\t// `international: true` and `countryCallingCodeEditable: false`,\r\n\t\t\t\t// then the value of the `<input/>` is gonna be non-empty at all times,\r\n\t\t\t\t// even before the user has started to input any digits in the input field,\r\n\t\t\t\t// because the country calling code is always there by design.\r\n\t\t\t\t//\r\n\t\t\t\t// The fact that the input value is always non-empty results in a side effect:\r\n\t\t\t\t// whenever a user tabs into such input field, its value gets automatically selected.\r\n\t\t\t\t// If at that moment in time the user starts typing in the national digits of the phone number,\r\n\t\t\t\t// the selected `<input/>` value gets automatically replaced by those typed-in digits\r\n\t\t\t\t// so the value changes from `+xxx` to `y`, because inputting anything while having\r\n\t\t\t\t// the `<input/>` value selected results in erasing that `<input/>` value.\r\n\t\t\t\t//\r\n\t\t\t\t// This component handles such cases by restoring the `<input/>` value to what\r\n\t\t\t\t// it should be in such cases: `+xxxy`.\r\n\t\t\t\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/43\r\n\t\t\t\t//\r\n\t\t\t\tconst hasStartedTypingInNationalNumberDigitsHavingInputValueSelected = phoneDigits && phoneDigits[0] !== '+'\r\n\t\t\t\tif (hasStartedTypingInNationalNumberDigitsHavingInputValueSelected) {\r\n\t\t\t\t\t// Fix the input value to what it should be: `y` → `+xxxy`.\r\n\t\t\t\t\tphoneDigits = prefix + phoneDigits\r\n\t\t\t\t\tvalue = e164(phoneDigits, country, metadata)\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// In other cases, simply reset the `<input/>` value, because there're only two\r\n\t\t\t\t\t// possible cases:\r\n\t\t\t\t\t// * The user has selected the `<input/>` value and then hit Delete/Backspace to erase it.\r\n\t\t\t\t\t// * The user has pasted an international phone number for another country calling code,\r\n\t\t\t\t\t//   which is considered a non-valid value.\r\n\t\t\t\t\tphoneDigits = prefix\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\tphoneDigits,\r\n\t\t\t\t\tvalue,\r\n\t\t\t\t\tcountry\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// If `international` property is `false`, then it means\r\n\t// \"enforce national-only format during input\",\r\n\t// so, if that's the case, then remove all `+` characters,\r\n\t// but only if some country is currently selected.\r\n\t// (not if \"International\" country is selected).\r\n\tif (international === false && country && phoneDigits && phoneDigits[0] === '+') {\r\n\t\tphoneDigits = convertInternationalPhoneDigitsToNational(phoneDigits, country, metadata)\r\n\t}\r\n\r\n\t// Trim the input to not exceed the maximum possible number length.\r\n\tif (phoneDigits && country && limitMaxLength) {\r\n\t\tphoneDigits = trimNumber(phoneDigits, country, metadata)\r\n\t}\r\n\r\n\t// If this `onChange()` event was triggered\r\n\t// as a result of selecting \"International\" country,\r\n\t// then force-prepend a `+` sign if the phone number\r\n\t// `<input/>` value isn't in international format.\r\n\t// Also, force-prepend a `+` sign if international\r\n\t// phone number input format is set.\r\n\tif (phoneDigits && phoneDigits[0] !== '+' && (!country || international)) {\r\n\t\tphoneDigits = '+' + phoneDigits\r\n\t}\r\n\r\n\t// If the previously entered phone number\r\n\t// has been entered in international format\r\n\t// and the user decides to erase it,\r\n\t// then also reset the `country`\r\n\t// because it was most likely automatically selected\r\n\t// while the user was typing in the phone number\r\n\t// in international format.\r\n\t// This fixes the issue when a user is presented\r\n\t// with a phone number input with no country selected\r\n\t// and then types in their local phone number\r\n\t// then discovers that the input's messed up\r\n\t// (a `+` has been prepended at the start of their input\r\n\t//  and a random country has been selected),\r\n\t// decides to undo it all by erasing everything\r\n\t// and then types in their local phone number again\r\n\t// resulting in a seemingly correct phone number\r\n\t// but in reality that phone number has incorrect country.\r\n\t// https://github.com/catamphetamine/react-phone-number-input/issues/273\r\n\tif (!phoneDigits && prevPhoneDigits && prevPhoneDigits[0] === '+') {\r\n\t\tif (international) {\r\n\t\t\tcountry = undefined\r\n\t\t} else {\r\n\t\t\tcountry = defaultCountry\r\n\t\t}\r\n\t}\r\n\t// Also resets such \"randomly\" selected country\r\n\t// as soon as the user erases the number\r\n\t// digit-by-digit up to the leading `+` sign.\r\n\tif (phoneDigits === '+' && prevPhoneDigits && prevPhoneDigits[0] === '+' && prevPhoneDigits.length > '+'.length) {\r\n\t\tcountry = undefined\r\n\t}\r\n\r\n\t// Generate the new `value` property.\r\n\tlet value\r\n\tif (phoneDigits) {\r\n\t\tif (phoneDigits[0] === '+') {\r\n\t\t\tif (phoneDigits === '+') {\r\n\t\t\t\tvalue = undefined\r\n\t\t\t} else if (country && getInternationalPhoneNumberPrefix(country, metadata).indexOf(phoneDigits) === 0) {\r\n\t\t\t\t// Selected a `country` and started inputting an\r\n\t\t\t\t// international phone number for this country\r\n\t\t\t\t// but hasn't input any \"national (significant) number\" digits yet.\r\n\t\t\t\t// In that case, assume `value` be `undefined`.\r\n\t\t\t\t//\r\n\t\t\t\t// For example, if selected `country` `\"US\"`\r\n\t\t\t\t// and started inputting phone number `\"+1\"`\r\n\t\t\t\t// then `value` `undefined` will be returned from this function.\r\n\t\t\t\t//\r\n\t\t\t\tvalue = undefined\r\n\t\t\t} else {\r\n\t\t\t\tvalue = e164(phoneDigits, country, metadata)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalue = e164(phoneDigits, country, metadata)\r\n\t\t}\r\n\t}\r\n\r\n\t// Derive the country from the phone number.\r\n\t// (regardless of whether there's any country currently selected,\r\n\t//  because there could be several countries corresponding to one country calling code)\r\n\tif (value) {\r\n\t\tcountry = getCountryForPartialE164Number(value, {\r\n\t\t\tcountry,\r\n\t\t\tcountries,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\t// If `international` property is `false`, then it means\r\n\t\t// \"enforce national-only format during input\",\r\n\t\t// so, if that's the case, then remove all `+` characters,\r\n\t\t// but only if some country is currently selected.\r\n\t\t// (not if \"International\" country is selected).\r\n\t\tif (international === false && country && phoneDigits && phoneDigits[0] === '+') {\r\n\t\t\tphoneDigits = convertInternationalPhoneDigitsToNational(phoneDigits, country, metadata)\r\n\t\t\t// Re-calculate `value` because `phoneDigits` has changed.\r\n\t\t\tvalue = e164(phoneDigits, country, metadata)\r\n\t\t}\r\n\t}\r\n\r\n\tif (!country && countryRequired) {\r\n\t\tcountry = defaultCountry || getAnyCountry()\r\n\t}\r\n\r\n\treturn {\r\n\t\tphoneDigits,\r\n\t\tcountry,\r\n\t\tvalue\r\n\t}\r\n}\r\n\r\nfunction convertInternationalPhoneDigitsToNational(input, country, metadata) {\r\n\t// Handle the case when a user might have pasted\r\n\t// a phone number in international format.\r\n\tif (input.indexOf(getInternationalPhoneNumberPrefix(country, metadata)) === 0) {\r\n\t\t// Create \"as you type\" formatter.\r\n\t\tconst formatter = new AsYouType(country, metadata)\r\n\t\t// Input partial national phone number.\r\n\t\tformatter.input(input)\r\n\t\t// Return the parsed partial national phone number.\r\n\t\tconst phoneNumber = formatter.getNumber()\r\n\t\tif (phoneNumber) {\r\n\t\t\t// Transform the number to a national one,\r\n\t\t\t// and remove all non-digits.\r\n\t\t\treturn phoneNumber.formatNational().replace(/\\D/g, '')\r\n\t\t} else {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t} else {\r\n\t\t// Just remove the `+` sign.\r\n\t\treturn input.replace(/\\D/g, '')\r\n\t}\r\n}\r\n\r\n/**\r\n * Determines the country for a given (possibly incomplete) E.164 phone number.\r\n * @param  {string} number - A possibly incomplete E.164 phone number.\r\n * @param  {object} metadata - `libphonenumber-js` metadata.\r\n * @return {string?}\r\n */\r\nexport function getCountryFromPossiblyIncompleteInternationalPhoneNumber(number, metadata) {\r\n\tconst formatter = new AsYouType(null, metadata)\r\n\tformatter.input(number)\r\n\t// // `001` is a special \"non-geograpical entity\" code\r\n\t// // in Google's `libphonenumber` library.\r\n\t// if (formatter.getCountry() === '001') {\r\n\t// \treturn\r\n\t// }\r\n\treturn formatter.getCountry()\r\n}\r\n\r\n/**\r\n * Compares two strings.\r\n * A helper for `Array.sort()`.\r\n * @param {string} a — First string.\r\n * @param {string} b — Second string.\r\n * @param {(string[]|string)} [locales] — The `locales` argument of `String.localeCompare`.\r\n */\r\nexport function compareStrings(a, b, locales) {\r\n  // Use `String.localeCompare` if it's available.\r\n  // https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare\r\n  // Which means everyone except IE <= 10 and Safari <= 10.\r\n  // `localeCompare()` is available in latest Node.js versions.\r\n  /* istanbul ignore else */\r\n  if (String.prototype.localeCompare) {\r\n    return a.localeCompare(b, locales);\r\n  }\r\n  /* istanbul ignore next */\r\n  return a < b ? -1 : (a > b ? 1 : 0);\r\n}\r\n\r\n/**\r\n * Strips `+${countryCallingCode}` prefix from an E.164 phone number.\r\n * @param {string} number - (possibly incomplete) E.164 phone number.\r\n * @param {string?} country - A possible country for this phone number.\r\n * @param {object} metadata - `libphonenumber-js` metadata.\r\n * @return {string}\r\n */\r\nexport function stripCountryCallingCode(number, country, metadata) {\r\n\t// Just an optimization, so that it\r\n\t// doesn't have to iterate through all country calling codes.\r\n\tif (country) {\r\n\t\tconst countryCallingCodePrefix = '+' + getCountryCallingCode(country, metadata)\r\n\r\n\t\t// If `country` fits the actual `number`.\r\n\t\tif (number.length < countryCallingCodePrefix.length) {\r\n\t\t\tif (countryCallingCodePrefix.indexOf(number) === 0) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (number.indexOf(countryCallingCodePrefix) === 0) {\r\n\t\t\t\treturn number.slice(countryCallingCodePrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// If `country` doesn't fit the actual `number`.\r\n\t// Try all available country calling codes.\r\n\tfor (const country_calling_code of Object.keys(metadata.country_calling_codes)) {\r\n\t\tif (number.indexOf(country_calling_code) === '+'.length) {\r\n\t\t\treturn number.slice('+'.length + country_calling_code.length)\r\n\t\t}\r\n\t}\r\n\r\n\treturn ''\r\n}\r\n\r\n/**\r\n * Parses a partially entered national phone number digits\r\n * (or a partially entered E.164 international phone number)\r\n * and returns the national significant number part.\r\n * National significant number returned doesn't come with a national prefix.\r\n * @param {string} number - National number digits. Or possibly incomplete E.164 phone number.\r\n * @param {string?} country\r\n * @param {object} metadata - `libphonenumber-js` metadata.\r\n * @return {string} [result]\r\n */\r\nexport function getNationalSignificantNumberDigits(number, country, metadata) {\r\n\t// Create \"as you type\" formatter.\r\n\tconst formatter = new AsYouType(country, metadata)\r\n\t// Input partial national phone number.\r\n\tformatter.input(number)\r\n\t// Return the parsed partial national phone number.\r\n\tconst phoneNumber = formatter.getNumber()\r\n\treturn phoneNumber && phoneNumber.nationalNumber\r\n}\r\n\r\n/**\r\n * Checks if a partially entered E.164 phone number could belong to a country.\r\n * @param  {string} number\r\n * @param  {string} country\r\n * @return {boolean}\r\n */\r\nexport function couldNumberBelongToCountry(number, country, metadata) {\r\n\tconst intlPhoneNumberPrefix = getInternationalPhoneNumberPrefix(country, metadata)\r\n\tlet i = 0\r\n\twhile (i < number.length && i < intlPhoneNumberPrefix.length) {\r\n\t\tif (number[i] !== intlPhoneNumberPrefix[i]) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn true\r\n}\r\n\r\n/**\r\n * Gets initial \"phone digits\" (including `+`, if using international format).\r\n * @return {string} [phoneDigits] Returns `undefined` if there should be no initial \"phone digits\".\r\n */\r\nexport function getInitialPhoneDigits({\r\n\tvalue,\r\n\tphoneNumber,\r\n\tdefaultCountry,\r\n\tinternational,\r\n\tuseNationalFormat,\r\n\tmetadata\r\n}) {\r\n\t// If the `value` (E.164 phone number)\r\n\t// belongs to the currently selected country\r\n\t// and `useNationalFormat` is `true`\r\n\t// then convert `value` (E.164 phone number)\r\n\t// to a local phone number digits.\r\n\t// E.g. '+78005553535' -> '88005553535'.\r\n\tif ((international === false || useNationalFormat) && phoneNumber && phoneNumber.country) {\r\n\t\treturn generateNationalNumberDigits(phoneNumber)\r\n\t}\r\n\t// If `international` property is `true`,\r\n\t// meaning \"enforce international phone number format\",\r\n\t// then always show country calling code in the input field.\r\n\tif (!value && international && defaultCountry) {\r\n\t\treturn getInternationalPhoneNumberPrefix(defaultCountry, metadata)\r\n\t}\r\n\treturn value\r\n}","import {\r\n\tgetInitialPhoneDigits,\r\n\tgetCountryForPartialE164Number,\r\n\tparsePhoneNumber\r\n} from './phoneInputHelpers.js'\r\n\r\nimport getInternationalPhoneNumberPrefix from './getInternationalPhoneNumberPrefix.js'\r\n\r\nimport {\r\n\tisCountrySupportedWithError,\r\n\tgetSupportedCountries\r\n} from './countries.js'\r\n\r\nexport default function getPhoneInputWithCountryStateUpdateFromNewProps(props, prevProps, state) {\r\n\tconst {\r\n\t\tmetadata,\r\n\t\tcountries,\r\n\t\tdefaultCountry: newDefaultCountry,\r\n\t\tvalue: newValue,\r\n\t\treset: newReset,\r\n\t\tinternational,\r\n\t\t// `displayInitialValueAsLocalNumber` property has been\r\n\t\t// superceded by `initialValueFormat` property.\r\n\t\tdisplayInitialValueAsLocalNumber,\r\n\t\tinitialValueFormat\r\n\t} = props\r\n\r\n\tconst {\r\n\t\tdefaultCountry: prevDefaultCountry,\r\n\t\tvalue: prevValue,\r\n\t\treset: prevReset\r\n\t} = prevProps\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tvalue,\r\n\t\t// If the user has already manually selected a country\r\n\t\t// then don't override that already selected country\r\n\t\t// if the `defaultCountry` property changes.\r\n\t\t// That's what `hasUserSelectedACountry` flag is for.\r\n\t\thasUserSelectedACountry\r\n\t} = state\r\n\r\n\tconst _getInitialPhoneDigits = (parameters) => getInitialPhoneDigits({\r\n\t\t...parameters,\r\n\t\tinternational,\r\n\t\tuseNationalFormat: displayInitialValueAsLocalNumber || initialValueFormat === 'national',\r\n\t\tmetadata\r\n\t})\r\n\r\n\t// Some users requested a way to reset the component\r\n\t// (both number `<input/>` and country `<select/>`).\r\n\t// Whenever `reset` property changes both number `<input/>`\r\n\t// and country `<select/>` are reset.\r\n\t// It's not implemented as some instance `.reset()` method\r\n\t// because `ref` is forwarded to `<input/>`.\r\n\t// It's also not replaced with just resetting `country` on\r\n\t// external `value` reset, because a user could select a country\r\n\t// and then not input any `value`, and so the selected country\r\n\t// would be \"stuck\", if not using this `reset` property.\r\n\t// https://github.com/catamphetamine/react-phone-number-input/issues/300\r\n\tif (newReset !== prevReset) {\r\n\t\treturn {\r\n\t\t\tphoneDigits: _getInitialPhoneDigits({\r\n\t\t\t\tvalue: undefined,\r\n\t\t\t\tdefaultCountry: newDefaultCountry\r\n\t\t\t}),\r\n\t\t\tvalue: undefined,\r\n\t\t\tcountry: newDefaultCountry,\r\n\t\t\thasUserSelectedACountry: undefined\r\n\t\t}\r\n\t}\r\n\r\n\t// `value` is the value currently shown in the component:\r\n\t// it's stored in the component's `state`, and it's not the `value` property.\r\n\t// `prevValue` is \"previous `value` property\".\r\n\t// `newValue` is \"new `value` property\".\r\n\r\n\t// If the default country changed\r\n\t// (e.g. in case of ajax GeoIP detection after page loaded)\r\n\t// then select it, but only if the user hasn't already manually\r\n\t// selected a country, and no phone number has been manually entered so far.\r\n\t// Because if the user has already started inputting a phone number\r\n\t// then they're okay with no country being selected at all (\"International\")\r\n\t// and they don't want to be disturbed, don't want their input to be screwed, etc.\r\n\tif (newDefaultCountry !== prevDefaultCountry) {\r\n\t\tconst isNewDefaultCountrySupported = !newDefaultCountry || isCountrySupportedWithError(newDefaultCountry, metadata)\r\n\t\tconst noValueHasBeenEnteredByTheUser = (\r\n\t\t\t// By default, \"no value has been entered\" means `value` is `undefined`.\r\n\t\t\t!value ||\r\n\t\t\t// When `international` is `true`, and some country has been pre-selected,\r\n\t\t\t// then the `<input/>` contains a pre-filled value of `+${countryCallingCode}${leadingDigits}`,\r\n\t\t\t// so in case of `international` being `true`, \"the user hasn't entered anything\" situation\r\n\t\t\t// doesn't just mean `value` is `undefined`, but could also mean `value` is `+${countryCallingCode}`.\r\n\t\t\t(international && value === _getInitialPhoneDigits({\r\n\t\t\t\tvalue: undefined,\r\n\t\t\t\tdefaultCountry: prevDefaultCountry\r\n\t\t\t}))\r\n\t\t)\r\n\t\t// Only update the `defaultCountry` property if no phone number\r\n\t\t// has been entered by the user or pre-set by the application.\r\n\t\tconst noValueHasBeenEntered = !newValue && noValueHasBeenEnteredByTheUser\r\n\t\tif (!hasUserSelectedACountry && isNewDefaultCountrySupported && noValueHasBeenEntered) {\r\n\t\t\treturn {\r\n\t\t\t\tcountry: newDefaultCountry,\r\n\t\t\t\t// If `phoneDigits` is empty, then automatically select the new `country`\r\n\t\t\t\t// and set `phoneDigits` to `+{getCountryCallingCode(newCountry)}`.\r\n\t\t\t\t// The code assumes that \"no phone number has been entered by the user\",\r\n\t\t\t\t// and no `value` property has been passed, so the `phoneNumber` parameter\r\n\t\t\t\t// of `_getInitialPhoneDigits({ value, phoneNumber, ... })` is `undefined`.\r\n\t\t\t\tphoneDigits: _getInitialPhoneDigits({\r\n\t\t\t\t\tvalue: undefined,\r\n\t\t\t\t\tdefaultCountry: newDefaultCountry\r\n\t\t\t\t}),\r\n\t\t\t\t// `value` is `undefined` and it stays so.\r\n\t\t\t\tvalue: undefined\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// If a new `value` is set externally.\r\n\t// (e.g. as a result of an ajax API request\r\n\t//  to get user's phone after page loaded)\r\n\t// The first part — `newValue !== prevValue` —\r\n\t// is basically `props.value !== prevProps.value`\r\n\t// so it means \"if value property was changed externally\".\r\n\t// The second part — `newValue !== value` —\r\n\t// is for ignoring the `getDerivedStateFromProps()` call\r\n\t// which happens in `this.onChange()` right after `this.setState()`.\r\n\t// If this `getDerivedStateFromProps()` call isn't ignored\r\n\t// then the country flag would reset on each input.\r\n\tif (!valuesAreEqual(newValue, prevValue) && !valuesAreEqual(newValue, value)) {\r\n\t\tlet phoneNumber\r\n\t\tlet parsedCountry\r\n\t\tif (newValue) {\r\n\t\t\tphoneNumber = parsePhoneNumber(newValue, metadata)\r\n\t\t\tconst supportedCountries = getSupportedCountries(countries, metadata)\r\n\t\t\tif (phoneNumber && phoneNumber.country) {\r\n\t\t\t\t// Ignore `else` because all countries are supported in metadata.\r\n\t\t\t\t/* istanbul ignore next */\r\n\t\t\t\tif (!supportedCountries || supportedCountries.indexOf(phoneNumber.country) >= 0) {\r\n\t\t\t\t\tparsedCountry = phoneNumber.country\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tparsedCountry = getCountryForPartialE164Number(newValue, {\r\n\t\t\t\t\tcountry: undefined,\r\n\t\t\t\t\tcountries: supportedCountries,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t})\r\n\t\t\t\t// In cases when multiple countries correspond to the same country calling code,\r\n\t\t\t\t// the phone number digits of `newValue` have to be matched against country-specific\r\n\t\t\t\t// regular expressions in order to determine the exact country.\r\n\t\t\t\t// Sometimes, that algorithm can't decide for sure which country does the phone number belong to,\r\n\t\t\t\t// for example when the digits of `newValue` don't match any of those regular expressions.\r\n\t\t\t\t// and the country of the phone number couldn't be determined.\r\n\t\t\t\t// In those cases, people prefer the component to show the flag of the `defaultCountry`\r\n\t\t\t\t// if the phone number could potentially belong to that `defaultCountry`.\r\n\t\t\t\t// At least that's how the component behaves when a user pastes an international\r\n\t\t\t\t// phone number into the input field: for example, when `defaultCountry` is `\"US\"`\r\n\t\t\t\t// and the user pastes value \"+1 555 555 5555\" into the input field, it keep showing \"US\" flag.\r\n\t\t\t\t// So when setting new `value` property externally, the component should behave the same way:\r\n\t\t\t\t// it should select the `defaultCountry` when the new `value` could potentially belong\r\n\t\t\t\t// to that country in cases when the exact country can't be determined.\r\n\t\t\t\t// https://github.com/catamphetamine/react-phone-number-input/issues/413#issuecomment-1536219404\r\n\t\t\t\tif (!parsedCountry) {\r\n\t\t\t\t\tif (newValue.indexOf(getInternationalPhoneNumberPrefix(newDefaultCountry, metadata)) === 0) {\r\n\t\t\t\t\t\tparsedCountry = newDefaultCountry\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet hasUserSelectedACountryUpdate\r\n\t\tif (!newValue) {\r\n\t\t\t// Reset `hasUserSelectedACountry` flag in `state`.\r\n\t\t\thasUserSelectedACountryUpdate = {\r\n\t\t\t\thasUserSelectedACountry: undefined\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\t...hasUserSelectedACountryUpdate,\r\n\t\t\tphoneDigits: _getInitialPhoneDigits({\r\n\t\t\t\tphoneNumber,\r\n\t\t\t\tvalue: newValue,\r\n\t\t\t\tdefaultCountry: newDefaultCountry\r\n\t\t\t}),\r\n\t\t\tvalue: newValue,\r\n\t\t\tcountry: newValue ? parsedCountry : newDefaultCountry\r\n\t\t}\r\n\t}\r\n\r\n\t// `defaultCountry` didn't change.\r\n\t// `value` didn't change.\r\n\t// `phoneDigits` didn't change, because `value` didn't change.\r\n\t//\r\n\t// So no need to update state.\r\n}\r\n\r\nfunction valuesAreEqual(value1, value2) {\r\n\t// If `value` has been set to `null` externally then convert it to `undefined`.\r\n\t//\r\n\t// For example, `react-hook-form` sets `value` to `null` when the user clears the input.\r\n\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/164\r\n\t// In that case, without this conversion of `null` to `undefined`, it would reset\r\n\t// the selected country to `defaultCountry` because in that case `newValue !== value`\r\n\t// because `null !== undefined`.\r\n\t//\r\n\t// Historically, empty `value` is encoded as `undefined`.\r\n\t// Perhaps empty `value` would be better encoded as `null` instead.\r\n\t// But because that would be a potentially breaking change for some people,\r\n\t// it's left as is for the current \"major\" version of this library.\r\n\t//\r\n\tif (value1 === null) {\r\n\t\tvalue1 = undefined\r\n\t}\r\n\tif (value2 === null) {\r\n\t\tvalue2 = undefined\r\n\t}\r\n\treturn value1 === value2\r\n}","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport classNames from 'classnames'\r\n\r\nimport InputSmart from './InputSmart.js'\r\nimport InputBasic from './InputBasic.js'\r\n\r\nimport { CountrySelectWithIcon as CountrySelect } from './CountrySelect.js'\r\n\r\nimport Flag from './Flag.js'\r\nimport InternationalIcon from './InternationalIcon.js'\r\n\r\nimport {\r\n\tsortCountryOptions,\r\n\tisCountrySupportedWithError,\r\n\tgetSupportedCountries,\r\n\tgetSupportedCountryOptions,\r\n\tgetCountries\r\n} from './helpers/countries.js'\r\n\r\nimport { createCountryIconComponent } from './CountryIcon.js'\r\n\r\nimport {\r\n\tmetadata as metadataPropType,\r\n\tlabels as labelsPropType\r\n} from './PropTypes.js'\r\n\r\nimport {\r\n\tgetPreSelectedCountry,\r\n\tgetCountrySelectOptions,\r\n\tparsePhoneNumber,\r\n\tgenerateNationalNumberDigits,\r\n\tgetPhoneDigitsForNewCountry,\r\n\tgetInitialPhoneDigits,\r\n\tonPhoneDigitsChange,\r\n\te164\r\n} from './helpers/phoneInputHelpers.js'\r\n\r\nimport getPhoneInputWithCountryStateUpdateFromNewProps from './helpers/getPhoneInputWithCountryStateUpdateFromNewProps.js'\r\n\r\nclass PhoneNumberInput_ extends React.PureComponent {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\r\n\t\tthis.inputRef = React.createRef()\r\n\r\n\t\tconst {\r\n\t\t\tvalue,\r\n\t\t\tlabels,\r\n\t\t\tinternational,\r\n\t\t\taddInternationalOption,\r\n\t\t\t// `displayInitialValueAsLocalNumber` property has been\r\n\t\t\t// superceded by `initialValueFormat` property.\r\n\t\t\tdisplayInitialValueAsLocalNumber,\r\n\t\t\tinitialValueFormat,\r\n\t\t\tmetadata\r\n\t\t} = this.props\r\n\r\n\t\tlet {\r\n\t\t\tdefaultCountry,\r\n\t\t\tcountries\r\n\t\t} = this.props\r\n\r\n\t\t// Validate `defaultCountry`.\r\n\t\tif (defaultCountry) {\r\n\t\t\tif (!this.isCountrySupportedWithError(defaultCountry)) {\r\n\t\t\t\tdefaultCountry = undefined\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Validate `countries`.\r\n\t\tcountries = getSupportedCountries(countries, metadata)\r\n\r\n\t\tconst phoneNumber = parsePhoneNumber(value, metadata)\r\n\r\n\t\tthis.CountryIcon = createCountryIconComponent(this.props)\r\n\r\n\t\tconst preSelectedCountry = getPreSelectedCountry({\r\n\t\t\tvalue,\r\n\t\t\tphoneNumber,\r\n\t\t\tdefaultCountry,\r\n\t\t\trequired: !addInternationalOption,\r\n\t\t\tcountries: countries || getCountries(metadata),\r\n\t\t\tgetAnyCountry: () => this.getFirstSupportedCountry({ countries }),\r\n\t\t\tmetadata\r\n\t\t})\r\n\r\n\t\tthis.state = {\r\n\t\t\t// Workaround for `this.props` inside `getDerivedStateFromProps()`.\r\n\t\t\tprops: this.props,\r\n\r\n\t\t\t// The country selected.\r\n\t\t\tcountry: preSelectedCountry,\r\n\r\n\t\t\t// `countries` are stored in `this.state` because they're filtered.\r\n\t\t\t// For example, a developer might theoretically pass some unsupported\r\n\t\t\t// countries as part of the `countries` property, and because of that\r\n\t\t\t// the component uses `this.state.countries` (which are filtered)\r\n\t\t\t// instead of `this.props.countries`\r\n\t\t\t// (which could potentially contain unsupported countries).\r\n\t\t\tcountries,\r\n\r\n\t\t\t// `phoneDigits` state property holds non-formatted user's input.\r\n\t\t\t// The reason is that there's no way of finding out\r\n\t\t\t// in which form should `value` be displayed: international or national.\r\n\t\t\t// E.g. if `value` is `+78005553535` then it could be input\r\n\t\t\t// by a user both as `8 (800) 555-35-35` and `+7 800 555 35 35`.\r\n\t\t\t// Hence storing just `value` is not sufficient for correct formatting.\r\n\t\t\t// E.g. if a user entered `8 (800) 555-35-35`\r\n\t\t\t// then value is `+78005553535` and `phoneDigits` are `88005553535`\r\n\t\t\t// and if a user entered `+7 800 555 35 35`\r\n\t\t\t// then value is `+78005553535` and `phoneDigits` are `+78005553535`.\r\n\t\t\tphoneDigits: getInitialPhoneDigits({\r\n\t\t\t\tvalue,\r\n\t\t\t\tphoneNumber,\r\n\t\t\t\tdefaultCountry,\r\n\t\t\t\tinternational,\r\n\t\t\t\tuseNationalFormat: displayInitialValueAsLocalNumber || initialValueFormat === 'national',\r\n\t\t\t\tmetadata\r\n\t\t\t}),\r\n\r\n\t\t\t// `value` property is duplicated in state.\r\n\t\t\t// The reason is that `getDerivedStateFromProps()`\r\n\t\t\t// needs this `value` to compare to the new `value` property\r\n\t\t\t// to find out if `phoneDigits` needs updating:\r\n\t\t\t// If the `value` property was changed externally\r\n\t\t\t// then it won't be equal to `state.value`\r\n\t\t\t// in which case `phoneDigits` and `country` should be updated.\r\n\t\t\tvalue\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tconst { onCountryChange } = this.props\r\n\t\tlet { defaultCountry } = this.props\r\n\t\tconst { country: selectedCountry } = this.state\r\n\t\tif (onCountryChange) {\r\n\t\t\tif (defaultCountry) {\r\n\t\t\t\tif (!this.isCountrySupportedWithError(defaultCountry)) {\r\n\t\t\t\t\tdefaultCountry = undefined\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (selectedCountry !== defaultCountry) {\r\n\t\t\t\tonCountryChange(selectedCountry)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tconst { onCountryChange } = this.props\r\n\t\tconst { country } = this.state\r\n\t\t// Call `onCountryChange` when user selects another country.\r\n\t\tif (onCountryChange && country !== prevState.country) {\r\n\t\t\tonCountryChange(country)\r\n\t\t}\r\n\t}\r\n\r\n\tsetInputRef = (instance) => {\r\n\t\tthis.inputRef.current = instance\r\n\t\tconst { inputRef: ref } = this.props\r\n\t\tif (ref) {\r\n\t\t\tif (typeof ref === 'function') {\r\n\t\t\t\tref(instance)\r\n\t\t\t} else {\r\n\t\t\t\tref.current = instance\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountrySelectOptions({ countries }) {\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tcountryCallingCodeEditable,\r\n\t\t\tcountryOptionsOrder,\r\n\t\t\taddInternationalOption,\r\n\t\t\tlabels,\r\n\t\t\tlocales,\r\n\t\t\tmetadata\r\n\t\t} = this.props\r\n\t\treturn this.useMemoCountrySelectOptions(() => {\r\n\t\t\treturn sortCountryOptions(\r\n\t\t\t\tgetCountrySelectOptions({\r\n\t\t\t\t\tcountries: countries || getCountries(metadata),\r\n\t\t\t\t\tcountryNames: labels,\r\n\t\t\t\t\taddInternationalOption: (international && countryCallingCodeEditable === false) ? false : addInternationalOption,\r\n\t\t\t\t\tcompareStringsLocales: locales,\r\n\t\t\t\t\t// compareStrings\r\n\t\t\t\t}),\r\n\t\t\t\tgetSupportedCountryOptions(countryOptionsOrder, metadata)\r\n\t\t\t)\r\n\t\t}, [\r\n\t\t\tcountries,\r\n\t\t\tcountryOptionsOrder,\r\n\t\t\taddInternationalOption,\r\n\t\t\tlabels,\r\n\t\t\tmetadata\r\n\t\t])\r\n\t}\r\n\r\n\tuseMemoCountrySelectOptions(generator, dependencies) {\r\n\t\tif (\r\n\t\t\t!this.countrySelectOptionsMemoDependencies ||\r\n\t\t\t!areEqualArrays(dependencies, this.countrySelectOptionsMemoDependencies)\r\n\t\t) {\r\n\t\t\tthis.countrySelectOptionsMemo = generator()\r\n\t\t\tthis.countrySelectOptionsMemoDependencies = dependencies\r\n\t\t}\r\n\t\treturn this.countrySelectOptionsMemo\r\n\t}\r\n\r\n\tgetFirstSupportedCountry({ countries }) {\r\n\t\tconst countryOptions = this.getCountrySelectOptions({ countries })\r\n\t\treturn countryOptions[0].value\r\n\t}\r\n\r\n\t// A shorthand for not passing `metadata` as a second argument.\r\n\tisCountrySupportedWithError = (country) => {\r\n\t\tconst { metadata } = this.props\r\n\t\treturn isCountrySupportedWithError(country, metadata)\r\n\t}\r\n\r\n\t// Country `<select/>` `onChange` handler.\r\n\tonCountryChange = (newCountry) => {\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tmetadata,\r\n\t\t\tonChange,\r\n\t\t\tfocusInputOnCountrySelection\r\n\t\t} = this.props\r\n\r\n\t\tconst {\r\n\t\t\tphoneDigits: prevPhoneDigits,\r\n\t\t\tcountry: prevCountry\r\n\t\t} = this.state\r\n\r\n\t\t// After the new `country` has been selected,\r\n\t\t// if the phone number `<input/>` holds any digits\r\n\t\t// then migrate those digits for the new `country`.\r\n\t\tconst newPhoneDigits = getPhoneDigitsForNewCountry(prevPhoneDigits, {\r\n\t\t\tprevCountry,\r\n\t\t\tnewCountry,\r\n\t\t\tmetadata,\r\n\t\t\t// Convert the phone number to \"national\" format\r\n\t\t\t// when the user changes the selected country by hand.\r\n\t\t\tuseNationalFormat: !international\r\n\t\t})\r\n\r\n\t\tconst newValue = e164(newPhoneDigits, newCountry, metadata)\r\n\r\n\t\t// Focus phone number `<input/>` upon country selection.\r\n\t\tif (focusInputOnCountrySelection) {\r\n\t\t\tthis.inputRef.current.focus()\r\n\t\t}\r\n\r\n\t\t// If the user has already manually selected a country\r\n\t\t// then don't override that already selected country\r\n\t\t// if the `defaultCountry` property changes.\r\n\t\t// That's what `hasUserSelectedACountry` flag is for.\r\n\r\n\t\tthis.setState({\r\n\t\t\tcountry: newCountry,\r\n\t\t\thasUserSelectedACountry: true,\r\n\t\t\tphoneDigits: newPhoneDigits,\r\n\t\t\tvalue: newValue\r\n\t\t},\r\n\t\t() => {\r\n\t\t\t// Update the new `value` property.\r\n\t\t\t// Doing it after the `state` has been updated\r\n\t\t\t// because `onChange()` will trigger `getDerivedStateFromProps()`\r\n\t\t\t// with the new `value` which will be compared to `state.value` there.\r\n\t\t\tonChange(newValue)\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * `<input/>` `onChange()` handler.\r\n\t * Updates `value` property accordingly (so that they are kept in sync).\r\n\t * @param {string?} input — Either a parsed phone number or an empty string. Examples: `\"\"`, `\"+\"`, `\"+123\"`, `\"123\"`.\r\n\t */\r\n\tonChange = (_phoneDigits) => {\r\n\t\tconst {\r\n\t\t\tdefaultCountry,\r\n\t\t\tonChange,\r\n\t\t\taddInternationalOption,\r\n\t\t\tinternational,\r\n\t\t\tlimitMaxLength,\r\n\t\t\tcountryCallingCodeEditable,\r\n\t\t\tmetadata\r\n\t\t} = this.props\r\n\r\n\t\tconst {\r\n\t\t\tcountries,\r\n\t\t\tphoneDigits: prevPhoneDigits,\r\n\t\t\tcountry: currentlySelectedCountry\r\n\t\t} = this.state\r\n\r\n\t\tconst {\r\n\t\t\tphoneDigits,\r\n\t\t\tcountry,\r\n\t\t\tvalue\r\n\t\t} = onPhoneDigitsChange(_phoneDigits, {\r\n\t\t\tprevPhoneDigits,\r\n\t\t\tcountry: currentlySelectedCountry,\r\n\t\t\tcountryRequired: !addInternationalOption,\r\n\t\t\tdefaultCountry,\r\n\t\t\tgetAnyCountry: () => this.getFirstSupportedCountry({ countries }),\r\n\t\t\tcountries,\r\n\t\t\tinternational,\r\n\t\t\tlimitMaxLength,\r\n\t\t\tcountryCallingCodeEditable,\r\n\t\t\tmetadata\r\n\t\t})\r\n\r\n\t\tconst stateUpdate = {\r\n\t\t\tphoneDigits,\r\n\t\t\tvalue,\r\n\t\t\tcountry\r\n\t\t}\r\n\r\n\t\tif (countryCallingCodeEditable === false) {\r\n\t\t\t// If it simply did `setState({ phoneDigits: intlPrefix })` here,\r\n\t\t\t// then it would have no effect when erasing an inital international prefix\r\n\t\t\t// via Backspace, because `phoneDigits` in `state` wouldn't change\r\n\t\t\t// as a result, because it was `prefix` and it became `prefix`,\r\n\t\t\t// so the component wouldn't rerender, and the user would be able\r\n\t\t\t// to erase the country calling code part, and that part is\r\n\t\t\t// assumed to be non-eraseable. That's why the component is\r\n\t\t\t// forcefully rerendered here.\r\n\t\t\t// https://github.com/catamphetamine/react-phone-number-input/issues/367#issuecomment-721703501\r\n\t\t\tif (!value && phoneDigits === this.state.phoneDigits) {\r\n\t\t\t\t// Force a re-render of the `<input/>` in order to reset its value.\r\n\t\t\t\tstateUpdate.forceRerender = {}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setState(\r\n\t\t\tstateUpdate,\r\n\t\t\t// Update the new `value` property.\r\n\t\t\t// Doing it after the `state` has been updated\r\n\t\t\t// because `onChange()` will trigger `getDerivedStateFromProps()`\r\n\t\t\t// with the new `value` which will be compared to `state.value` there.\r\n\t\t\t() => onChange(value)\r\n\t\t)\r\n\t}\r\n\r\n\t// Toggles the `--focus` CSS class.\r\n\t_onFocus = () => this.setState({ isFocused: true })\r\n\r\n\t// Toggles the `--focus` CSS class.\r\n\t_onBlur = () => this.setState({ isFocused: false })\r\n\r\n\tonFocus = (event) => {\r\n\t\tthis._onFocus()\r\n\t\tconst { onFocus } = this.props\r\n\t\tif (onFocus) {\r\n\t\t\tonFocus(event)\r\n\t\t}\r\n\t}\r\n\r\n\tonBlur = (event) => {\r\n\t\tconst { onBlur } = this.props\r\n\t\tthis._onBlur()\r\n\t\tif (onBlur) {\r\n\t\t\tonBlur(event)\r\n\t\t}\r\n\t}\r\n\r\n\tonCountryFocus = (event) => {\r\n\t\tthis._onFocus()\r\n\t\t// this.setState({ countrySelectFocused: true })\r\n\t\tconst { countrySelectProps } = this.props\r\n\t\tif (countrySelectProps) {\r\n\t\t\tconst { onFocus } = countrySelectProps\r\n\t\t\tif (onFocus) {\r\n\t\t\t\tonFocus(event)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tonCountryBlur = (event) => {\r\n\t\tthis._onBlur()\r\n\t\t// this.setState({ countrySelectFocused: false })\r\n\t\tconst { countrySelectProps } = this.props\r\n\t\tif (countrySelectProps) {\r\n\t\t\tconst { onBlur } = countrySelectProps\r\n\t\t\tif (onBlur) {\r\n\t\t\t\tonBlur(event)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// `state` holds previous props as `props`, and also:\r\n\t// * `country` — The currently selected country, e.g. `\"RU\"`.\r\n\t// * `value` — The currently entered phone number (E.164), e.g. `+78005553535`.\r\n\t// * `phoneDigits` — The parsed `<input/>` value, e.g. `8005553535`.\r\n\t// (and a couple of other less significant properties)\r\n\tstatic getDerivedStateFromProps(props, state) {\r\n\t\treturn {\r\n\t\t\t// Emulate `prevProps` via `state.props`.\r\n\t\t\tprops,\r\n\t\t\t...getPhoneInputWithCountryStateUpdateFromNewProps(props, state.props, state)\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\t// Generic HTML attributes.\r\n\t\t\tname,\r\n\t\t\tdisabled,\r\n\t\t\treadOnly,\r\n\t\t\tautoComplete,\r\n\t\t\tstyle,\r\n\t\t\tclassName,\r\n\r\n\t\t\t// Number `<input/>` properties.\r\n\t\t\tinputRef,\r\n\t\t\tinputComponent,\r\n\t\t\tnumberInputProps,\r\n\t\t\tsmartCaret,\r\n\r\n\t\t\t// Country `<select/>` properties.\r\n\t\t\tcountrySelectComponent: CountrySelectComponent,\r\n\t\t\tcountrySelectProps,\r\n\r\n\t\t\t// Container `<div/>` properties.\r\n\t\t\tcontainerComponent: ContainerComponent,\r\n\r\n\t\t\t// Get \"rest\" properties (passed through to number `<input/>`).\r\n\t\t\tdefaultCountry,\r\n\t\t\tcountries: countriesProperty,\r\n\t\t\tcountryOptionsOrder,\r\n\t\t\tlabels,\r\n\t\t\tflags,\r\n\t\t\tflagComponent,\r\n\t\t\tflagUrl,\r\n\t\t\taddInternationalOption,\r\n\t\t\tinternationalIcon,\r\n\t\t\t// `displayInitialValueAsLocalNumber` property has been\r\n\t\t\t// superceded by `initialValueFormat` property.\r\n\t\t\tdisplayInitialValueAsLocalNumber,\r\n\t\t\tinitialValueFormat,\r\n\t\t\tonCountryChange,\r\n\t\t\tlimitMaxLength,\r\n\t\t\tcountryCallingCodeEditable,\r\n\t\t\tfocusInputOnCountrySelection,\r\n\t\t\treset,\r\n\t\t\tmetadata,\r\n\t\t\tinternational,\r\n\t\t\tlocales,\r\n\t\t\t// compareStrings,\r\n\t\t\t...rest\r\n\t\t} = this.props\r\n\r\n\t\tconst {\r\n\t\t\tcountry,\r\n\t\t\tcountries,\r\n\t\t\tphoneDigits,\r\n\t\t\tisFocused\r\n\t\t} = this.state\r\n\r\n\t\tconst InputComponent = smartCaret ? InputSmart : InputBasic\r\n\r\n\t\tconst countrySelectOptions = this.getCountrySelectOptions({ countries })\r\n\r\n\t\treturn (\r\n\t\t\t<ContainerComponent\r\n\t\t\t\tstyle={style}\r\n\t\t\t\tclassName={classNames(className, 'PhoneInput', {\r\n\t\t\t\t\t'PhoneInput--focus': isFocused,\r\n\t\t\t\t\t'PhoneInput--disabled': disabled,\r\n\t\t\t\t\t'PhoneInput--readOnly': readOnly\r\n\t\t\t\t})}>\r\n\r\n\t\t\t\t{/* Country `<select/>` */}\r\n\t\t\t\t<CountrySelectComponent\r\n\t\t\t\t\tname={name ? `${name}Country` : undefined}\r\n\t\t\t\t\taria-label={labels.country}\r\n\t\t\t\t\t{...countrySelectProps}\r\n\t\t\t\t\tvalue={country}\r\n\t\t\t\t\toptions={countrySelectOptions}\r\n\t\t\t\t\tonChange={this.onCountryChange}\r\n\t\t\t\t\tonFocus={this.onCountryFocus}\r\n\t\t\t\t\tonBlur={this.onCountryBlur}\r\n\t\t\t\t\tdisabled={disabled || (countrySelectProps && countrySelectProps.disabled)}\r\n\t\t\t\t\treadOnly={readOnly || (countrySelectProps && countrySelectProps.readOnly)}\r\n\t\t\t\t\ticonComponent={this.CountryIcon}/>\r\n\r\n\t\t\t\t{/* Phone number `<input/>` */}\r\n\t\t\t\t<InputComponent\r\n\t\t\t\t\tref={this.setInputRef}\r\n\t\t\t\t\ttype=\"tel\"\r\n\t\t\t\t\tautoComplete={autoComplete}\r\n\t\t\t\t\t{...numberInputProps}\r\n\t\t\t\t\t{...rest}\r\n\t\t\t\t\tname={name}\r\n\t\t\t\t\tmetadata={metadata}\r\n\t\t\t\t\tcountry={country}\r\n\t\t\t\t\tvalue={phoneDigits || ''}\r\n\t\t\t\t\tonChange={this.onChange}\r\n\t\t\t\t\tonFocus={this.onFocus}\r\n\t\t\t\t\tonBlur={this.onBlur}\r\n\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\treadOnly={readOnly}\r\n\t\t\t\t\tinputComponent={inputComponent}\r\n\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t'PhoneInputInput',\r\n\t\t\t\t\t\tnumberInputProps && numberInputProps.className,\r\n\t\t\t\t\t\trest.className\r\n\t\t\t\t\t)}/>\r\n\t\t\t</ContainerComponent>\r\n\t\t)\r\n\t}\r\n}\r\n\r\n// This wrapper is only to `.forwardRef()` to the `<input/>`.\r\nconst PhoneNumberInput = React.forwardRef((props, ref) => (\r\n\t<PhoneNumberInput_ {...withDefaultProps(props)} inputRef={ref}/>\r\n))\r\n\r\nPhoneNumberInput.propTypes = {\r\n\t/**\r\n\t * Phone number in `E.164` format.\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * `\"+12223333333\"`\r\n\t *\r\n\t * Any \"falsy\" value like `undefined`, `null` or an empty string `\"\"` is treated like \"empty\".\r\n\t */\r\n\tvalue: PropTypes.string,\r\n\r\n\t/**\r\n\t * A function of `value: string?`.\r\n\t *\r\n\t * Updates the `value` property as the user inputs a phone number.\r\n\t *\r\n\t * If the user erases the input value, the argument is `undefined`.\r\n\t */\r\n\tonChange: PropTypes.func.isRequired,\r\n\r\n\t/**\r\n\t * Toggles the `--focus` CSS class.\r\n\t * @ignore\r\n\t */\r\n\tonFocus: PropTypes.func,\r\n\r\n\t/**\r\n\t * `onBlur` is usually passed by `redux-form`.\r\n\t * @ignore\r\n\t */\r\n\tonBlur: PropTypes.func,\r\n\r\n\t/**\r\n\t * Set to `true` to mark both the phone number `<input/>`\r\n\t * and the country `<select/>` as `disabled`.\r\n\t */\r\n\tdisabled: PropTypes.bool,\r\n\r\n\t/**\r\n\t * Set to `true` to mark both the phone number `<input/>`\r\n\t * and the country `<select/>` as `readonly`.\r\n\t */\r\n\treadOnly: PropTypes.bool,\r\n\r\n\t/**\r\n\t * Sets `autoComplete` property for phone number `<input/>`.\r\n\t *\r\n\t * Web browser's \"autocomplete\" feature\r\n\t * remembers the phone number being input\r\n\t * and can also autofill the `<input/>`\r\n\t * with previously remembered phone numbers.\r\n\t *\r\n\t * https://developers.google.com\r\n\t * /web/updates/2015/06/checkout-faster-with-autofill\r\n\t *\r\n\t * For example, can be used to turn it off:\r\n\t *\r\n\t * \"So when should you use `autocomplete=\"off\"`?\r\n\t *  One example is when you've implemented your own version\r\n\t *  of autocomplete for search. Another example is any form field\r\n\t *  where users will input and submit different kinds of information\r\n\t *  where it would not be useful to have the browser remember\r\n\t *  what was submitted previously\".\r\n\t */\r\n\t// (is `\"tel\"` by default)\r\n\tautoComplete: PropTypes.string,\r\n\r\n\t/**\r\n\t * Set to `\"national\"` to show the initial `value` in\r\n\t * \"national\" format rather than \"international\".\r\n\t *\r\n\t * For example, if `initialValueFormat` is `\"national\"`\r\n\t * and the initial `value=\"+12133734253\"` is passed\r\n\t * then the `<input/>` value will be `\"(213) 373-4253\"`.\r\n\t *\r\n\t * By default, `initialValueFormat` is `undefined`,\r\n\t * meaning that if the initial `value=\"+12133734253\"` is passed\r\n\t * then the `<input/>` value will be `\"+1 213 373 4253\"`.\r\n\t *\r\n\t * The reason for such default behaviour is that\r\n\t * the newer generation grows up when there are no stationary phones\r\n\t * and therefore everyone inputs phone numbers in international format\r\n\t * in their smartphones so people gradually get more accustomed to\r\n\t * writing phone numbers in international format rather than in local format.\r\n\t * Future people won't be using \"national\" format, only \"international\".\r\n\t */\r\n\t// (is `undefined` by default)\r\n\tinitialValueFormat: PropTypes.oneOf(['national']),\r\n\r\n\t// `displayInitialValueAsLocalNumber` property has been\r\n\t// superceded by `initialValueFormat` property.\r\n\tdisplayInitialValueAsLocalNumber: PropTypes.bool,\r\n\r\n\t/**\r\n\t * The country to be selected by default.\r\n\t * For example, can be set after a GeoIP lookup.\r\n\t *\r\n\t * Example: `\"US\"`.\r\n\t */\r\n\t// A two-letter country code (\"ISO 3166-1 alpha-2\").\r\n\tdefaultCountry: PropTypes.string,\r\n\r\n\t/**\r\n\t * If specified, only these countries will be available for selection.\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * `[\"RU\", \"UA\", \"KZ\"]`\r\n\t */\r\n\tcountries: PropTypes.arrayOf(PropTypes.string),\r\n\r\n\t/**\r\n\t * Custom country `<select/>` option names.\r\n\t * Also some labels like \"ext\" and country `<select/>` `aria-label`.\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * `{ \"ZZ\": \"Международный\", RU: \"Россия\", US: \"США\", ... }`\r\n\t *\r\n\t * See the `locales` directory for examples.\r\n\t */\r\n\tlabels: labelsPropType,\r\n\r\n\t/**\r\n\t * Country `<select/>` options are sorted by their labels.\r\n\t * The default sorting function uses `a.localeCompare(b, locales)`,\r\n\t * and, if that's not available, falls back to simple `a > b` / `a < b`.\r\n\t * Some languages, like Chinese, support multiple sorting variants\r\n\t * (called \"collations\"), and the user might prefer one or another.\r\n\t * Also, sometimes the Operating System language is not always\r\n\t * the preferred language for a person using a website or an application,\r\n\t * so there should be a way to specify custom locale.\r\n\t * This `locales` property mimicks the `locales` argument of `Intl` constructors,\r\n\t * and can be either a Unicode BCP 47 locale identifier or an array of such locale identifiers.\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument\r\n\t */\r\n\tlocales: PropTypes.oneOfType([\r\n\t\tPropTypes.string,\r\n\t\tPropTypes.arrayOf(PropTypes.string)\r\n\t]),\r\n\r\n\t/*\r\n\t * Custom country `<select/>` options sorting function.\r\n\t * The default one uses `a.localeCompare(b)`, and,\r\n\t * if that's not available, falls back to simple `a > b`/`a < b`.\r\n\t * There have been requests to add custom sorter for cases\r\n\t * like Chinese language and \"pinyin\" (non-default) sorting order.\r\n\t * https://stackoverflow.com/questions/22907288/chinese-sorting-by-pinyin-in-javascript-with-localecompare\r\n\tcompareStrings: PropTypes.func,\r\n\t */\r\n\r\n\t/**\r\n\t * A URL template of a country flag, where\r\n\t * \"{XX}\" is a two-letter country code in upper case,\r\n\t * or where \"{xx}\" is a two-letter country code in lower case.\r\n\t * By default it points to `country-flag-icons` gitlab pages website.\r\n\t * I imagine someone might want to download those country flag icons\r\n\t * and host them on their own servers instead\r\n\t * (all flags are available in the `country-flag-icons` library).\r\n\t * There's a catch though: new countries may be added in future,\r\n\t * so when hosting country flag icons on your own server\r\n\t * one should check the `CHANGELOG.md` every time before updating this library,\r\n\t * otherwise there's a possibility that some new country flag would be missing.\r\n\t */\r\n\tflagUrl: PropTypes.string,\r\n\r\n\t/**\r\n\t * Custom country flag icon components.\r\n\t * These flags will be used instead of the default ones.\r\n\t * The the \"Flags\" section of the readme for more info.\r\n\t *\r\n\t * The shape is an object where keys are country codes\r\n\t * and values are flag icon components.\r\n\t * Flag icon components receive the same properties\r\n\t * as `flagComponent` (see below).\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * `{ \"RU\": (props) => <img src=\"...\"/> }`\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * `import flags from 'country-flag-icons/react/3x2'`\r\n\t *\r\n\t * `import PhoneInput from 'react-phone-number-input'`\r\n\t *\r\n\t * `<PhoneInput flags={flags} .../>`\r\n\t */\r\n\tflags: PropTypes.objectOf(PropTypes.elementType),\r\n\r\n\t/**\r\n\t * Country flag icon component.\r\n\t *\r\n\t * Takes properties:\r\n\t *\r\n\t * * `country: string` — The country code.\r\n\t * * `countryName: string` — The country name.\r\n\t * * `flagUrl: string` — The `flagUrl` property (see above).\r\n\t * * `flags: object` — The `flags` property (see above).\r\n\t */\r\n\tflagComponent: PropTypes.elementType,\r\n\r\n\t/**\r\n\t * Set to `false` to remove the \"International\" option from country `<select/>`.\r\n\t */\r\n\taddInternationalOption: PropTypes.bool,\r\n\r\n\t/**\r\n\t * \"International\" icon component.\r\n\t * Should have the same aspect ratio.\r\n\t *\r\n\t * Receives properties:\r\n\t *\r\n\t * * `title: string` — \"International\" country option label.\r\n\t */\r\n\tinternationalIcon: PropTypes.elementType,\r\n\r\n\t/**\r\n\t * Can be used to place some countries on top of the list of country `<select/>` options.\r\n\t *\r\n\t * * `\"XX\"` — inserts an option for \"XX\" country.\r\n\t * * `\"🌐\"` — inserts \"International\" option.\r\n\t * * `\"|\"` — inserts a separator.\r\n\t * * `\"...\"` — inserts options for the rest of the countries (can be omitted, in which case it will be automatically added at the end).\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * `[\"US\", \"CA\", \"AU\", \"|\", \"...\"]`\r\n\t */\r\n\tcountryOptionsOrder: PropTypes.arrayOf(PropTypes.string),\r\n\r\n\t/**\r\n\t * `<Phone/>` component CSS style object.\r\n\t */\r\n\tstyle: PropTypes.object,\r\n\r\n\t/**\r\n\t * `<Phone/>` component CSS class.\r\n\t */\r\n\tclassName: PropTypes.string,\r\n\r\n\t/**\r\n\t * Country `<select/>` component.\r\n\t *\r\n\t * Receives properties:\r\n\t *\r\n\t * * `name: string?` — HTML `name` attribute.\r\n\t * * `value: string?` — The currently selected country code.\r\n\t * * `onChange(value: string?)` — Updates the `value`.\r\n\t * * `onFocus()` — Is used to toggle the `--focus` CSS class.\r\n\t * * `onBlur()` — Is used to toggle the `--focus` CSS class.\r\n\t * * `options: object[]` — The list of all selectable countries (including \"International\") each being an object of shape `{ value: string?, label: string }`.\r\n\t * * `iconComponent: PropTypes.elementType` — React component that renders a country icon: `<Icon country={value}/>`. If `country` is `undefined` then it renders an \"International\" icon.\r\n\t * * `disabled: boolean?` — HTML `disabled` attribute.\r\n\t * * `readOnly: boolean?` — HTML `readOnly` attribute.\r\n\t * * `tabIndex: (number|string)?` — HTML `tabIndex` attribute.\r\n\t * * `className: string` — CSS class name.\r\n\t */\r\n\tcountrySelectComponent: PropTypes.elementType,\r\n\r\n\t/**\r\n\t * Country `<select/>` component props.\r\n\t * Along with the usual DOM properties such as `aria-label` and `tabIndex`,\r\n\t * some custom properties are supported, such as `arrowComponent` and `unicodeFlags`.\r\n\t */\r\n\tcountrySelectProps: PropTypes.object,\r\n\r\n\t/**\r\n\t * Phone number `<input/>` component.\r\n\t *\r\n\t * Receives properties:\r\n\t *\r\n\t * * `value: string` — The formatted `value`.\r\n\t * * `onChange(event: Event)` — Updates the formatted `value` from `event.target.value`.\r\n\t * * `onFocus()` — Is used to toggle the `--focus` CSS class.\r\n\t * * `onBlur()` — Is used to toggle the `--focus` CSS class.\r\n\t * * Other properties like `type=\"tel\"` or `autoComplete=\"tel\"` that should be passed through to the DOM `<input/>`.\r\n\t *\r\n\t * Must also either use `React.forwardRef()` to \"forward\" `ref` to the `<input/>` or implement `.focus()` method.\r\n\t */\r\n\tinputComponent: PropTypes.elementType,\r\n\r\n\t/**\r\n\t * Wrapping `<div/>` component.\r\n\t *\r\n\t * Receives properties:\r\n\t *\r\n\t * * `style: object` — A component CSS style object.\r\n\t * * `className: string` — Classes to attach to the component, typically changes when component focuses or blurs.\r\n\t */\r\n\tcontainerComponent: PropTypes.elementType,\r\n\r\n\t/**\r\n\t * Phone number `<input/>` component props.\r\n\t */\r\n\tnumberInputProps: PropTypes.object,\r\n\r\n\t/**\r\n\t * When the user attempts to insert a digit somewhere in the middle of a phone number,\r\n\t * the caret position is moved right before the next available digit skipping\r\n\t * any punctuation in between. This is called \"smart\" caret positioning.\r\n\t * Another case would be the phone number format changing as a result of\r\n\t * the user inserting the digit somewhere in the middle, which would require\r\n\t * re-positioning the caret because all digit positions have changed.\r\n\t * This \"smart\" caret positioning feature can be turned off by passing\r\n\t * `smartCaret={false}` property: use it in case of any possible issues\r\n\t * with caret position during phone number input.\r\n\t */\r\n\t// Is `true` by default.\r\n\tsmartCaret: PropTypes.bool,\r\n\r\n\t/**\r\n\t * Set to `true` to force \"international\" phone number format.\r\n\t * Set to `false` to force \"national\" phone number format.\r\n\t * By default it's `undefined` meaning that it doesn't enforce any phone number format.\r\n\t */\r\n\tinternational: PropTypes.bool,\r\n\r\n\t/**\r\n\t * If set to `true`, the phone number input will get trimmed\r\n\t * if it exceeds the maximum length for the country.\r\n\t */\r\n\tlimitMaxLength: PropTypes.bool,\r\n\r\n\t/**\r\n\t * If set to `false`, and `international` is `true`, then\r\n\t * users won't be able to erase the \"country calling part\"\r\n\t * of a phone number in the `<input/>`.\r\n\t */\r\n\tcountryCallingCodeEditable: PropTypes.bool,\r\n\r\n\t/**\r\n\t * `libphonenumber-js` metadata.\r\n\t *\r\n\t * Can be used to pass custom `libphonenumber-js` metadata\r\n\t * to reduce the overall bundle size for those who compile \"custom\" metadata.\r\n\t */\r\n\tmetadata: metadataPropType,\r\n\r\n\t/**\r\n\t * Is called every time the selected country changes:\r\n\t * either programmatically or when user selects it manually from the list.\r\n\t */\r\n\t// People have been asking for a way to get the selected country.\r\n\t// @see  https://github.com/catamphetamine/react-phone-number-input/issues/128\r\n\t// For some it's just a \"business requirement\".\r\n\t// I guess it's about gathering as much info on the user as a website can\r\n\t// without introducing any addional fields that would complicate the form\r\n\t// therefore reducing \"conversion\" (that's a marketing term).\r\n\t// Assuming that the phone number's country is the user's country\r\n\t// is not 100% correct but in most cases I guess it's valid.\r\n\tonCountryChange: PropTypes.func,\r\n\r\n\t/**\r\n\t * If set to `false`, will not focus the `<input/>` component\r\n\t * when the user selects a country from the list of countries.\r\n\t * This can be used to conform to the Web Content Accessibility Guidelines (WCAG).\r\n\t * Quote:\r\n\t * \"On input: Changing the setting of any user interface component\r\n\t *  does not automatically cause a change of context unless the user\r\n\t *  has been advised of the behaviour before using the component.\"\r\n\t */\r\n\tfocusInputOnCountrySelection: PropTypes.bool\r\n}\r\n\r\nconst defaultProps = {\r\n\t/**\r\n\t * Remember (and autofill) the value as a phone number.\r\n\t */\r\n\tautoComplete: 'tel',\r\n\r\n\t/**\r\n\t * Country `<select/>` component.\r\n\t */\r\n\tcountrySelectComponent: CountrySelect,\r\n\r\n\t/**\r\n\t * Flag icon component.\r\n\t */\r\n\tflagComponent: Flag,\r\n\r\n\t/**\r\n\t * By default, uses icons from `country-flag-icons` gitlab pages website.\r\n\t */\r\n\t// Must be equal to `flagUrl` in `./CountryIcon.js`.\r\n\tflagUrl: 'https://purecatamphetamine.github.io/country-flag-icons/3x2/{XX}.svg',\r\n\r\n\t/**\r\n\t * Default \"International\" country `<select/>` option icon.\r\n\t */\r\n\tinternationalIcon: InternationalIcon,\r\n\r\n\t/**\r\n\t * Phone number `<input/>` component.\r\n\t */\r\n\tinputComponent: 'input',\r\n\r\n\t/**\r\n\t * Wrapping `<div/>` component.\r\n\t */\r\n\tcontainerComponent: 'div',\r\n\r\n\t/**\r\n\t * Some users requested a way to reset the component:\r\n\t * both number `<input/>` and country `<select/>`.\r\n\t * Whenever `reset` property changes both number `<input/>`\r\n\t * and country `<select/>` are reset.\r\n\t * It's not implemented as some instance `.reset()` method\r\n\t * because `ref` is forwarded to `<input/>`.\r\n\t * It's also not replaced with just resetting `country` on\r\n\t * external `value` reset, because a user could select a country\r\n\t * and then not input any `value`, and so the selected country\r\n\t * would be \"stuck\", if not using this `reset` property.\r\n\t */\r\n\t// https://github.com/catamphetamine/react-phone-number-input/issues/300\r\n\treset: PropTypes.any,\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\r\n\t/**\r\n\t * Set to `false` to use \"basic\" caret instead of the \"smart\" one.\r\n\t */\r\n\tsmartCaret: true,\r\n\r\n\t/**\r\n\t * Whether to add the \"International\" option\r\n\t * to the list of countries.\r\n\t */\r\n\taddInternationalOption: true,\r\n\r\n\t/**\r\n\t * If set to `false`, and `international` is `true`, then\r\n\t * users won't be able to erase the \"country calling part\"\r\n\t * of a phone number in the `<input/>`.\r\n\t */\r\n\tcountryCallingCodeEditable: true,\r\n\r\n\t/**\r\n\t * If set to `false`, will not focus the `<input/>` component\r\n\t * when the user selects a country from the list of countries.\r\n\t * This can be used to conform to the Web Content Accessibility Guidelines (WCAG).\r\n\t * Quote:\r\n\t * \"On input: Changing the setting of any user interface component\r\n\t *  does not automatically cause a change of context unless the user\r\n\t *  has been advised of the behaviour before using the component.\"\r\n\t */\r\n\tfocusInputOnCountrySelection: true\r\n}\r\n\r\nfunction withDefaultProps(props) {\r\n\tprops = { ...props }\r\n\r\n\tfor (const key in defaultProps) {\r\n\t\tif (props[key] === undefined) {\r\n\t\t\tprops[key] = defaultProps[key]\r\n\t\t}\r\n\t}\r\n\r\n\treturn props\r\n}\r\n\r\nexport default PhoneNumberInput\r\n\r\nfunction areEqualArrays(a, b) {\r\n\tif (a.length !== b.length) {\r\n\t\treturn false\r\n\t}\r\n\tlet i = 0\r\n\twhile (i < a.length) {\r\n\t\tif (a[i] !== b[i]) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn true\r\n}\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport defaultLabels from '../locale/en.json.js'\r\n\r\nimport {\r\n\tmetadata as metadataPropType,\r\n\tlabels as labelsPropType\r\n} from './PropTypes.js'\r\n\r\nimport PhoneInput from './PhoneInputWithCountry.js'\r\n\r\nexport function createPhoneInput(defaultMetadata) {\r\n\tconst PhoneInputDefault = React.forwardRef(({\r\n\t\tmetadata = defaultMetadata,\r\n\t\tlabels = defaultLabels,\r\n\t\t...rest\r\n\t}, ref) => (\r\n\t\t<PhoneInput\r\n\t\t\t{...rest}\r\n\t\t\tref={ref}\r\n\t\t\tmetadata={metadata}\r\n\t\t\tlabels={labels}\r\n\t\t/>\r\n\t))\r\n\r\n\tPhoneInputDefault.propTypes = {\r\n\t\tmetadata: metadataPropType,\r\n\t\tlabels: labelsPropType\r\n\t}\r\n\r\n\treturn PhoneInputDefault\r\n}\r\n\r\nexport default createPhoneInput()","import metadata from 'libphonenumber-js/min/metadata'\r\n\r\nimport {\r\n\tparsePhoneNumber as _parsePhoneNumber,\r\n\tformatPhoneNumber as _formatPhoneNumber,\r\n\tformatPhoneNumberIntl as _formatPhoneNumberIntl,\r\n\tisValidPhoneNumber as _isValidPhoneNumber,\r\n\tisPossiblePhoneNumber as _isPossiblePhoneNumber,\r\n\tgetCountries as _getCountries,\r\n\tgetCountryCallingCode as _getCountryCallingCode,\r\n\tisSupportedCountry as _isSupportedCountry\r\n} from '../core/index.js'\r\n\r\nimport { createPhoneInput } from '../modules/PhoneInputWithCountryDefault.js'\r\n\r\nfunction call(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}\r\n\r\nexport default createPhoneInput(metadata)\r\n\r\nexport function parsePhoneNumber() {\r\n\treturn call(_parsePhoneNumber, arguments)\r\n}\r\n\r\nexport function formatPhoneNumber() {\r\n\treturn call(_formatPhoneNumber, arguments)\r\n}\r\n\r\nexport function formatPhoneNumberIntl() {\r\n\treturn call(_formatPhoneNumberIntl, arguments)\r\n}\r\n\r\nexport function isValidPhoneNumber() {\r\n\treturn call(_isValidPhoneNumber, arguments)\r\n}\r\n\r\nexport function isPossiblePhoneNumber() {\r\n\treturn call(_isPossiblePhoneNumber, arguments)\r\n}\r\n\r\nexport function getCountries() {\r\n\treturn call(_getCountries, arguments)\r\n}\r\n\r\nexport function getCountryCallingCode() {\r\n\treturn call(_getCountryCallingCode, arguments)\r\n}\r\n\r\nexport function isSupportedCountry() {\r\n\treturn call(_isSupportedCountry, arguments)\r\n}","import type { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent, isVueViewModel } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray<T> = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\n  try {\n    // since we're at the outermost level, we don't provide a key\n    return visit('', input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: { [key: string]: any },\n  // Default Node.js REPL depth\n  depth: number = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize: number = 100 * 1024,\n): T {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n  key: string,\n  value: unknown,\n  depth: number = +Infinity,\n  maxProperties: number = +Infinity,\n  memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray<unknown> {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n  ) {\n    return value as Primitive;\n  }\n\n  const stringified = stringifyValue(key, value);\n\n  // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n  // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n  if (!stringified.startsWith('[object ')) {\n    return stringified;\n  }\n\n  // From here on, we can assert that `value` is either an object or an array.\n\n  // Do not normalize objects that we know have already been normalized. As a general rule, the\n  // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n  // have already been normalized.\n  if ((value as ObjOrArray<unknown>)['__sentry_skip_normalization__']) {\n    return value as ObjOrArray<unknown>;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] as number)\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 0) {\n    // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n    return stringified.replace('object ', '');\n  }\n\n  // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n  if (memoize(value)) {\n    return '[Circular ~]';\n  }\n\n  // If the value has a `toJSON` method, we call it to extract more information\n  const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      // We need to normalize the return value of `.toJSON()` in case it has circular references\n      return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch (err) {\n      // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n    }\n  }\n\n  // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n  // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n  // property/entry, and keep track of the number of items we add to it.\n  const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray<unknown>;\n  let numAdded = 0;\n\n  // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n  // properties are non-enumerable and otherwise would get missed.\n  const visitable = convertToPlainObject(value as ObjOrArray<unknown>);\n\n  for (const visitKey in visitable) {\n    // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = '[MaxProperties ~]';\n      break;\n    }\n\n    // Recursively visit all the child nodes\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\n  }\n\n  // Once we've visited all the branches, remove the parent from memo storage\n  unmemoize(value);\n\n  // Return accumulated values\n  return normalized;\n}\n\n/**\n * @deprecated This export will be removed in v8.\n */\nexport { visit as walk };\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n  key: unknown,\n  // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n  // our internal use, it'll do\n  value: Exclude<unknown, string | number | boolean | null>,\n): string {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n      return '[Domain]';\n    }\n\n    if (key === 'domainEmitter') {\n      return '[DomainEmitter]';\n    }\n\n    // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n    // which won't throw if they are not present.\n\n    if (typeof global !== 'undefined' && value === global) {\n      return '[Global]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window !== 'undefined' && value === window) {\n      return '[Window]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof document !== 'undefined' && value === document) {\n      return '[Document]';\n    }\n\n    if (isVueViewModel(value)) {\n      return '[VueViewModel]';\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && value !== value) {\n      return '[NaN]';\n    }\n\n    if (typeof value === 'function') {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n\n    if (typeof value === 'symbol') {\n      return `[${String(value)}]`;\n    }\n\n    // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n    if (typeof value === 'bigint') {\n      return `[BigInt: ${String(value)}]`;\n    }\n\n    // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n    // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n    // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n    // we can make sure that only plain objects come out that way.\n    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n  const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n  return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n  // eslint-disable-next-line no-bitwise\n  return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n  return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n  const escapedBase = basePath\n    // Backslash to forward\n    .replace(/\\\\/g, '/')\n    // Escape RegExp special characters\n    .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch (_Oo) {\n    // Sometime this breaks\n  }\n  return (\n    newUrl\n      .replace(/\\\\/g, '/')\n      .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n      // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n      .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n  );\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n  // avoid scope creep, the keys array can then be collected\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","let toSJISFunction\nconst CODEWORDS_COUNT = [\n  0, // Not used\n  26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n  404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n  1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n  2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param  {Number} version QR Code version\n * @return {Number}         size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n  if (!version) throw new Error('\"version\" cannot be null or undefined')\n  if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n  return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param  {Number} version QR Code version\n * @return {Number}         Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n  return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param  {Number} data Value to encode\n * @return {Number}      Encoded value\n */\nexports.getBCHDigit = function (data) {\n  let digit = 0\n\n  while (data !== 0) {\n    digit++\n    data >>>= 1\n  }\n\n  return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n  if (typeof f !== 'function') {\n    throw new Error('\"toSJISFunc\" is not a valid function.')\n  }\n\n  toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n  return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n  return toSJISFunction(kanji)\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n  id: 'Numeric',\n  bit: 1 << 0,\n  ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n *      26 alphabetic characters (A - Z),\n *   and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n  id: 'Alphanumeric',\n  bit: 1 << 1,\n  ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n  id: 'Byte',\n  bit: 1 << 2,\n  ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n  id: 'Kanji',\n  bit: 1 << 3,\n  ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n  bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param  {Mode}   mode    Data mode\n * @param  {Number} version QR Code version\n * @return {Number}         Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n  if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n  if (!VersionCheck.isValid(version)) {\n    throw new Error('Invalid version: ' + version)\n  }\n\n  if (version >= 1 && version < 10) return mode.ccBits[0]\n  else if (version < 27) return mode.ccBits[1]\n  return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param  {String} dataStr Input data string\n * @return {Mode}           Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n  if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n  else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n  else if (Regex.testKanji(dataStr)) return exports.KANJI\n  else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String}  Mode name\n */\nexports.toString = function toString (mode) {\n  if (mode && mode.id) return mode.id\n  throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param   {Mode}    mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n  return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param   {String} string Mode name\n * @returns {Mode}          Mode object\n */\nfunction fromString (string) {\n  if (typeof string !== 'string') {\n    throw new Error('Param is not a string')\n  }\n\n  const lcStr = string.toLowerCase()\n\n  switch (lcStr) {\n    case 'numeric':\n      return exports.NUMERIC\n    case 'alphanumeric':\n      return exports.ALPHANUMERIC\n    case 'kanji':\n      return exports.KANJI\n    case 'byte':\n      return exports.BYTE\n    default:\n      throw new Error('Unknown mode: ' + string)\n  }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param  {Mode|String} value        Encoding mode\n * @param  {Mode}        defaultValue Fallback value\n * @return {Mode}                     Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n  if (exports.isValid(value)) {\n    return value\n  }\n\n  try {\n    return fromString(value)\n  } catch (e) {\n    return defaultValue\n  }\n}\n","import { getMainCarrier, Hub } from '@sentry/hub';\nimport {\n  CustomSamplingContext,\n  Integration,\n  IntegrationClass,\n  Options,\n  SamplingContext,\n  TransactionContext,\n} from '@sentry/types';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n  const scope = this.getScope();\n  if (scope) {\n    const span = scope.getSpan();\n    if (span) {\n      return {\n        'sentry-trace': span.toTraceparent(),\n      };\n    }\n  }\n  return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample<T extends Transaction>(transaction: T, options: Options, samplingContext: SamplingContext): T {\n  // nothing to do if tracing is not enabled\n  if (!hasTracingEnabled(options)) {\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n  if (transaction.sampled !== undefined) {\n    transaction.setMetadata({\n      transactionSampling: { method: 'explicitly_set' },\n    });\n    return transaction;\n  }\n\n  // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n  // work; prefer the hook if so\n  let sampleRate;\n  if (typeof options.tracesSampler === 'function') {\n    sampleRate = options.tracesSampler(samplingContext);\n    transaction.setMetadata({\n      transactionSampling: {\n        method: 'client_sampler',\n        // cast to number in case it's a boolean\n        rate: Number(sampleRate),\n      },\n    });\n  } else if (samplingContext.parentSampled !== undefined) {\n    sampleRate = samplingContext.parentSampled;\n    transaction.setMetadata({\n      transactionSampling: { method: 'inheritance' },\n    });\n  } else {\n    sampleRate = options.tracesSampleRate;\n    transaction.setMetadata({\n      transactionSampling: {\n        method: 'client_rate',\n        // cast to number in case it's a boolean\n        rate: Number(sampleRate),\n      },\n    });\n  }\n\n  // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n  // only valid values are booleans or numbers between 0 and 1.)\n  if (!isValidSampleRate(sampleRate)) {\n    IS_DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n  if (!sampleRate) {\n    IS_DEBUG_BUILD &&\n      logger.log(\n        `[Tracing] Discarding transaction because ${\n          typeof options.tracesSampler === 'function'\n            ? 'tracesSampler returned 0 or false'\n            : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n        }`,\n      );\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n  // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n  transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n  // if we're not going to keep it, we're done\n  if (!transaction.sampled) {\n    IS_DEBUG_BUILD &&\n      logger.log(\n        `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n          sampleRate,\n        )})`,\n      );\n    return transaction;\n  }\n\n  IS_DEBUG_BUILD && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n  return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n  // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n    IS_DEBUG_BUILD &&\n      logger.warn(\n        `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n          rate,\n        )} of type ${JSON.stringify(typeof rate)}.`,\n      );\n    return false;\n  }\n\n  // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n  if (rate < 0 || rate > 1) {\n    IS_DEBUG_BUILD &&\n      logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n    return false;\n  }\n  return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n  this: Hub,\n  transactionContext: TransactionContext,\n  customSamplingContext?: CustomSamplingContext,\n): Transaction {\n  const client = this.getClient();\n  const options = (client && client.getOptions()) || {};\n\n  let transaction = new Transaction(transactionContext, this);\n  transaction = sample(transaction, options, {\n    parentSampled: transactionContext.parentSampled,\n    transactionContext,\n    ...customSamplingContext,\n  });\n  if (transaction.sampled) {\n    transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n  }\n  return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n  hub: Hub,\n  transactionContext: TransactionContext,\n  idleTimeout?: number,\n  onScope?: boolean,\n  customSamplingContext?: CustomSamplingContext,\n): IdleTransaction {\n  const client = hub.getClient();\n  const options = (client && client.getOptions()) || {};\n\n  let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, onScope);\n  transaction = sample(transaction, options, {\n    parentSampled: transactionContext.parentSampled,\n    transactionContext,\n    ...customSamplingContext,\n  });\n  if (transaction.sampled) {\n    transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n  }\n  return transaction;\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n  const carrier = getMainCarrier();\n  if (!carrier.__SENTRY__) {\n    return;\n  }\n  carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n  if (!carrier.__SENTRY__.extensions.startTransaction) {\n    carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n  }\n  if (!carrier.__SENTRY__.extensions.traceHeaders) {\n    carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n  }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n  const carrier = getMainCarrier();\n  if (!carrier.__SENTRY__) {\n    return;\n  }\n\n  const packageToIntegrationMapping: Record<string, () => Integration> = {\n    mongodb() {\n      const integration = dynamicRequire(module, './integrations/node/mongo') as {\n        Mongo: IntegrationClass<Integration>;\n      };\n      return new integration.Mongo();\n    },\n    mongoose() {\n      const integration = dynamicRequire(module, './integrations/node/mongo') as {\n        Mongo: IntegrationClass<Integration>;\n      };\n      return new integration.Mongo({ mongoose: true });\n    },\n    mysql() {\n      const integration = dynamicRequire(module, './integrations/node/mysql') as {\n        Mysql: IntegrationClass<Integration>;\n      };\n      return new integration.Mysql();\n    },\n    pg() {\n      const integration = dynamicRequire(module, './integrations/node/postgres') as {\n        Postgres: IntegrationClass<Integration>;\n      };\n      return new integration.Postgres();\n    },\n  };\n\n  const mappedPackages = Object.keys(packageToIntegrationMapping)\n    .filter(moduleName => !!loadModule(moduleName))\n    .map(pkg => {\n      try {\n        return packageToIntegrationMapping[pkg]();\n      } catch (e) {\n        return undefined;\n      }\n    })\n    .filter(p => p) as Integration[];\n\n  if (mappedPackages.length > 0) {\n    carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n  }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n  _addTracingExtensions();\n\n  // Detect and automatically load specified integrations.\n  if (isNodeEnv()) {\n    _autoloadDatabaseIntegrations();\n  }\n\n  // If an error happens globally, we should make sure transaction status is set to error.\n  registerErrorInstrumentation();\n}\n","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nexport function isFunction(x) {\n    return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nexport function hostReportError(err) {\n    setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","/* eslint-disable max-lines */\nimport {\n  Breadcrumb,\n  CaptureContext,\n  Context,\n  Contexts,\n  Event,\n  EventHint,\n  EventProcessor,\n  Extra,\n  Extras,\n  Primitive,\n  RequestSession,\n  Scope as ScopeInterface,\n  ScopeContext,\n  Severity,\n  Span,\n  Transaction,\n  User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalSingleton, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n  /** Flag if notifying is happening. */\n  protected _notifyingListeners: boolean = false;\n\n  /** Callback for client to receive scope changes. */\n  protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n  /** Callback list that will be called after {@link applyToEvent}. */\n  protected _eventProcessors: EventProcessor[] = [];\n\n  /** Array of breadcrumbs. */\n  protected _breadcrumbs: Breadcrumb[] = [];\n\n  /** User */\n  protected _user: User = {};\n\n  /** Tags */\n  protected _tags: { [key: string]: Primitive } = {};\n\n  /** Extra */\n  protected _extra: Extras = {};\n\n  /** Contexts */\n  protected _contexts: Contexts = {};\n\n  /** Fingerprint */\n  protected _fingerprint?: string[];\n\n  /** Severity */\n  protected _level?: Severity;\n\n  /** Transaction Name */\n  protected _transactionName?: string;\n\n  /** Span */\n  protected _span?: Span;\n\n  /** Session */\n  protected _session?: Session;\n\n  /** Request Mode Session Status */\n  protected _requestSession?: RequestSession;\n\n  /**\n   * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n   * sent to Sentry\n   */\n  protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n  /**\n   * Inherit values from the parent scope.\n   * @param scope to clone.\n   */\n  public static clone(scope?: Scope): Scope {\n    const newScope = new Scope();\n    if (scope) {\n      newScope._breadcrumbs = [...scope._breadcrumbs];\n      newScope._tags = { ...scope._tags };\n      newScope._extra = { ...scope._extra };\n      newScope._contexts = { ...scope._contexts };\n      newScope._user = scope._user;\n      newScope._level = scope._level;\n      newScope._span = scope._span;\n      newScope._session = scope._session;\n      newScope._transactionName = scope._transactionName;\n      newScope._fingerprint = scope._fingerprint;\n      newScope._eventProcessors = [...scope._eventProcessors];\n      newScope._requestSession = scope._requestSession;\n    }\n    return newScope;\n  }\n\n  /**\n   * Add internal on change listener. Used for sub SDKs that need to store the scope.\n   * @hidden\n   */\n  public addScopeListener(callback: (scope: Scope) => void): void {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addEventProcessor(callback: EventProcessor): this {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setUser(user: User | null): this {\n    this._user = user || {};\n    if (this._session) {\n      this._session.update({ user });\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getUser(): User | undefined {\n    return this._user;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getRequestSession(): RequestSession | undefined {\n    return this._requestSession;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setRequestSession(requestSession?: RequestSession): this {\n    this._requestSession = requestSession;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTags(tags: { [key: string]: Primitive }): this {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTag(key: string, value: Primitive): this {\n    this._tags = { ...this._tags, [key]: value };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtras(extras: Extras): this {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtra(key: string, extra: Extra): this {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setFingerprint(fingerprint: string[]): this {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setLevel(level: Severity): this {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTransactionName(name?: string): this {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Can be removed in major version.\n   * @deprecated in favor of {@link this.setTransactionName}\n   */\n  public setTransaction(name?: string): this {\n    return this.setTransactionName(name);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setContext(key: string, context: Context | null): this {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts = { ...this._contexts, [key]: context };\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setSpan(span?: Span): this {\n    this._span = span;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getSpan(): Span | undefined {\n    return this._span;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTransaction(): Transaction | undefined {\n    // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n    // have a pointer to the currently-active transaction.\n    const span = this.getSpan();\n    return span && span.transaction;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setSession(session?: Session): this {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getSession(): Session | undefined {\n    return this._session;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public update(captureContext?: CaptureContext): this {\n    if (!captureContext) {\n      return this;\n    }\n\n    if (typeof captureContext === 'function') {\n      const updatedScope = (captureContext as <T>(scope: T) => T)(this);\n      return updatedScope instanceof Scope ? updatedScope : this;\n    }\n\n    if (captureContext instanceof Scope) {\n      this._tags = { ...this._tags, ...captureContext._tags };\n      this._extra = { ...this._extra, ...captureContext._extra };\n      this._contexts = { ...this._contexts, ...captureContext._contexts };\n      if (captureContext._user && Object.keys(captureContext._user).length) {\n        this._user = captureContext._user;\n      }\n      if (captureContext._level) {\n        this._level = captureContext._level;\n      }\n      if (captureContext._fingerprint) {\n        this._fingerprint = captureContext._fingerprint;\n      }\n      if (captureContext._requestSession) {\n        this._requestSession = captureContext._requestSession;\n      }\n    } else if (isPlainObject(captureContext)) {\n      // eslint-disable-next-line no-param-reassign\n      captureContext = captureContext as ScopeContext;\n      this._tags = { ...this._tags, ...captureContext.tags };\n      this._extra = { ...this._extra, ...captureContext.extra };\n      this._contexts = { ...this._contexts, ...captureContext.contexts };\n      if (captureContext.user) {\n        this._user = captureContext.user;\n      }\n      if (captureContext.level) {\n        this._level = captureContext.level;\n      }\n      if (captureContext.fingerprint) {\n        this._fingerprint = captureContext.fingerprint;\n      }\n      if (captureContext.requestSession) {\n        this._requestSession = captureContext.requestSession;\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clear(): this {\n    this._breadcrumbs = [];\n    this._tags = {};\n    this._extra = {};\n    this._user = {};\n    this._contexts = {};\n    this._level = undefined;\n    this._transactionName = undefined;\n    this._fingerprint = undefined;\n    this._requestSession = undefined;\n    this._span = undefined;\n    this._session = undefined;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n    // No data has been changed, so don't notify scope listeners\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n    };\n    this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clearBreadcrumbs(): this {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Applies the current context and fingerprint to the event.\n   * Note that breadcrumbs will be added by the client.\n   * Also if the event has already breadcrumbs on it, we do not merge them.\n   * @param event Event\n   * @param hint May contain additional information about the original exception.\n   * @hidden\n   */\n  public applyToEvent(event: Event, hint?: EventHint): PromiseLike<Event | null> {\n    if (this._extra && Object.keys(this._extra).length) {\n      event.extra = { ...this._extra, ...event.extra };\n    }\n    if (this._tags && Object.keys(this._tags).length) {\n      event.tags = { ...this._tags, ...event.tags };\n    }\n    if (this._user && Object.keys(this._user).length) {\n      event.user = { ...this._user, ...event.user };\n    }\n    if (this._contexts && Object.keys(this._contexts).length) {\n      event.contexts = { ...this._contexts, ...event.contexts };\n    }\n    if (this._level) {\n      event.level = this._level;\n    }\n    if (this._transactionName) {\n      event.transaction = this._transactionName;\n    }\n    // We want to set the trace context for normal events only if there isn't already\n    // a trace context on the event. There is a product feature in place where we link\n    // errors with transaction and it relies on that.\n    if (this._span) {\n      event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n      const transactionName = this._span.transaction && this._span.transaction.name;\n      if (transactionName) {\n        event.tags = { transaction: transactionName, ...event.tags };\n      }\n    }\n\n    this._applyFingerprint(event);\n\n    event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n    event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n    event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n    return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry\n   */\n  public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n    this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n    return this;\n  }\n\n  /**\n   * This will be called after {@link applyToEvent} is finished.\n   */\n  protected _notifyEventProcessors(\n    processors: EventProcessor[],\n    event: Event | null,\n    hint?: EventHint,\n    index: number = 0,\n  ): PromiseLike<Event | null> {\n    return new SyncPromise<Event | null>((resolve, reject) => {\n      const processor = processors[index];\n      if (event === null || typeof processor !== 'function') {\n        resolve(event);\n      } else {\n        const result = processor({ ...event }, hint) as Event | null;\n        if (isThenable(result)) {\n          void result\n            .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n            .then(null, reject);\n        } else {\n          void this._notifyEventProcessors(processors, result, hint, index + 1)\n            .then(resolve)\n            .then(null, reject);\n        }\n      }\n    });\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n  protected _notifyScopeListeners(): void {\n    // We need this check for this._notifyingListeners to be able to work on scope during updates\n    // If this check is not here we'll produce endless recursion when something is done with the scope\n    // during the callback.\n    if (!this._notifyingListeners) {\n      this._notifyingListeners = true;\n      this._scopeListeners.forEach(callback => {\n        callback(this);\n      });\n      this._notifyingListeners = false;\n    }\n  }\n\n  /**\n   * Applies fingerprint from the scope to the event if there's one,\n   * uses message if there's one instead or get rid of empty fingerprint\n   */\n  private _applyFingerprint(event: Event): void {\n    // Make sure it's an array first and we actually have something in place\n    event.fingerprint = event.fingerprint\n      ? Array.isArray(event.fingerprint)\n        ? event.fingerprint\n        : [event.fingerprint]\n      : [];\n\n    // If we have something on the scope, then merge it with event\n    if (this._fingerprint) {\n      event.fingerprint = event.fingerprint.concat(this._fingerprint);\n    }\n\n    // If we have no data at all, remove empty array default\n    if (event.fingerprint && !event.fingerprint.length) {\n      delete event.fingerprint;\n    }\n  }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n  return getGlobalSingleton<EventProcessor[]>('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n  getGlobalEventProcessors().push(callback);\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n  throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n  module.exports = randomBytes\n} else {\n  module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n  // phantomjs needs to throw\n  if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n  var bytes = Buffer.allocUnsafe(size)\n\n  if (size > 0) {  // getRandomValues fails on IE if size == 0\n    if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n      // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n      for (var generated = 0; generated < size; generated += MAX_BYTES) {\n        // buffer.slice automatically checks if the end is past the end of\n        // the buffer so we don't have to here\n        crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n      }\n    } else {\n      crypto.getRandomValues(bytes)\n    }\n  }\n\n  if (typeof cb === 'function') {\n    return process.nextTick(function () {\n      cb(null, bytes)\n    })\n  }\n\n  return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n  this._block = Buffer.alloc(blockSize)\n  this._finalSize = finalSize\n  this._blockSize = blockSize\n  this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n  if (typeof data === 'string') {\n    enc = enc || 'utf8'\n    data = Buffer.from(data, enc)\n  }\n\n  var block = this._block\n  var blockSize = this._blockSize\n  var length = data.length\n  var accum = this._len\n\n  for (var offset = 0; offset < length;) {\n    var assigned = accum % blockSize\n    var remainder = Math.min(length - offset, blockSize - assigned)\n\n    for (var i = 0; i < remainder; i++) {\n      block[assigned + i] = data[offset + i]\n    }\n\n    accum += remainder\n    offset += remainder\n\n    if ((accum % blockSize) === 0) {\n      this._update(block)\n    }\n  }\n\n  this._len += length\n  return this\n}\n\nHash.prototype.digest = function (enc) {\n  var rem = this._len % this._blockSize\n\n  this._block[rem] = 0x80\n\n  // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n  // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n  this._block.fill(0, rem + 1)\n\n  if (rem >= this._finalSize) {\n    this._update(this._block)\n    this._block.fill(0)\n  }\n\n  var bits = this._len * 8\n\n  // uint32\n  if (bits <= 0xffffffff) {\n    this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n  // uint64\n  } else {\n    var lowBits = (bits & 0xffffffff) >>> 0\n    var highBits = (bits - lowBits) / 0x100000000\n\n    this._block.writeUInt32BE(highBits, this._blockSize - 8)\n    this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n  }\n\n  this._update(this._block)\n  var hash = this._hash()\n\n  return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n  throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports._bind = _bind;\nexports.createReducer = createReducer;\nexports.guid = guid;\nexports.isBrowser = isBrowser;\nexports.keyCode = keyCode;\nexports.mapToToastrMessage = mapToToastrMessage;\nexports.onCSSTransitionEnd = onCSSTransitionEnd;\nexports.preventDuplication = preventDuplication;\nexports.toastrWarn = toastrWarn;\nexports.updateConfig = updateConfig;\n\nvar _config = _interopRequireDefault(require(\"./config\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction whichAnimationEvent() {\n  var t;\n  var el = document.createElement('fakeelement');\n  var transitions = {\n    animation: 'animationend',\n    oanimation: 'oanimationend',\n    MSAnimation: 'MSAnimationEnd',\n    webkitAnimation: 'webkitAnimationEnd'\n  };\n\n  for (t in transitions) {\n    if (el.style[t] !== undefined) {\n      return transitions[t];\n    }\n  }\n}\n\nfunction createNewEvent(eventName) {\n  var event;\n\n  if (typeof Event === 'function') {\n    event = new Event(eventName);\n  } else {\n    event = document.createEvent('Event');\n    event.initEvent(eventName, true, true);\n  }\n\n  return event;\n}\n\nfunction isString(obj) {\n  return typeof obj == 'string';\n}\n\nfunction toastrWarn(message) {\n  if (process.env.NODE_ENV === 'production') {\n    return null;\n  }\n\n  console.warn(\"[react-redux-toastr] \".concat(message));\n}\n\nfunction createReducer(initialState, fnMap) {\n  return function () {\n    var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n\n    var _ref = arguments.length > 1 ? arguments[1] : undefined,\n        type = _ref.type,\n        payload = _ref.payload;\n\n    var handle = fnMap[type];\n    return handle ? handle(state, payload) : state;\n  };\n}\n\nfunction isBrowser() {\n  return typeof window !== 'undefined';\n}\n\nfunction keyCode(e) {\n  return e.which ? e.which : e.keyCode;\n}\n\nfunction mapToToastrMessage(type, array) {\n  var obj = {};\n  obj.type = type;\n  obj.position = _config[\"default\"].position;\n  obj.options = array.filter(function (item) {\n    return _typeof(item) == 'object';\n  })[0] || {};\n\n  if (obj.options.hasOwnProperty('position')) {\n    obj.position = obj.options.position;\n  }\n\n  if (!obj.options.hasOwnProperty('removeOnHover')) {\n    obj.options.removeOnHover = true;\n\n    if (type === 'message') {\n      obj.options.removeOnHover = false;\n    }\n  }\n\n  if (!obj.options.hasOwnProperty('showCloseButton')) {\n    obj.options.showCloseButton = true;\n  }\n\n  if (type === 'message' && !obj.options.hasOwnProperty('timeOut')) {\n    obj.options.timeOut = 0;\n  }\n\n  if (isString(array[0]) && isString(array[1])) {\n    obj.title = array[0];\n    obj.message = array[1];\n  } else if (isString(array[0]) && !isString(array[1])) {\n    obj.title = array[0];\n  } else {\n    obj.message = array[0];\n  }\n\n  return obj;\n}\n\nfunction guid() {\n  var r = function r() {\n    return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n  };\n\n  return r() + r() + r() + '-' + r() + '_' + r() + '-' + r() + '_' + r() + r() + r();\n}\n\nfunction onCSSTransitionEnd(node, callback) {\n  if (!node) {\n    return;\n  } // if css animation is failed - dispatch event manually\n\n\n  var animationEnd = whichAnimationEvent();\n  var timeoutId = setTimeout(function () {\n    var e = createNewEvent(animationEnd);\n    toastrWarn('The toastr box was closed automatically, please check \\'transitionOut\\' prop value');\n    node.dispatchEvent(e);\n  }, _config[\"default\"].maxAnimationDelay);\n\n  var runOnce = function runOnce(e) {\n    clearTimeout(timeoutId); // stopPropagation is not working in IE11 and Edge, the transitionend from the Button.js is waiting\n    // on the confirm animation to end first and not the Button.js\n\n    e.stopPropagation();\n    node.removeEventListener(animationEnd, runOnce);\n    callback && callback(e);\n  };\n\n  node.addEventListener(animationEnd, runOnce);\n}\n\nfunction preventDuplication(currentData, newObjec) {\n  var hasDuplication = false;\n  currentData.forEach(function (item) {\n    // If the toastr options implicitly specify not to prevent duplicates then skip\n    if (item.options && item.options.preventDuplicates === false) return; // Because the toastr has a unic id we will check by the title and message.\n\n    if (item.title === newObjec.title && item.message === newObjec.message && item.type === newObjec.type) {\n      hasDuplication = true;\n    }\n  });\n  return hasDuplication;\n}\n\nfunction updateConfig(obj) {\n  Object.keys(_config[\"default\"]).forEach(function (key) {\n    if (obj.hasOwnProperty(key)) {\n      _config[\"default\"][key] = obj[key];\n    }\n  });\n}\n\nfunction _bind(strinOrAray, scope) {\n  var array = strinOrAray;\n\n  if (!Array.isArray(strinOrAray)) {\n    array = strinOrAray.split(' ');\n  }\n\n  return array.map(function (item) {\n    return scope[item] = scope[item].bind(scope);\n  });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clamp = clamp;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = exports.safePreventDefault = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction 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; }\n\nfunction _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; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction clamp(number, lowerBound, upperBound) {\n  return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n  var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n  if (!passiveEvents.includes(event._reactName)) {\n    event.preventDefault();\n  }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n  var onDemandSlides = [];\n  var startIndex = lazyStartIndex(spec);\n  var endIndex = lazyEndIndex(spec);\n\n  for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n    if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n      onDemandSlides.push(slideIndex);\n    }\n  }\n\n  return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n  var requiredSlides = [];\n  var startIndex = lazyStartIndex(spec);\n  var endIndex = lazyEndIndex(spec);\n\n  for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n    requiredSlides.push(slideIndex);\n  }\n\n  return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n  return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n  return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n  return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n  return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n  return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n  return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n  var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var xDist, yDist, r, swipeAngle;\n  xDist = touchObject.startX - touchObject.curX;\n  yDist = touchObject.startY - touchObject.curY;\n  r = Math.atan2(yDist, xDist);\n  swipeAngle = Math.round(r * 180 / Math.PI);\n\n  if (swipeAngle < 0) {\n    swipeAngle = 360 - Math.abs(swipeAngle);\n  }\n\n  if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n    return \"left\";\n  }\n\n  if (swipeAngle >= 135 && swipeAngle <= 225) {\n    return \"right\";\n  }\n\n  if (verticalSwiping === true) {\n    if (swipeAngle >= 35 && swipeAngle <= 135) {\n      return \"up\";\n    } else {\n      return \"down\";\n    }\n  }\n\n  return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n  var canGo = true;\n\n  if (!spec.infinite) {\n    if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n      canGo = false;\n    } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n      canGo = false;\n    }\n  }\n\n  return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n  var newObject = {};\n  keys.forEach(function (key) {\n    return newObject[key] = spec[key];\n  });\n  return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n  // spec also contains listRef, trackRef\n  var slideCount = _react[\"default\"].Children.count(spec.children);\n\n  var listNode = spec.listRef;\n  var listWidth = Math.ceil(getWidth(listNode));\n  var trackNode = spec.trackRef && spec.trackRef.node;\n  var trackWidth = Math.ceil(getWidth(trackNode));\n  var slideWidth;\n\n  if (!spec.vertical) {\n    var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n    if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n      centerPaddingAdj *= listWidth / 100;\n    }\n\n    slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n  } else {\n    slideWidth = listWidth;\n  }\n\n  var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n  var listHeight = slideHeight * spec.slidesToShow;\n  var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n  if (spec.rtl && spec.currentSlide === undefined) {\n    currentSlide = slideCount - 1 - spec.initialSlide;\n  }\n\n  var lazyLoadedList = spec.lazyLoadedList || [];\n  var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n    currentSlide: currentSlide,\n    lazyLoadedList: lazyLoadedList\n  }));\n  lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n  var state = {\n    slideCount: slideCount,\n    slideWidth: slideWidth,\n    listWidth: listWidth,\n    trackWidth: trackWidth,\n    currentSlide: currentSlide,\n    slideHeight: slideHeight,\n    listHeight: listHeight,\n    lazyLoadedList: lazyLoadedList\n  };\n\n  if (spec.autoplaying === null && spec.autoplay) {\n    state[\"autoplaying\"] = \"playing\";\n  }\n\n  return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n  var waitForAnimate = spec.waitForAnimate,\n      animating = spec.animating,\n      fade = spec.fade,\n      infinite = spec.infinite,\n      index = spec.index,\n      slideCount = spec.slideCount,\n      lazyLoad = spec.lazyLoad,\n      currentSlide = spec.currentSlide,\n      centerMode = spec.centerMode,\n      slidesToScroll = spec.slidesToScroll,\n      slidesToShow = spec.slidesToShow,\n      useCSS = spec.useCSS;\n  var lazyLoadedList = spec.lazyLoadedList;\n  if (waitForAnimate && animating) return {};\n  var animationSlide = index,\n      finalSlide,\n      animationLeft,\n      finalLeft;\n  var state = {},\n      nextState = {};\n  var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n  if (fade) {\n    if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n    if (index < 0) {\n      animationSlide = index + slideCount;\n    } else if (index >= slideCount) {\n      animationSlide = index - slideCount;\n    }\n\n    if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n      lazyLoadedList = lazyLoadedList.concat(animationSlide);\n    }\n\n    state = {\n      animating: true,\n      currentSlide: animationSlide,\n      lazyLoadedList: lazyLoadedList,\n      targetSlide: animationSlide\n    };\n    nextState = {\n      animating: false,\n      targetSlide: animationSlide\n    };\n  } else {\n    finalSlide = animationSlide;\n\n    if (animationSlide < 0) {\n      finalSlide = animationSlide + slideCount;\n      if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n    } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n      animationSlide = finalSlide = currentSlide;\n    } else if (centerMode && animationSlide >= slideCount) {\n      animationSlide = infinite ? slideCount : slideCount - 1;\n      finalSlide = infinite ? 0 : slideCount - 1;\n    } else if (animationSlide >= slideCount) {\n      finalSlide = animationSlide - slideCount;\n      if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n    }\n\n    if (!infinite && animationSlide + slidesToShow >= slideCount) {\n      finalSlide = slideCount - slidesToShow;\n    }\n\n    animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n      slideIndex: animationSlide\n    }));\n    finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n      slideIndex: finalSlide\n    }));\n\n    if (!infinite) {\n      if (animationLeft === finalLeft) animationSlide = finalSlide;\n      animationLeft = finalLeft;\n    }\n\n    if (lazyLoad) {\n      lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n        currentSlide: animationSlide\n      })));\n    }\n\n    if (!useCSS) {\n      state = {\n        currentSlide: finalSlide,\n        trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n          left: finalLeft\n        })),\n        lazyLoadedList: lazyLoadedList,\n        targetSlide: targetSlide\n      };\n    } else {\n      state = {\n        animating: true,\n        currentSlide: finalSlide,\n        trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n          left: animationLeft\n        })),\n        lazyLoadedList: lazyLoadedList,\n        targetSlide: targetSlide\n      };\n      nextState = {\n        animating: false,\n        currentSlide: finalSlide,\n        trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n          left: finalLeft\n        })),\n        swipeLeft: null,\n        targetSlide: targetSlide\n      };\n    }\n  }\n\n  return {\n    state: state,\n    nextState: nextState\n  };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n  var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n  var slidesToScroll = spec.slidesToScroll,\n      slidesToShow = spec.slidesToShow,\n      slideCount = spec.slideCount,\n      currentSlide = spec.currentSlide,\n      previousTargetSlide = spec.targetSlide,\n      lazyLoad = spec.lazyLoad,\n      infinite = spec.infinite;\n  unevenOffset = slideCount % slidesToScroll !== 0;\n  indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n  if (options.message === \"previous\") {\n    slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n    targetSlide = currentSlide - slideOffset;\n\n    if (lazyLoad && !infinite) {\n      previousInt = currentSlide - slideOffset;\n      targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n    }\n\n    if (!infinite) {\n      targetSlide = previousTargetSlide - slidesToScroll;\n    }\n  } else if (options.message === \"next\") {\n    slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n    targetSlide = currentSlide + slideOffset;\n\n    if (lazyLoad && !infinite) {\n      targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n    }\n\n    if (!infinite) {\n      targetSlide = previousTargetSlide + slidesToScroll;\n    }\n  } else if (options.message === \"dots\") {\n    // Click on dots\n    targetSlide = options.index * options.slidesToScroll;\n  } else if (options.message === \"children\") {\n    // Click on the slides\n    targetSlide = options.index;\n\n    if (infinite) {\n      var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n        targetSlide: targetSlide\n      }));\n\n      if (targetSlide > options.currentSlide && direction === \"left\") {\n        targetSlide = targetSlide - slideCount;\n      } else if (targetSlide < options.currentSlide && direction === \"right\") {\n        targetSlide = targetSlide + slideCount;\n      }\n    }\n  } else if (options.message === \"index\") {\n    targetSlide = Number(options.index);\n  }\n\n  return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n  if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n  if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n  if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n  return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n  e.target.tagName === \"IMG\" && safePreventDefault(e);\n  if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n  return {\n    dragging: true,\n    touchObject: {\n      startX: e.touches ? e.touches[0].pageX : e.clientX,\n      startY: e.touches ? e.touches[0].pageY : e.clientY,\n      curX: e.touches ? e.touches[0].pageX : e.clientX,\n      curY: e.touches ? e.touches[0].pageY : e.clientY\n    }\n  };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n  // spec also contains, trackRef and slideIndex\n  var scrolling = spec.scrolling,\n      animating = spec.animating,\n      vertical = spec.vertical,\n      swipeToSlide = spec.swipeToSlide,\n      verticalSwiping = spec.verticalSwiping,\n      rtl = spec.rtl,\n      currentSlide = spec.currentSlide,\n      edgeFriction = spec.edgeFriction,\n      edgeDragged = spec.edgeDragged,\n      onEdge = spec.onEdge,\n      swiped = spec.swiped,\n      swiping = spec.swiping,\n      slideCount = spec.slideCount,\n      slidesToScroll = spec.slidesToScroll,\n      infinite = spec.infinite,\n      touchObject = spec.touchObject,\n      swipeEvent = spec.swipeEvent,\n      listHeight = spec.listHeight,\n      listWidth = spec.listWidth;\n  if (scrolling) return;\n  if (animating) return safePreventDefault(e);\n  if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n  var swipeLeft,\n      state = {};\n  var curLeft = getTrackLeft(spec);\n  touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n  touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n  touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n  var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n  if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n    return {\n      scrolling: true\n    };\n  }\n\n  if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n  var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n  if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n  var dotCount = Math.ceil(slideCount / slidesToScroll);\n  var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n  var touchSwipeLength = touchObject.swipeLength;\n\n  if (!infinite) {\n    if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n      touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n      if (edgeDragged === false && onEdge) {\n        onEdge(swipeDirection);\n        state[\"edgeDragged\"] = true;\n      }\n    }\n  }\n\n  if (!swiped && swipeEvent) {\n    swipeEvent(swipeDirection);\n    state[\"swiped\"] = true;\n  }\n\n  if (!vertical) {\n    if (!rtl) {\n      swipeLeft = curLeft + touchSwipeLength * positionOffset;\n    } else {\n      swipeLeft = curLeft - touchSwipeLength * positionOffset;\n    }\n  } else {\n    swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n  }\n\n  if (verticalSwiping) {\n    swipeLeft = curLeft + touchSwipeLength * positionOffset;\n  }\n\n  state = _objectSpread(_objectSpread({}, state), {}, {\n    touchObject: touchObject,\n    swipeLeft: swipeLeft,\n    trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n      left: swipeLeft\n    }))\n  });\n\n  if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n    return state;\n  }\n\n  if (touchObject.swipeLength > 10) {\n    state[\"swiping\"] = true;\n    safePreventDefault(e);\n  }\n\n  return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n  var dragging = spec.dragging,\n      swipe = spec.swipe,\n      touchObject = spec.touchObject,\n      listWidth = spec.listWidth,\n      touchThreshold = spec.touchThreshold,\n      verticalSwiping = spec.verticalSwiping,\n      listHeight = spec.listHeight,\n      swipeToSlide = spec.swipeToSlide,\n      scrolling = spec.scrolling,\n      onSwipe = spec.onSwipe,\n      targetSlide = spec.targetSlide,\n      currentSlide = spec.currentSlide,\n      infinite = spec.infinite;\n\n  if (!dragging) {\n    if (swipe) safePreventDefault(e);\n    return {};\n  }\n\n  var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n  var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n  var state = {\n    dragging: false,\n    edgeDragged: false,\n    scrolling: false,\n    swiping: false,\n    swiped: false,\n    swipeLeft: null,\n    touchObject: {}\n  };\n\n  if (scrolling) {\n    return state;\n  }\n\n  if (!touchObject.swipeLength) {\n    return state;\n  }\n\n  if (touchObject.swipeLength > minSwipe) {\n    safePreventDefault(e);\n\n    if (onSwipe) {\n      onSwipe(swipeDirection);\n    }\n\n    var slideCount, newSlide;\n    var activeSlide = infinite ? currentSlide : targetSlide;\n\n    switch (swipeDirection) {\n      case \"left\":\n      case \"up\":\n        newSlide = activeSlide + getSlideCount(spec);\n        slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n        state[\"currentDirection\"] = 0;\n        break;\n\n      case \"right\":\n      case \"down\":\n        newSlide = activeSlide - getSlideCount(spec);\n        slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n        state[\"currentDirection\"] = 1;\n        break;\n\n      default:\n        slideCount = activeSlide;\n    }\n\n    state[\"triggerSlideHandler\"] = slideCount;\n  } else {\n    // Adjust the track back to it's original position.\n    var currentLeft = getTrackLeft(spec);\n    state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n      left: currentLeft\n    }));\n  }\n\n  return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n  var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n  var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n  var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n  var indexes = [];\n\n  while (breakpoint < max) {\n    indexes.push(breakpoint);\n    breakpoint = counter + spec.slidesToScroll;\n    counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n  }\n\n  return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n  var navigables = getNavigableIndexes(spec);\n  var prevNavigable = 0;\n\n  if (index > navigables[navigables.length - 1]) {\n    index = navigables[navigables.length - 1];\n  } else {\n    for (var n in navigables) {\n      if (index < navigables[n]) {\n        index = prevNavigable;\n        break;\n      }\n\n      prevNavigable = navigables[n];\n    }\n  }\n\n  return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n  var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n  if (spec.swipeToSlide) {\n    var swipedSlide;\n    var slickList = spec.listRef;\n    var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n    Array.from(slides).every(function (slide) {\n      if (!spec.vertical) {\n        if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n          swipedSlide = slide;\n          return false;\n        }\n      } else {\n        if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n          swipedSlide = slide;\n          return false;\n        }\n      }\n\n      return true;\n    });\n\n    if (!swipedSlide) {\n      return 0;\n    }\n\n    var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n    var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n    return slidesTraversed;\n  } else {\n    return spec.slidesToScroll;\n  }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n  return keysArray.reduce(function (value, key) {\n    return value && spec.hasOwnProperty(key);\n  }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n  checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n  var trackWidth, trackHeight;\n  var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n  if (!spec.vertical) {\n    trackWidth = getTotalSlides(spec) * spec.slideWidth;\n  } else {\n    trackHeight = trackChildren * spec.slideHeight;\n  }\n\n  var style = {\n    opacity: 1,\n    transition: \"\",\n    WebkitTransition: \"\"\n  };\n\n  if (spec.useTransform) {\n    var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n    var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n    var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n    style = _objectSpread(_objectSpread({}, style), {}, {\n      WebkitTransform: WebkitTransform,\n      transform: transform,\n      msTransform: msTransform\n    });\n  } else {\n    if (spec.vertical) {\n      style[\"top\"] = spec.left;\n    } else {\n      style[\"left\"] = spec.left;\n    }\n  }\n\n  if (spec.fade) style = {\n    opacity: 1\n  };\n  if (trackWidth) style.width = trackWidth;\n  if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n  if (window && !window.addEventListener && window.attachEvent) {\n    if (!spec.vertical) {\n      style.marginLeft = spec.left + \"px\";\n    } else {\n      style.marginTop = spec.left + \"px\";\n    }\n  }\n\n  return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n  checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n  var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n  if (spec.useTransform) {\n    style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n    style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n  } else {\n    if (spec.vertical) {\n      style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n    } else {\n      style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n    }\n  }\n\n  return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n  if (spec.unslick) {\n    return 0;\n  }\n\n  checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n  var slideIndex = spec.slideIndex,\n      trackRef = spec.trackRef,\n      infinite = spec.infinite,\n      centerMode = spec.centerMode,\n      slideCount = spec.slideCount,\n      slidesToShow = spec.slidesToShow,\n      slidesToScroll = spec.slidesToScroll,\n      slideWidth = spec.slideWidth,\n      listWidth = spec.listWidth,\n      variableWidth = spec.variableWidth,\n      slideHeight = spec.slideHeight,\n      fade = spec.fade,\n      vertical = spec.vertical;\n  var slideOffset = 0;\n  var targetLeft;\n  var targetSlide;\n  var verticalOffset = 0;\n\n  if (fade || spec.slideCount === 1) {\n    return 0;\n  }\n\n  var slidesToOffset = 0;\n\n  if (infinite) {\n    slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n    // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n    if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n      slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n    } // shift current slide to center of the frame\n\n\n    if (centerMode) {\n      slidesToOffset += parseInt(slidesToShow / 2);\n    }\n  } else {\n    if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n      slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n    }\n\n    if (centerMode) {\n      slidesToOffset = parseInt(slidesToShow / 2);\n    }\n  }\n\n  slideOffset = slidesToOffset * slideWidth;\n  verticalOffset = slidesToOffset * slideHeight;\n\n  if (!vertical) {\n    targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n  } else {\n    targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n  }\n\n  if (variableWidth === true) {\n    var targetSlideIndex;\n    var trackElem = trackRef && trackRef.node;\n    targetSlideIndex = slideIndex + getPreClones(spec);\n    targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n    targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n    if (centerMode === true) {\n      targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n      targetSlide = trackElem && trackElem.children[targetSlideIndex];\n      targetLeft = 0;\n\n      for (var slide = 0; slide < targetSlideIndex; slide++) {\n        targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n      }\n\n      targetLeft -= parseInt(spec.centerPadding);\n      targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n    }\n  }\n\n  return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n  if (spec.unslick || !spec.infinite) {\n    return 0;\n  }\n\n  if (spec.variableWidth) {\n    return spec.slideCount;\n  }\n\n  return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n  if (spec.unslick || !spec.infinite) {\n    return 0;\n  }\n\n  return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n  return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n  if (spec.targetSlide > spec.currentSlide) {\n    if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n      return \"left\";\n    }\n\n    return \"right\";\n  } else {\n    if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n      return \"right\";\n    }\n\n    return \"left\";\n  }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n  var slidesToShow = _ref.slidesToShow,\n      centerMode = _ref.centerMode,\n      rtl = _ref.rtl,\n      centerPadding = _ref.centerPadding;\n\n  // returns no of slides on the right of active slide\n  if (centerMode) {\n    var right = (slidesToShow - 1) / 2 + 1;\n    if (parseInt(centerPadding) > 0) right += 1;\n    if (rtl && slidesToShow % 2 === 0) right += 1;\n    return right;\n  }\n\n  if (rtl) {\n    return 0;\n  }\n\n  return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n  var slidesToShow = _ref2.slidesToShow,\n      centerMode = _ref2.centerMode,\n      rtl = _ref2.rtl,\n      centerPadding = _ref2.centerPadding;\n\n  // returns no of slides on the left of active slide\n  if (centerMode) {\n    var left = (slidesToShow - 1) / 2 + 1;\n    if (parseInt(centerPadding) > 0) left += 1;\n    if (!rtl && slidesToShow % 2 === 0) left += 1;\n    return left;\n  }\n\n  if (rtl) {\n    return slidesToShow - 1;\n  }\n\n  return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n  return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { Hub } from '@sentry/hub';\nimport { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from './constants';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Span, SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const DEFAULT_IDLE_TIMEOUT = 1000;\nexport const HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n  public constructor(\n    private readonly _pushActivity: (id: string) => void,\n    private readonly _popActivity: (id: string) => void,\n    public transactionSpanId: string = '',\n    maxlen?: number,\n  ) {\n    super(maxlen);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public add(span: Span): void {\n    // We should make sure we do not push and pop activities for\n    // the transaction that this span recorder belongs to.\n    if (span.spanId !== this.transactionSpanId) {\n      // We patch span.finish() to pop an activity after setting an endTimestamp.\n      span.finish = (endTimestamp?: number) => {\n        span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n        this._popActivity(span.spanId);\n      };\n\n      // We should only push new activities if the span does not have an end timestamp.\n      if (span.endTimestamp === undefined) {\n        this._pushActivity(span.spanId);\n      }\n    }\n\n    super.add(span);\n  }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n  // Activities store a list of active spans\n  public activities: Record<string, boolean> = {};\n\n  // Track state of activities in previous heartbeat\n  private _prevHeartbeatString: string | undefined;\n\n  // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n  private _heartbeatCounter: number = 0;\n\n  // We should not use heartbeat if we finished a transaction\n  private _finished: boolean = false;\n\n  private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n  /**\n   * If a transaction is created and no activities are added, we want to make sure that\n   * it times out properly. This is cleared and not used when activities are added.\n   */\n  private _initTimeout: ReturnType<typeof setTimeout> | undefined;\n\n  public constructor(\n    transactionContext: TransactionContext,\n    private readonly _idleHub?: Hub,\n    /**\n     * The time to wait in ms until the idle transaction will be finished.\n     * @default 1000\n     */\n    private readonly _idleTimeout: number = DEFAULT_IDLE_TIMEOUT,\n    // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n    private readonly _onScope: boolean = false,\n  ) {\n    super(transactionContext, _idleHub);\n\n    if (_idleHub && _onScope) {\n      // There should only be one active transaction on the scope\n      clearActiveTransaction(_idleHub);\n\n      // We set the transaction here on the scope so error events pick up the trace\n      // context and attach it to the error.\n      IS_DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n      _idleHub.configureScope(scope => scope.setSpan(this));\n    }\n\n    this._initTimeout = setTimeout(() => {\n      if (!this._finished) {\n        this.finish();\n      }\n    }, this._idleTimeout);\n  }\n\n  /** {@inheritDoc} */\n  public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n    this._finished = true;\n    this.activities = {};\n\n    if (this.spanRecorder) {\n      IS_DEBUG_BUILD &&\n        logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n      for (const callback of this._beforeFinishCallbacks) {\n        callback(this, endTimestamp);\n      }\n\n      this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n        // If we are dealing with the transaction itself, we just return it\n        if (span.spanId === this.spanId) {\n          return true;\n        }\n\n        // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n        if (!span.endTimestamp) {\n          span.endTimestamp = endTimestamp;\n          span.setStatus('cancelled');\n          IS_DEBUG_BUILD &&\n            logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n        }\n\n        const keepSpan = span.startTimestamp < endTimestamp;\n        if (!keepSpan) {\n          IS_DEBUG_BUILD &&\n            logger.log(\n              '[Tracing] discarding Span since it happened after Transaction was finished',\n              JSON.stringify(span, undefined, 2),\n            );\n        }\n        return keepSpan;\n      });\n\n      IS_DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n    } else {\n      IS_DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n    }\n\n    // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n    if (this._onScope) {\n      clearActiveTransaction(this._idleHub);\n    }\n\n    return super.finish(endTimestamp);\n  }\n\n  /**\n   * Register a callback function that gets excecuted before the transaction finishes.\n   * Useful for cleanup or if you want to add any additional spans based on current context.\n   *\n   * This is exposed because users have no other way of running something before an idle transaction\n   * finishes.\n   */\n  public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n    this._beforeFinishCallbacks.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public initSpanRecorder(maxlen?: number): void {\n    if (!this.spanRecorder) {\n      const pushActivity = (id: string): void => {\n        if (this._finished) {\n          return;\n        }\n        this._pushActivity(id);\n      };\n      const popActivity = (id: string): void => {\n        if (this._finished) {\n          return;\n        }\n        this._popActivity(id);\n      };\n\n      this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n      // Start heartbeat so that transactions do not run forever.\n      IS_DEBUG_BUILD && logger.log('Starting heartbeat');\n      this._pingHeartbeat();\n    }\n    this.spanRecorder.add(this);\n  }\n\n  /**\n   * Start tracking a specific activity.\n   * @param spanId The span id that represents the activity\n   */\n  private _pushActivity(spanId: string): void {\n    if (this._initTimeout) {\n      clearTimeout(this._initTimeout);\n      this._initTimeout = undefined;\n    }\n    IS_DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n    this.activities[spanId] = true;\n    IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n  }\n\n  /**\n   * Remove an activity from usage\n   * @param spanId The span id that represents the activity\n   */\n  private _popActivity(spanId: string): void {\n    if (this.activities[spanId]) {\n      IS_DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this.activities[spanId];\n      IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n    }\n\n    if (Object.keys(this.activities).length === 0) {\n      const timeout = this._idleTimeout;\n      // We need to add the timeout here to have the real endtimestamp of the transaction\n      // Remember timestampWithMs is in seconds, timeout is in ms\n      const end = timestampWithMs() + timeout / 1000;\n\n      setTimeout(() => {\n        if (!this._finished) {\n          this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[1]);\n          this.finish(end);\n        }\n      }, timeout);\n    }\n  }\n\n  /**\n   * Checks when entries of this.activities are not changing for 3 beats.\n   * If this occurs we finish the transaction.\n   */\n  private _beat(): void {\n    // We should not be running heartbeat if the idle transaction is finished.\n    if (this._finished) {\n      return;\n    }\n\n    const heartbeatString = Object.keys(this.activities).join('');\n\n    if (heartbeatString === this._prevHeartbeatString) {\n      this._heartbeatCounter += 1;\n    } else {\n      this._heartbeatCounter = 1;\n    }\n\n    this._prevHeartbeatString = heartbeatString;\n\n    if (this._heartbeatCounter >= 3) {\n      IS_DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n      this.setStatus('deadline_exceeded');\n      this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[0]);\n      this.finish();\n    } else {\n      this._pingHeartbeat();\n    }\n  }\n\n  /**\n   * Pings the heartbeat\n   */\n  private _pingHeartbeat(): void {\n    IS_DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n    setTimeout(() => {\n      this._beat();\n    }, HEARTBEAT_INTERVAL);\n  }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub?: Hub): void {\n  if (hub) {\n    const scope = hub.getScope();\n    if (scope) {\n      const transaction = scope.getTransaction();\n      if (transaction) {\n        scope.setSpan(undefined);\n      }\n    }\n  }\n}\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport {\n  Event,\n  Measurements,\n  Transaction as TransactionInterface,\n  TransactionContext,\n  TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, isInstanceOf, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Span as SpanClass, SpanRecorder } from './span';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n  public name: string;\n\n  public metadata: TransactionMetadata;\n\n  private _measurements: Measurements = {};\n\n  /**\n   * The reference to the current hub.\n   */\n  private readonly _hub: Hub = getCurrentHub() as unknown as Hub;\n\n  private _trimEnd?: boolean;\n\n  /**\n   * This constructor should never be called manually. Those instrumenting tracing should use\n   * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n  public constructor(transactionContext: TransactionContext, hub?: Hub) {\n    super(transactionContext);\n\n    if (isInstanceOf(hub, Hub)) {\n      this._hub = hub as Hub;\n    }\n\n    this.name = transactionContext.name || '';\n\n    this.metadata = transactionContext.metadata || {};\n    this._trimEnd = transactionContext.trimEnd;\n\n    // this is because transactions are also spans, and spans have a transaction pointer\n    this.transaction = this;\n  }\n\n  /**\n   * JSDoc\n   */\n  public setName(name: string): void {\n    this.name = name;\n  }\n\n  /**\n   * Attaches SpanRecorder to the span itself\n   * @param maxlen maximum number of spans that can be recorded\n   */\n  public initSpanRecorder(maxlen: number = 1000): void {\n    if (!this.spanRecorder) {\n      this.spanRecorder = new SpanRecorder(maxlen);\n    }\n    this.spanRecorder.add(this);\n  }\n\n  /**\n   * Set observed measurements for this transaction.\n   * @hidden\n   */\n  public setMeasurements(measurements: Measurements): void {\n    this._measurements = { ...measurements };\n  }\n\n  /**\n   * Set metadata for this transaction.\n   * @hidden\n   */\n  public setMetadata(newMetadata: TransactionMetadata): void {\n    this.metadata = { ...this.metadata, ...newMetadata };\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public finish(endTimestamp?: number): string | undefined {\n    // This transaction is already finished, so we should not flush it again.\n    if (this.endTimestamp !== undefined) {\n      return undefined;\n    }\n\n    if (!this.name) {\n      IS_DEBUG_BUILD && logger.warn('Transaction has no name, falling back to `<unlabeled transaction>`.');\n      this.name = '<unlabeled transaction>';\n    }\n\n    // just sets the end timestamp\n    super.finish(endTimestamp);\n\n    if (this.sampled !== true) {\n      // At this point if `sampled !== true` we want to discard the transaction.\n      IS_DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n      const client = this._hub.getClient();\n      const transport = client && client.getTransport && client.getTransport();\n      if (transport && transport.recordLostEvent) {\n        transport.recordLostEvent('sample_rate', 'transaction');\n      }\n      return undefined;\n    }\n\n    const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n    if (this._trimEnd && finishedSpans.length > 0) {\n      this.endTimestamp = finishedSpans.reduce((prev: SpanClass, current: SpanClass) => {\n        if (prev.endTimestamp && current.endTimestamp) {\n          return prev.endTimestamp > current.endTimestamp ? prev : current;\n        }\n        return prev;\n      }).endTimestamp;\n    }\n\n    const transaction: Event = {\n      contexts: {\n        trace: this.getTraceContext(),\n      },\n      spans: finishedSpans,\n      start_timestamp: this.startTimestamp,\n      tags: this.tags,\n      timestamp: this.endTimestamp,\n      transaction: this.name,\n      type: 'transaction',\n      sdkProcessingMetadata: this.metadata,\n    };\n\n    const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n    if (hasMeasurements) {\n      IS_DEBUG_BUILD &&\n        logger.log(\n          '[Measurements] Adding measurements to transaction',\n          JSON.stringify(this._measurements, undefined, 2),\n        );\n      transaction.measurements = this._measurements;\n    }\n\n    IS_DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n    return this._hub.captureEvent(transaction);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public toContext(): TransactionContext {\n    const spanContext = super.toContext();\n\n    return dropUndefinedKeys({\n      ...spanContext,\n      name: this.name,\n      trimEnd: this._trimEnd,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public updateWithContext(transactionContext: TransactionContext): this {\n    super.updateWithContext(transactionContext);\n\n    this.name = transactionContext.name ?? '';\n\n    this._trimEnd = transactionContext.trimEnd;\n\n    return this;\n  }\n}\n","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _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(n);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","module.exports = {\n  decode: require('./decode'),\n  verify: require('./verify'),\n  sign: require('./sign'),\n  JsonWebTokenError: require('./lib/JsonWebTokenError'),\n  NotBeforeError: require('./lib/NotBeforeError'),\n  TokenExpiredError: require('./lib/TokenExpiredError'),\n};\n","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","/*! js-cookie v3.0.5 | MIT */\n;\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {\n    var current = global.Cookies;\n    var exports = global.Cookies = factory();\n    exports.noConflict = function () { global.Cookies = current; return exports; };\n  })());\n})(this, (function () { 'use strict';\n\n  /* eslint-disable no-var */\n  function assign (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        target[key] = source[key];\n      }\n    }\n    return target\n  }\n  /* eslint-enable no-var */\n\n  /* eslint-disable no-var */\n  var defaultConverter = {\n    read: function (value) {\n      if (value[0] === '\"') {\n        value = value.slice(1, -1);\n      }\n      return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n    },\n    write: function (value) {\n      return encodeURIComponent(value).replace(\n        /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n        decodeURIComponent\n      )\n    }\n  };\n  /* eslint-enable no-var */\n\n  /* eslint-disable no-var */\n\n  function init (converter, defaultAttributes) {\n    function set (name, value, attributes) {\n      if (typeof document === 'undefined') {\n        return\n      }\n\n      attributes = assign({}, defaultAttributes, attributes);\n\n      if (typeof attributes.expires === 'number') {\n        attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n      }\n      if (attributes.expires) {\n        attributes.expires = attributes.expires.toUTCString();\n      }\n\n      name = encodeURIComponent(name)\n        .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n        .replace(/[()]/g, escape);\n\n      var stringifiedAttributes = '';\n      for (var attributeName in attributes) {\n        if (!attributes[attributeName]) {\n          continue\n        }\n\n        stringifiedAttributes += '; ' + attributeName;\n\n        if (attributes[attributeName] === true) {\n          continue\n        }\n\n        // Considers RFC 6265 section 5.2:\n        // ...\n        // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n        //     character:\n        // Consume the characters of the unparsed-attributes up to,\n        // not including, the first %x3B (\";\") character.\n        // ...\n        stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n      }\n\n      return (document.cookie =\n        name + '=' + converter.write(value, name) + stringifiedAttributes)\n    }\n\n    function get (name) {\n      if (typeof document === 'undefined' || (arguments.length && !name)) {\n        return\n      }\n\n      // To prevent the for loop in the first place assign an empty array\n      // in case there are no cookies at all.\n      var cookies = document.cookie ? document.cookie.split('; ') : [];\n      var jar = {};\n      for (var i = 0; i < cookies.length; i++) {\n        var parts = cookies[i].split('=');\n        var value = parts.slice(1).join('=');\n\n        try {\n          var found = decodeURIComponent(parts[0]);\n          jar[found] = converter.read(value, found);\n\n          if (name === found) {\n            break\n          }\n        } catch (e) {}\n      }\n\n      return name ? jar[name] : jar\n    }\n\n    return Object.create(\n      {\n        set,\n        get,\n        remove: function (name, attributes) {\n          set(\n            name,\n            '',\n            assign({}, attributes, {\n              expires: -1\n            })\n          );\n        },\n        withAttributes: function (attributes) {\n          return init(this.converter, assign({}, this.attributes, attributes))\n        },\n        withConverter: function (converter) {\n          return init(assign({}, this.converter, converter), this.attributes)\n        }\n      },\n      {\n        attributes: { value: Object.freeze(defaultAttributes) },\n        converter: { value: Object.freeze(converter) }\n      }\n    )\n  }\n\n  var api = init(defaultConverter, { path: '/' });\n  /* eslint-enable no-var */\n\n  return api;\n\n}));\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n    closed: true,\n    next: function (value) { },\n    error: function (err) {\n        if (config.useDeprecatedSynchronousErrorHandling) {\n            throw err;\n        }\n        else {\n            hostReportError(err);\n        }\n    },\n    complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\n\n  // We want to set the trace context for normal events only if there isn't already\n  // a trace context on the event. There is a product feature in place where we link\n  // errors with transaction and it relies on that.\n  if (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    // eslint-disable-next-line deprecation/deprecation\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n  mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    // eslint-disable-next-line deprecation/deprecation\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n  Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n  Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n  if (mergeVal && Object.keys(mergeVal).length) {\n    // Clone object\n    data[prop] = { ...data[prop] };\n    for (const key in mergeVal) {\n      if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n        data[prop][key] = mergeVal[key];\n      }\n    }\n  }\n}\n\n/** Exported only for tests */\nexport function mergeArray<Prop extends 'breadcrumbs' | 'fingerprint'>(\n  event: Event,\n  prop: Prop,\n  mergeVal: ScopeData[Prop],\n): void {\n  const prevVal = event[prop];\n  // If we are not merging any new values,\n  // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n  if (!mergeVal.length && (!prevVal || prevVal.length)) {\n    return;\n  }\n\n  const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n  event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    // eslint-disable-next-line deprecation/deprecation\n    transactionName,\n  } = data;\n\n  const cleanedExtra = dropUndefinedKeys(extra);\n  if (cleanedExtra && Object.keys(cleanedExtra).length) {\n    event.extra = { ...cleanedExtra, ...event.extra };\n  }\n\n  const cleanedTags = dropUndefinedKeys(tags);\n  if (cleanedTags && Object.keys(cleanedTags).length) {\n    event.tags = { ...cleanedTags, ...event.tags };\n  }\n\n  const cleanedUser = dropUndefinedKeys(user);\n  if (cleanedUser && Object.keys(cleanedUser).length) {\n    event.user = { ...cleanedUser, ...event.user };\n  }\n\n  const cleanedContexts = dropUndefinedKeys(contexts);\n  if (cleanedContexts && Object.keys(cleanedContexts).length) {\n    event.contexts = { ...cleanedContexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  if (transactionName) {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n  event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n  const rootSpan = getRootSpan(span);\n  if (rootSpan) {\n    event.sdkProcessingMetadata = {\n      dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n      ...event.sdkProcessingMetadata,\n    };\n    const transactionName = spanToJSON(rootSpan).description;\n    if (transactionName) {\n      event.tags = { transaction: transactionName, ...event.tags };\n    }\n  }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (event.fingerprint && !event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n","import loadjs from \"loadjs\";\nimport { useRef } from \"react\";\nvar twScriptUrl = \"https://platform.twitter.com/widgets.js\";\nvar twScriptWindowFieldName = \"twttr\";\nvar twScriptName = twScriptWindowFieldName;\nexport var canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nexport function loadTwitterLibrary() {\n  if (!loadjs.isDefined(twScriptName)) {\n    loadjs(twScriptUrl, twScriptName);\n  }\n}\nexport function twWidgetFactory() {\n  return new Promise(function (resolve, reject) {\n    var rejectWithError = function rejectWithError() {\n      return reject(new Error(\"Could not load remote twitter widgets js\"));\n    };\n\n    loadTwitterLibrary();\n    loadjs.ready(twScriptName, {\n      success: function success() {\n        // Ensure loaded\n        var twttr = window[twScriptWindowFieldName];\n\n        if (!twttr || !twttr.widgets) {\n          rejectWithError();\n        }\n\n        resolve(twttr.widgets);\n      },\n      error: rejectWithError\n    });\n  });\n}\nexport function removeChildrenWithAttribute(node, attribute) {\n  if (node) {\n    node.querySelectorAll(\"*\").forEach(function (child) {\n      if (child.hasAttribute(attribute)) {\n        child.remove();\n      }\n    });\n  }\n}\n\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction isShallowEqual(objA, objB) {\n  if (is(objA, objB)) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport function useShallowCompareMemoize(value) {\n  var ref = useRef();\n\n  if (!isShallowEqual(value, ref.current)) {\n    ref.current = value;\n  }\n\n  return ref.current;\n}\nexport function cloneShallow(value) {\n  return typeof value === \"object\" ? Object.assign({}, value) : value;\n}","import React, { useRef, useEffect, useState } from \"react\";\nimport { canUseDOM, useShallowCompareMemoize, removeChildrenWithAttribute, twWidgetFactory, cloneShallow } from \"./utils\";\nexport { loadTwitterLibrary as eagerLoadTwitterLibrary } from \"./utils\";\nvar childDivIdentifyingAttribute = \"twdiv\";\n\nfunction useTwitterWidget(factoryFunctionName, primaryArg, options, onLoad) {\n  var _useState = useState(null),\n      error = _useState[0],\n      setError = _useState[1];\n\n  var ref = useRef(null); // noop if ssr\n\n  if (!canUseDOM) {\n    return {\n      ref: ref,\n      error: error\n    };\n  } // Make deps for useEffect.\n  // options, and possibly primaryArg, are objects that should be compared (shallow).\n  // There currently aren't any nested arrays or objects, so they\n  // can be cloned in a shallow manner.\n  // NOTE onLoad is used in useCallback, but it is not listed as a dependency.\n  // Listing it would likely cause unnecessary loads. The latest onLoad should be\n  // used regardless, since it will not be called unless the other dependencies\n  // change, so it works out.\n\n\n  var deps = [factoryFunctionName, useShallowCompareMemoize(primaryArg), useShallowCompareMemoize(options)];\n  useEffect(function () {\n    // Reset error\n    setError(null); // Protect against race conditions\n    // (set to true in cleanup function;\n    // checked if canceled in async loadWidget)\n\n    var isCanceled = false;\n\n    if (ref.current) {\n      removeChildrenWithAttribute(ref.current, childDivIdentifyingAttribute);\n\n      if (!ref || !ref.current) {\n        return;\n      }\n\n      var childEl = document.createElement(\"div\");\n      childEl.setAttribute(childDivIdentifyingAttribute, \"yes\");\n      ref.current.appendChild(childEl);\n      twWidgetFactory().then(function (wf) {\n        // primaryArg (possibly an object) and options must be cloned\n        // since twitter mutates them (gah!).\n        // There currently aren't any nested arrays or objects, so they\n        // can be cloned in a shallow manner.\n        return wf[factoryFunctionName](cloneShallow(primaryArg), childEl, cloneShallow(options));\n      }).then(function (resultMaybe) {\n        // Twitter returns undefined if widget creation fails.\n        // However, if deps are stale (isCanceled), suppress error (likely race condition).\n        if (!resultMaybe && !isCanceled) {\n          throw new Error(\"Twitter could not create widget. If it is a Timeline or \" + \"Tweet, ensure the screenName/tweetId exists.\");\n        }\n\n        if (!ref || !ref.current) {\n          return;\n        }\n\n        if (isCanceled) {\n          if (childEl) {\n            childEl.remove();\n          }\n\n          return;\n        }\n\n        if (onLoad) {\n          onLoad();\n        }\n      })[\"catch\"](function (e) {\n        console.error(e);\n        setError(e);\n      });\n    }\n\n    return function () {\n      isCanceled = true;\n    };\n  }, deps);\n  return {\n    ref: ref,\n    error: error\n  };\n}\n\nexport var Follow = function Follow(_ref) {\n  var username = _ref.username,\n      options = _ref.options,\n      onLoad = _ref.onLoad,\n      renderError = _ref.renderError;\n\n  var _useTwitterWidget = useTwitterWidget(\"createFollowButton\", username, options, onLoad),\n      ref = _useTwitterWidget.ref,\n      error = _useTwitterWidget.error;\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref\n  }, error && renderError && renderError(error));\n};\nexport var Hashtag = function Hashtag(_ref2) {\n  var hashtag = _ref2.hashtag,\n      options = _ref2.options,\n      onLoad = _ref2.onLoad,\n      renderError = _ref2.renderError;\n\n  var _useTwitterWidget2 = useTwitterWidget(\"createHashtagButton\", hashtag, options, onLoad),\n      ref = _useTwitterWidget2.ref,\n      error = _useTwitterWidget2.error;\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref\n  }, error && renderError && renderError(error));\n};\nexport var Mention = function Mention(_ref3) {\n  var username = _ref3.username,\n      options = _ref3.options,\n      onLoad = _ref3.onLoad,\n      renderError = _ref3.renderError;\n\n  var _useTwitterWidget3 = useTwitterWidget(\"createMentionButton\", username, options, onLoad),\n      ref = _useTwitterWidget3.ref,\n      error = _useTwitterWidget3.error;\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref\n  }, error && renderError && renderError(error));\n};\nexport var Share = function Share(_ref4) {\n  var url = _ref4.url,\n      options = _ref4.options,\n      onLoad = _ref4.onLoad,\n      renderError = _ref4.renderError;\n\n  var _useTwitterWidget4 = useTwitterWidget(\"createShareButton\", url, options, onLoad),\n      ref = _useTwitterWidget4.ref,\n      error = _useTwitterWidget4.error;\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref\n  }, error && renderError && renderError(error));\n};\nexport var Timeline = function Timeline(_ref5) {\n  var dataSource = _ref5.dataSource,\n      options = _ref5.options,\n      onLoad = _ref5.onLoad,\n      renderError = _ref5.renderError;\n\n  var _useTwitterWidget5 = useTwitterWidget(\"createTimeline\", dataSource, options, onLoad),\n      ref = _useTwitterWidget5.ref,\n      error = _useTwitterWidget5.error;\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref\n  }, error && renderError && renderError(error));\n};\nexport var Tweet = function Tweet(_ref6) {\n  var tweetId = _ref6.tweetId,\n      options = _ref6.options,\n      onLoad = _ref6.onLoad,\n      renderError = _ref6.renderError;\n\n  var _useTwitterWidget6 = useTwitterWidget(\"createTweet\", tweetId, options, onLoad),\n      ref = _useTwitterWidget6.ref,\n      error = _useTwitterWidget6.error;\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref\n  }, error && renderError && renderError(error));\n};","// @flow\nimport type { Interpolation } from '../types';\n\nexport default (\n  strings: Array<string>,\n  interpolations: Array<Interpolation>\n): Array<Interpolation> => {\n  const result = [strings[0]];\n\n  for (let i = 0, len = interpolations.length; i < len; i += 1) {\n    result.push(interpolations[i], strings[i + 1]);\n  }\n\n  return result;\n};\n","// @flow\nimport { typeOf } from 'react-is';\n\nexport default (x: any): boolean =>\n  x !== null &&\n  typeof x === 'object' &&\n  (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' &&\n  !typeOf(x);\n","// @flow\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});\n","// @flow\nexport default function isFunction(test: any): boolean %checks {\n  return typeof test === 'function';\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function getComponentName(\n  target: $PropertyType<IStyledComponent, 'target'>\n): string {\n  return (\n    (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n    // $FlowFixMe\n    target.displayName ||\n    // $FlowFixMe\n    target.name ||\n    'Component'\n  );\n}\n","// @flow\nexport default function isStyledComponent(target: any): boolean %checks {\n  return target && typeof target.styledComponentId === 'string';\n}\n","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n  (typeof process !== 'undefined' &&\n    typeof process.env !== 'undefined' &&\n    (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n  'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n  typeof SC_DISABLE_SPEEDY === 'boolean'\n    ? SC_DISABLE_SPEEDY\n    : typeof process !== 'undefined' && typeof process.env !== 'undefined'\n    ? typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n      process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n      ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n        ? false\n        : process.env.REACT_APP_SC_DISABLE_SPEEDY\n      : typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n      ? process.env.SC_DISABLE_SPEEDY === 'false'\n        ? false\n        : process.env.SC_DISABLE_SPEEDY\n      : process.env.NODE_ENV !== 'production'\n    : false\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\nimport errorMap from './errors';\n\nconst ERRORS = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args) {\n  let a = args[0];\n  const b = [];\n\n  for (let c = 1, len = args.length; c < len; c += 1) {\n    b.push(args[c]);\n  }\n\n  b.forEach(d => {\n    a = a.replace(/%[a-z]/, d);\n  });\n\n  return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n  code: string | number,\n  ...interpolations: Array<any>\n) {\n  if (process.env.NODE_ENV === 'production') {\n    throw new Error(\n      `An error occurred. See https://git.io/JUIaE#${code} for more information.${\n        interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n      }`\n    );\n  } else {\n    throw new Error(format(ERRORS[code], ...interpolations).trim());\n  }\n}\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport type { GroupedTag, Tag } from './types';\nimport { SPLITTER } from '../constants';\nimport throwStyledError from '../utils/error';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag): GroupedTag => {\n  return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nclass DefaultGroupedTag implements GroupedTag {\n  groupSizes: Uint32Array;\n\n  length: number;\n\n  tag: Tag;\n\n  constructor(tag: Tag) {\n    this.groupSizes = new Uint32Array(BASE_SIZE);\n    this.length = BASE_SIZE;\n    this.tag = tag;\n  }\n\n  indexOfGroup(group: number): number {\n    let index = 0;\n    for (let i = 0; i < group; i++) {\n      index += this.groupSizes[i];\n    }\n\n    return index;\n  }\n\n  insertRules(group: number, rules: string[]): void {\n    if (group >= this.groupSizes.length) {\n      const oldBuffer = this.groupSizes;\n      const oldSize = oldBuffer.length;\n\n      let newSize = oldSize;\n      while (group >= newSize) {\n        newSize <<= 1;\n        if (newSize < 0) {\n          throwStyledError(16, `${group}`);\n        }\n      }\n\n      this.groupSizes = new Uint32Array(newSize);\n      this.groupSizes.set(oldBuffer);\n      this.length = newSize;\n\n      for (let i = oldSize; i < newSize; i++) {\n        this.groupSizes[i] = 0;\n      }\n    }\n\n    let ruleIndex = this.indexOfGroup(group + 1);\n    for (let i = 0, l = rules.length; i < l; i++) {\n      if (this.tag.insertRule(ruleIndex, rules[i])) {\n        this.groupSizes[group]++;\n        ruleIndex++;\n      }\n    }\n  }\n\n  clearGroup(group: number): void {\n    if (group < this.length) {\n      const length = this.groupSizes[group];\n      const startIndex = this.indexOfGroup(group);\n      const endIndex = startIndex + length;\n\n      this.groupSizes[group] = 0;\n\n      for (let i = startIndex; i < endIndex; i++) {\n        this.tag.deleteRule(startIndex);\n      }\n    }\n  }\n\n  getGroup(group: number): string {\n    let css = '';\n    if (group >= this.length || this.groupSizes[group] === 0) {\n      return css;\n    }\n\n    const length = this.groupSizes[group];\n    const startIndex = this.indexOfGroup(group);\n    const endIndex = startIndex + length;\n\n    for (let i = startIndex; i < endIndex; i++) {\n      css += `${this.tag.getRule(i)}${SPLITTER}`;\n    }\n\n    return css;\n  }\n}\n","// @flow\n\nimport throwStyledError from '../utils/error';\n\nconst MAX_SMI = 1 << 31 - 1;\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n  groupIDRegister = new Map();\n  reverseRegister = new Map();\n  nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n  if (groupIDRegister.has(id)) {\n    return (groupIDRegister.get(id): any);\n  }\n\n  while (reverseRegister.has(nextFreeGroup)) {\n    nextFreeGroup++;\n  }\n\n  const group = nextFreeGroup++;\n\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    ((group | 0) < 0 || group > MAX_SMI)\n  ) {\n    throwStyledError(16, `${group}`);\n  }\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n  return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n  return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n  if (group >= nextFreeGroup) {\n    nextFreeGroup = group + 1;\n  }\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n};\n","// @flow\n\nimport { SPLITTER, SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport type { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n  const tag = sheet.getTag();\n  const { length } = tag;\n\n  let css = '';\n  for (let group = 0; group < length; group++) {\n    const id = getIdForGroup(group);\n    if (id === undefined) continue;\n\n    const names = sheet.names.get(id);\n    const rules = tag.getGroup(group);\n    if (!names || !rules || !names.size) continue;\n\n    const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n    let content = '';\n    if (names !== undefined) {\n      names.forEach(name => {\n        if (name.length > 0) {\n          content += `${name},`;\n        }\n      });\n    }\n\n    // NOTE: It's easier to collect rules and have the marker\n    // after the actual rules to simplify the rehydration\n    css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n  }\n\n  return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n  const names = content.split(',');\n  let name;\n\n  for (let i = 0, l = names.length; i < l; i++) {\n    // eslint-disable-next-line\n    if ((name = names[i])) {\n      sheet.registerName(id, name);\n    }\n  }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n  const parts = (style.textContent || '').split(SPLITTER);\n  const rules: string[] = [];\n\n  for (let i = 0, l = parts.length; i < l; i++) {\n    const part = parts[i].trim();\n    if (!part) continue;\n\n    const marker = part.match(MARKER_RE);\n\n    if (marker) {\n      const group = parseInt(marker[1], 10) | 0;\n      const id = marker[2];\n\n      if (group !== 0) {\n        // Rehydrate componentId to group index mapping\n        setGroupForId(id, group);\n        // Rehydrate names and rules\n        // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n        rehydrateNamesFromContent(sheet, id, marker[3]);\n        sheet.getTag().insertRules(group, rules);\n      }\n\n      rules.length = 0;\n    } else {\n      rules.push(part);\n    }\n  }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n  const nodes = document.querySelectorAll(SELECTOR);\n\n  for (let i = 0, l = nodes.length; i < l; i++) {\n    const node = ((nodes[i]: any): HTMLStyleElement);\n    if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n      rehydrateSheetFromTag(sheet, node);\n\n      if (node.parentNode) {\n        node.parentNode.removeChild(node);\n      }\n    }\n  }\n};\n","// @flow\n/* eslint-disable camelcase, no-undef */\n\ndeclare var __webpack_nonce__: string;\n\nconst getNonce = () => {\n  return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n};\n\nexport default getNonce;\n","// @flow\n\nimport { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport getNonce from '../utils/nonce';\nimport throwStyledError from '../utils/error';\n\nconst ELEMENT_TYPE = 1; /* Node.ELEMENT_TYPE */\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n  const { childNodes } = target;\n\n  for (let i = childNodes.length; i >= 0; i--) {\n    const child = ((childNodes[i]: any): ?HTMLElement);\n    if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) {\n      return ((child: any): HTMLStyleElement);\n    }\n  }\n\n  return undefined;\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: HTMLElement): HTMLStyleElement => {\n  const head = ((document.head: any): HTMLElement);\n  const parent = target || head;\n  const style = document.createElement('style');\n  const prevStyle = findLastStyleTag(parent);\n  const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n  style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n  style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n  const nonce = getNonce();\n\n  if (nonce) style.setAttribute('nonce', nonce);\n\n  parent.insertBefore(style, nextSibling);\n\n  return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n  if (tag.sheet) {\n    return ((tag.sheet: any): CSSStyleSheet);\n  }\n\n  // Avoid Firefox quirk where the style element might not have a sheet property\n  const { styleSheets } = document;\n  for (let i = 0, l = styleSheets.length; i < l; i++) {\n    const sheet = styleSheets[i];\n    if (sheet.ownerNode === tag) {\n      return ((sheet: any): CSSStyleSheet);\n    }\n  }\n\n  throwStyledError(17);\n  return (undefined: any);\n};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n  if (isServer) {\n    return new VirtualTag(target);\n  } else if (useCSSOMInjection) {\n    return new CSSOMTag(target);\n  } else {\n    return new TextTag(target);\n  }\n};\n\nexport class CSSOMTag implements Tag {\n  element: HTMLStyleElement;\n\n  sheet: CSSStyleSheet;\n\n  length: number;\n\n  constructor(target?: HTMLElement) {\n    const element = (this.element = makeStyleTag(target));\n\n    // Avoid Edge bug where empty style elements don't create sheets\n    element.appendChild(document.createTextNode(''));\n\n    this.sheet = getSheet(element);\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string): boolean {\n    try {\n      this.sheet.insertRule(rule, index);\n      this.length++;\n      return true;\n    } catch (_error) {\n      return false;\n    }\n  }\n\n  deleteRule(index: number): void {\n    this.sheet.deleteRule(index);\n    this.length--;\n  }\n\n  getRule(index: number): string {\n    const rule = this.sheet.cssRules[index];\n    // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n    if (rule !== undefined && typeof rule.cssText === 'string') {\n      return rule.cssText;\n    } else {\n      return '';\n    }\n  }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n  element: HTMLStyleElement;\n\n  nodes: NodeList<Node>;\n\n  length: number;\n\n  constructor(target?: HTMLElement) {\n    const element = (this.element = makeStyleTag(target));\n    this.nodes = element.childNodes;\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string): boolean {\n    if (index <= this.length && index >= 0) {\n      const node = document.createTextNode(rule);\n      const refNode = this.nodes[index];\n      this.element.insertBefore(node, refNode || null);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  deleteRule(index: number): void {\n    this.element.removeChild(this.nodes[index]);\n    this.length--;\n  }\n\n  getRule(index: number): string {\n    if (index < this.length) {\n      return this.nodes[index].textContent;\n    } else {\n      return '';\n    }\n  }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n  rules: string[];\n\n  length: number;\n\n  constructor(_target?: HTMLElement) {\n    this.rules = [];\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string): boolean {\n    if (index <= this.length) {\n      this.rules.splice(index, 0, rule);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  deleteRule(index: number): void {\n    this.rules.splice(index, 1);\n    this.length--;\n  }\n\n  getRule(index: number): string {\n    if (index < this.length) {\n      return this.rules[index];\n    } else {\n      return '';\n    }\n  }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n  isServer?: boolean,\n  useCSSOMInjection?: boolean,\n  target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n  isServer: !IS_BROWSER,\n  useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n  gs: GlobalStylesAllocationMap;\n\n  names: NamesAllocationMap;\n\n  options: SheetOptions;\n\n  server: boolean;\n\n  tag: void | GroupedTag;\n\n  /** Register a group ID to give it an index */\n  static registerId(id: string): number {\n    return getGroupForId(id);\n  }\n\n  constructor(\n    options: SheetConstructorArgs = EMPTY_OBJECT,\n    globalStyles?: GlobalStylesAllocationMap = {},\n    names?: NamesAllocationMap\n  ) {\n    this.options = {\n      ...defaultOptions,\n      ...options,\n    };\n\n    this.gs = globalStyles;\n    this.names = new Map(names);\n    this.server = !!options.isServer;\n\n    // We rehydrate only once and use the sheet that is created first\n    if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n      SHOULD_REHYDRATE = false;\n      rehydrateSheet(this);\n    }\n  }\n\n  reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n    return new StyleSheet(\n      { ...this.options, ...options },\n      this.gs,\n      (withNames && this.names) || undefined\n    );\n  }\n\n  allocateGSInstance(id: string) {\n    return (this.gs[id] = (this.gs[id] || 0) + 1);\n  }\n\n  /** Lazily initialises a GroupedTag for when it's actually needed */\n  getTag(): GroupedTag {\n    return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n  }\n\n  /** Check whether a name is known for caching */\n  hasNameForId(id: string, name: string): boolean {\n    return this.names.has(id) && (this.names.get(id): any).has(name);\n  }\n\n  /** Mark a group's name as known for caching */\n  registerName(id: string, name: string) {\n    getGroupForId(id);\n\n    if (!this.names.has(id)) {\n      const groupNames = new Set();\n      groupNames.add(name);\n      this.names.set(id, groupNames);\n    } else {\n      (this.names.get(id): any).add(name);\n    }\n  }\n\n  /** Insert new rules which also marks the name as known */\n  insertRules(id: string, name: string, rules: string[]) {\n    this.registerName(id, name);\n    this.getTag().insertRules(getGroupForId(id), rules);\n  }\n\n  /** Clears all cached names for a given group ID */\n  clearNames(id: string) {\n    if (this.names.has(id)) {\n      (this.names.get(id): any).clear();\n    }\n  }\n\n  /** Clears all rules for a given group ID */\n  clearRules(id: string) {\n    this.getTag().clearGroup(getGroupForId(id));\n    this.clearNames(id);\n  }\n\n  /** Clears the entire tag which deletes all rules but not its names */\n  clearTag() {\n    // NOTE: This does not clear the names, since it's only used during SSR\n    // so that we can continuously output only new rules\n    this.tag = undefined;\n  }\n\n  /** Outputs the current sheet as a CSS string with markers for SSR */\n  toString(): string {\n    return outputSheet(this);\n  }\n}\n","// @flow\n/* eslint-disable no-bitwise */\n\nconst AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number): string =>\n  String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number): string {\n  let name = '';\n  let x;\n\n  /* get a char and divide by alphabet-length */\n  for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n    name = getAlphabeticChar(x % charsLength) + name;\n  }\n\n  return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","// @flow\n/* eslint-disable */\n\nexport const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string): number => {\n  let i = x.length;\n\n  while (i) {\n    h = (h * 33) ^ x.charCodeAt(--i);\n  }\n\n  return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string): number => {\n  return phash(SEED, x);\n};\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n  for (let i = 0; i < rules.length; i += 1) {\n    const rule = rules[i];\n\n    if (isFunction(rule) && !isStyledComponent(rule)) {\n      // functions are allowed to be static if they're just being\n      // used to get the classname of a nested styled component\n      return false;\n    }\n  }\n\n  return true;\n}\n","// @flow\nimport { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n  baseHash: number;\n\n  baseStyle: ?ComponentStyle;\n\n  componentId: string;\n\n  isStatic: boolean;\n\n  rules: RuleSet;\n\n  staticRulesId: string;\n\n  constructor(rules: RuleSet, componentId: string, baseStyle?: ComponentStyle) {\n    this.rules = rules;\n    this.staticRulesId = '';\n    this.isStatic = process.env.NODE_ENV === 'production' &&\n      (baseStyle === undefined || baseStyle.isStatic) &&\n      isStaticRules(rules);\n    this.componentId = componentId;\n\n    // SC_VERSION gives us isolation between multiple runtimes on the page at once\n    // this is improved further with use of the babel plugin \"namespace\" feature\n    this.baseHash = phash(SEED, componentId);\n\n    this.baseStyle = baseStyle;\n\n    // NOTE: This registers the componentId, which ensures a consistent order\n    // for this component's styles compared to others\n    StyleSheet.registerId(componentId);\n  }\n\n  /*\n   * Flattens a rule set into valid CSS\n   * Hashes it, wraps the whole chunk in a .hash1234 {}\n   * Returns the hash to be injected on render()\n   * */\n  generateAndInjectStyles(executionContext: Object, styleSheet: StyleSheet, stylis: Stringifier) {\n    const { componentId } = this;\n\n    const names = [];\n\n    if (this.baseStyle) {\n      names.push(this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis));\n    }\n\n    // force dynamic classnames if user-supplied stylis plugins are in use\n    if (this.isStatic && !stylis.hash) {\n      if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n        names.push(this.staticRulesId);\n      } else {\n        const cssStatic = flatten(this.rules, executionContext, styleSheet, stylis).join('');\n        const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n        if (!styleSheet.hasNameForId(componentId, name)) {\n          const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, componentId);\n\n          styleSheet.insertRules(componentId, name, cssStaticFormatted);\n        }\n\n        names.push(name);\n        this.staticRulesId = name;\n      }\n    } else {\n      const { length } = this.rules;\n      let dynamicHash = phash(this.baseHash, stylis.hash);\n      let css = '';\n\n      for (let i = 0; i < length; i++) {\n        const partRule = this.rules[i];\n\n        if (typeof partRule === 'string') {\n          css += partRule;\n\n          if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule + i);\n        } else if (partRule) {\n          const partChunk = flatten(partRule, executionContext, styleSheet, stylis);\n          const partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n          dynamicHash = phash(dynamicHash, partString + i);\n          css += partString;\n        }\n      }\n\n      if (css) {\n        const name = generateName(dynamicHash >>> 0);\n\n        if (!styleSheet.hasNameForId(componentId, name)) {\n          const cssFormatted = stylis(css, `.${name}`, undefined, componentId);\n          styleSheet.insertRules(componentId, name, cssFormatted);\n        }\n\n        names.push(name);\n      }\n    }\n\n    return names.join(' ');\n  }\n}\n","import Stylis from '@emotion/stylis';\nimport { type Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { phash, SEED } from './hash';\nimport insertRulePlugin from './stylisPluginInsertRule';\n\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\nconst COMPLEX_SELECTOR_PREFIX = [':', '[', '.', '#'];\n\ntype StylisInstanceConstructorArgs = {\n  options?: Object,\n  plugins?: Array<Function>,\n};\n\nexport default function createStylisInstance({\n  options = EMPTY_OBJECT,\n  plugins = EMPTY_ARRAY,\n}: StylisInstanceConstructorArgs = EMPTY_OBJECT) {\n  const stylis = new Stylis(options);\n\n  // Wrap `insertRulePlugin to build a list of rules,\n  // and then make our own plugin to return the rules. This\n  // makes it easier to hook into the existing SSR architecture\n\n  let parsingRules = [];\n\n  // eslint-disable-next-line consistent-return\n  const returnRulesPlugin = context => {\n    if (context === -2) {\n      const parsedRules = parsingRules;\n      parsingRules = [];\n      return parsedRules;\n    }\n  };\n\n  const parseRulesPlugin = insertRulePlugin(rule => {\n    parsingRules.push(rule);\n  });\n\n  let _componentId: string;\n  let _selector: string;\n  let _selectorRegexp: RegExp;\n  let _consecutiveSelfRefRegExp: RegExp;\n\n  const selfReferenceReplacer = (match, offset, string) => {\n    if (\n      // do not replace the first occurrence if it is complex (has a modifier)\n      (offset === 0 ? COMPLEX_SELECTOR_PREFIX.indexOf(string[_selector.length]) === -1 : true) &&\n      // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n      !string.match(_consecutiveSelfRefRegExp)\n    ) {\n      return `.${_componentId}`;\n    }\n\n    return match;\n  };\n\n  /**\n   * When writing a style like\n   *\n   * & + & {\n   *   color: red;\n   * }\n   *\n   * The second ampersand should be a reference to the static component class. stylis\n   * has no knowledge of static class so we have to intelligently replace the base selector.\n   *\n   * https://github.com/thysultan/stylis.js/tree/v3.5.4#plugins <- more info about the context phase values\n   * \"2\" means this plugin is taking effect at the very end after all other processing is complete\n   */\n  const selfReferenceReplacementPlugin = (context, _, selectors) => {\n    if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n      // eslint-disable-next-line no-param-reassign\n      selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n    }\n  };\n\n  stylis.use([...plugins, selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\n\n  function stringifyRules(css, selector, prefix, componentId = '&'): Stringifier {\n    const flatCSS = css.replace(COMMENT_REGEX, '');\n    const cssStr = selector && prefix ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS;\n\n    // stylis has no concept of state to be passed to plugins\n    // but since JS is single-threaded, we can rely on that to ensure\n    // these properties stay in sync with the current stylis run\n    _componentId = componentId;\n    _selector = selector;\n    _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n    _consecutiveSelfRefRegExp = new RegExp(`(\\\\${_selector}\\\\b){2,}`);\n\n    return stylis(prefix || !selector ? '' : selector, cssStr);\n  }\n\n  stringifyRules.hash = plugins.length\n    ? plugins\n        .reduce((acc, plugin) => {\n          if (!plugin.name) {\n            throwStyledError(15);\n          }\n\n          return phash(acc, plugin.name);\n        }, SEED)\n        .toString()\n    : '';\n\n  return stringifyRules;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2016 Sultan Tarimo\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/* eslint-disable */\n\nexport default function(insertRule) {\n  const delimiter = '/*|*/';\n  const needle = `${delimiter}}`;\n\n  function toSheet(block) {\n    if (block) {\n      try {\n        insertRule(`${block}}`);\n      } catch (e) {}\n    }\n  }\n\n  return function ruleSheet(\n    context,\n    content,\n    selectors,\n    parents,\n    line,\n    column,\n    length,\n    ns,\n    depth,\n    at\n  ) {\n    switch (context) {\n      // property\n      case 1:\n        // @import\n        if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(`${content};`), '';\n        break;\n      // selector\n      case 2:\n        if (ns === 0) return content + delimiter;\n        break;\n      // at-rule\n      case 3:\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            return insertRule(selectors[0] + content), '';\n          default:\n            return content + (at === 0 ? delimiter : '');\n        }\n      case -2:\n        content.split(needle).forEach(toSheet);\n    }\n  };\n}\n","// @flow\nimport React, { type Context, type Node, useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport StyleSheet from '../sheet';\nimport type { Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\ntype Props = {\n  children?: Node,\n  disableCSSOMInjection?: boolean,\n  disableVendorPrefixes?: boolean,\n  sheet?: StyleSheet,\n  stylisPlugins?: Array<Function>,\n  target?: HTMLElement,\n};\n\nexport const StyleSheetContext: Context<StyleSheet | void> = React.createContext();\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\nexport const StylisContext: Context<Stringifier | void> = React.createContext();\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport const masterSheet: StyleSheet = new StyleSheet();\nexport const masterStylis: Stringifier = createStylisInstance();\n\nexport function useStyleSheet(): StyleSheet {\n  return useContext(StyleSheetContext) || masterSheet;\n}\n\nexport function useStylis(): Stringifier {\n  return useContext(StylisContext) || masterStylis;\n}\n\nexport default function StyleSheetManager(props: Props) {\n  const [plugins, setPlugins] = useState(props.stylisPlugins);\n  const contextStyleSheet = useStyleSheet();\n\n  const styleSheet = useMemo(() => {\n    let sheet = contextStyleSheet;\n\n    if (props.sheet) {\n      // eslint-disable-next-line prefer-destructuring\n      sheet = props.sheet;\n    } else if (props.target) {\n      sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n    }\n\n    if (props.disableCSSOMInjection) {\n      sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n    }\n\n    return sheet;\n  }, [props.disableCSSOMInjection, props.sheet, props.target]);\n\n  const stylis = useMemo(\n    () =>\n      createStylisInstance({\n        options: { prefix: !props.disableVendorPrefixes },\n        plugins,\n      }),\n    [props.disableVendorPrefixes, plugins]\n  );\n\n  useEffect(() => {\n    if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n  }, [props.stylisPlugins]);\n\n  return (\n    <StyleSheetContext.Provider value={styleSheet}>\n      <StylisContext.Provider value={stylis}>\n        {process.env.NODE_ENV !== 'production'\n          ? React.Children.only(props.children)\n          : props.children}\n      </StylisContext.Provider>\n    </StyleSheetContext.Provider>\n  );\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n  id: string;\n\n  name: string;\n\n  rules: string;\n\n  constructor(name: string, rules: string) {\n    this.name = name;\n    this.id = `sc-keyframes-${name}`;\n    this.rules = rules;\n  }\n\n  inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n    const resolvedName = this.name + stylisInstance.hash;\n\n    if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n      styleSheet.insertRules(\n        this.id,\n        resolvedName,\n        stylisInstance(this.rules, resolvedName, '@keyframes')\n      );\n    }\n  };\n\n  toString = () => {\n    return throwStyledError(12, String(this.name));\n  };\n\n  getName(stylisInstance: Stringifier = masterStylis) {\n    return this.name + stylisInstance.hash;\n  }\n}\n","// @flow\n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nconst uppercaseCheck = /([A-Z])/;\nconst uppercasePattern = /([A-Z])/g;\nconst msPattern = /^ms-/;\nconst prefixAndLowerCase = (char: string): string => `-${char.toLowerCase()}`;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nexport default function hyphenateStyleName(string: string): string {\n  return uppercaseCheck.test(string)\n  ? string\n    .replace(uppercasePattern, prefixAndLowerCase)\n    .replace(msPattern, '-ms-')\n  : string;\n}\n","// @flow\nimport { isElement } from 'react-is';\nimport getComponentName from './getComponentName';\nimport isFunction from './isFunction';\nimport isStatelessFunction from './isStatelessFunction';\nimport isPlainObject from './isPlainObject';\nimport isStyledComponent from './isStyledComponent';\nimport Keyframes from '../models/Keyframes';\nimport hyphenate from './hyphenateStyleName';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { type Stringifier } from '../types';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = chunk => chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Object, prevKey?: string): Array<string | Function> => {\n  const rules = [];\n\n  for (const key in obj) {\n    if (!obj.hasOwnProperty(key) || isFalsish(obj[key])) continue;\n\n    if ((Array.isArray(obj[key]) && obj[key].isCss) || isFunction(obj[key])) {\n      rules.push(`${hyphenate(key)}:`, obj[key], ';');\n    } else if (isPlainObject(obj[key])) {\n      rules.push(...objToCssArray(obj[key], key));\n    } else {\n      rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, obj[key])};`);\n    }\n  }\n\n  return prevKey ? [`${prevKey} {`, ...rules, '}'] : rules;\n};\n\nexport default function flatten(\n  chunk: any,\n  executionContext: ?Object,\n  styleSheet: ?Object,\n  stylisInstance: ?Stringifier\n): any {\n  if (Array.isArray(chunk)) {\n    const ruleSet = [];\n\n    for (let i = 0, len = chunk.length, result; i < len; i += 1) {\n      result = flatten(chunk[i], executionContext, styleSheet, stylisInstance);\n\n      if (result === '') continue;\n      else if (Array.isArray(result)) ruleSet.push(...result);\n      else ruleSet.push(result);\n    }\n\n    return ruleSet;\n  }\n\n  if (isFalsish(chunk)) {\n    return '';\n  }\n\n  /* Handle other components */\n  if (isStyledComponent(chunk)) {\n    return `.${chunk.styledComponentId}`;\n  }\n\n  /* Either execute or defer the function */\n  if (isFunction(chunk)) {\n    if (isStatelessFunction(chunk) && executionContext) {\n      const result = chunk(executionContext);\n\n      if (process.env.NODE_ENV !== 'production' && isElement(result)) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `${getComponentName(\n            chunk\n          )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n        );\n      }\n\n      return flatten(result, executionContext, styleSheet, stylisInstance);\n    } else return chunk;\n  }\n\n  if (chunk instanceof Keyframes) {\n    if (styleSheet) {\n      chunk.inject(styleSheet, stylisInstance);\n      return chunk.getName(stylisInstance);\n    } else return chunk;\n  }\n\n  /* Handle objects */\n  return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();\n}\n","// @flow\nexport default function isStatelessFunction(test: any): boolean {\n  return (\n    typeof test === 'function'\n    && !(\n      test.prototype\n      && test.prototype.isReactComponent\n    )\n  );\n}\n","// @flow\nimport unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any): any {\n  // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n  // $FlowFixMe\n  if (value == null || typeof value === 'boolean' || value === '') {\n    return '';\n  }\n\n  if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n    return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n  }\n\n  return String(value).trim();\n}\n","// @flow\nimport interleave from '../utils/interleave';\nimport isPlainObject from '../utils/isPlainObject';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport isFunction from '../utils/isFunction';\nimport flatten from '../utils/flatten';\nimport type { Interpolation, RuleSet, Styles } from '../types';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = arg => {\n  if (Array.isArray(arg)) {\n    // eslint-disable-next-line no-param-reassign\n    arg.isCss = true;\n  }\n  return arg;\n};\n\nexport default function css(styles: Styles, ...interpolations: Array<Interpolation>): RuleSet {\n  if (isFunction(styles) || isPlainObject(styles)) {\n    // $FlowFixMe\n    return addTag(flatten(interleave(EMPTY_ARRAY, [styles, ...interpolations])));\n  }\n\n  if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === 'string') {\n    // $FlowFixMe\n    return styles;\n  }\n\n  // $FlowFixMe\n  return addTag(flatten(interleave(styles, interpolations)));\n}\n","// @flow\n\nimport { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string) => {\n  if (process.env.NODE_ENV !== 'production') {\n    const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n    const message =\n      `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n      \"You may see this warning because you've called styled inside another component.\\n\" +\n      'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n    // If a hook is called outside of a component:\n    // React 17 and earlier throw an error\n    // React 18 and above use console.error\n\n    const originalConsoleError = console.error // eslint-disable-line no-console\n    try {\n      let didNotCallInvalidHook = true\n      /* $FlowIgnore[cannot-write] */\n      console.error = (consoleErrorMessage, ...consoleErrorArgs) => { // eslint-disable-line no-console\n      // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n      // be called outside of a React component.\n        if (invalidHookCallRe.test(consoleErrorMessage)) {\n          didNotCallInvalidHook = false\n          // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n          seen.delete(message);\n        } else {\n          originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n        }\n      }\n      // We purposefully call `useRef` outside of a component and expect it to throw\n      // If it doesn't, then we're inside another component.\n      // eslint-disable-next-line react-hooks/rules-of-hooks\n      useRef();\n\n      if (didNotCallInvalidHook && !seen.has(message)) {\n        // eslint-disable-next-line no-console\n        console.warn(message);\n        seen.add(message);\n      }\n    } catch (error) {\n      // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n      // be called outside of a React component.\n      if (invalidHookCallRe.test(error.message)) {\n        // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n        seen.delete(message);\n      }\n    } finally {\n      /* $FlowIgnore[cannot-write] */\n      console.error = originalConsoleError; // eslint-disable-line no-console\n    }\n  }\n};\n","// @flow\nimport { EMPTY_OBJECT } from './empties';\n\ntype Props = {\n  theme?: any,\n};\n\nexport default (props: Props, providedTheme: any, defaultProps: any = EMPTY_OBJECT) => {\n  return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n};\n","// @flow\n\n// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string): string {\n  return (\n    str\n      // Replace all possible CSS selectors\n      .replace(escapeRegex, '-')\n\n      // Remove extraneous hyphens at the start and end\n      .replace(dashesAtEnds, '')\n  );\n}\n","// @flow\n/* eslint-disable */\nimport generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default (str: string): string => {\n  return generateAlphabeticName(hash(str) >>> 0);\n};\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function isTag(target: $PropertyType<IStyledComponent, 'target'>): boolean %checks {\n  return (\n    typeof target === 'string' &&\n    (process.env.NODE_ENV !== 'production'\n      ? target.charAt(0) === target.charAt(0).toLowerCase()\n      : true)\n  );\n}\n","/* eslint-disable */\n/**\n  mixin-deep; https://github.com/jonschlinkert/mixin-deep\n  Inlined such that it will be consistently transpiled to an IE-compatible syntax.\n\n  The MIT License (MIT)\n\n  Copyright (c) 2014-present, Jon Schlinkert.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\n\nconst isObject = val => {\n  return (\n    typeof val === 'function' || (typeof val === 'object' && val !== null && !Array.isArray(val))\n  );\n};\n\nconst isValidKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nfunction mixin(target, val, key) {\n  const obj = target[key];\n  if (isObject(val) && isObject(obj)) {\n    mixinDeep(obj, val);\n  } else {\n    target[key] = val;\n  }\n}\n\nexport default function mixinDeep(target, ...rest) {\n  for (const obj of rest) {\n    if (isObject(obj)) {\n      for (const key in obj) {\n        if (isValidKey(key)) {\n          mixin(target, obj[key], key);\n        }\n      }\n    }\n  }\n\n  return target;\n}\n","// @flow\nimport React, { useContext, useMemo, type Element, type Context } from 'react';\nimport throwStyledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\nexport type Theme = { [key: string]: mixed };\n\ntype ThemeArgument = Theme | ((outerTheme?: Theme) => Theme);\n\ntype Props = {\n  children?: Element<any>,\n  theme: ThemeArgument,\n};\n\nexport const ThemeContext: Context<Theme | void> = React.createContext();\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: Theme): Theme {\n  if (!theme) {\n    return throwStyledError(14);\n  }\n\n  if (isFunction(theme)) {\n    const mergedTheme = theme(outerTheme);\n\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n    ) {\n      return throwStyledError(7);\n    }\n\n    return mergedTheme;\n  }\n\n  if (Array.isArray(theme) || typeof theme !== 'object') {\n    return throwStyledError(8);\n  }\n\n  return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props) {\n  const outerTheme = useContext(ThemeContext);\n  const themeContext = useMemo(() => mergeTheme(props.theme, outerTheme), [\n    props.theme,\n    outerTheme,\n  ]);\n\n  if (!props.children) {\n    return null;\n  }\n\n  return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n  Attrs,\n  IStyledComponent,\n  IStyledStatics,\n  RuleSet,\n  ShouldForwardProp,\n  Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n  const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n  // Ensure that no displayName can lead to duplicate componentIds\n  identifiers[name] = (identifiers[name] || 0) + 1;\n\n  const componentId = `${name}-${generateComponentId(\n    // SC_VERSION gives us isolation between multiple runtimes on the page at once\n    // this is improved further with use of the babel plugin \"namespace\" feature\n    SC_VERSION + name + identifiers[name]\n  )}`;\n\n  return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs<Config>(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n  // NOTE: can't memoize this\n  // returns [context, resolvedAttrs]\n  // where resolvedAttrs is only the things injected by the attrs themselves\n  const context = { ...props, theme };\n  const resolvedAttrs = {};\n\n  attrs.forEach(attrDef => {\n    let resolvedAttrDef = attrDef;\n    let key;\n\n    if (isFunction(resolvedAttrDef)) {\n      resolvedAttrDef = resolvedAttrDef(context);\n    }\n\n    /* eslint-disable guard-for-in */\n    for (key in resolvedAttrDef) {\n      context[key] = resolvedAttrs[key] =\n        key === 'className'\n          ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n          : resolvedAttrDef[key];\n    }\n    /* eslint-enable guard-for-in */\n  });\n\n  return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle<T>(\n  componentStyle: ComponentStyle,\n  isStatic: boolean,\n  resolvedAttrs: T,\n  warnTooManyClasses?: $Call<typeof createWarnTooManyClasses, string, string>\n) {\n  const styleSheet = useStyleSheet();\n  const stylis = useStylis();\n\n  const className = isStatic\n    ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n    : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n  if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n    warnTooManyClasses(className);\n  }\n\n  return className;\n}\n\nfunction useStyledComponentImpl(\n  forwardedComponent: IStyledComponent,\n  props: Object,\n  forwardedRef: Ref<any>,\n  isStatic: boolean\n) {\n  const {\n    attrs: componentAttrs,\n    componentStyle,\n    defaultProps,\n    foldedComponentIds,\n    shouldForwardProp,\n    styledComponentId,\n    target,\n  } = forwardedComponent;\n\n  // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n  // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n  // should be an immutable value, but behave for now.\n  const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n  const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n  const generatedClassName = useInjectedStyle(\n    componentStyle,\n    isStatic,\n    context,\n    process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n  );\n\n  const refToForward = forwardedRef;\n\n  const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n  const isTargetTag = isTag(elementToBeCreated);\n  const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n  const propsForElement = {};\n\n  // eslint-disable-next-line guard-for-in\n  for (const key in computedProps) {\n    if (key[0] === '$' || key === 'as') continue;\n    else if (key === 'forwardedAs') {\n      propsForElement.as = computedProps[key];\n    } else if (\n      shouldForwardProp\n        ? shouldForwardProp(key, validAttr, elementToBeCreated)\n        : isTargetTag\n        ? validAttr(key)\n        : true\n    ) {\n      // Don't pass through non HTML tags through to HTML elements\n      propsForElement[key] = computedProps[key];\n    }\n  }\n\n  if (props.style && attrs.style !== props.style) {\n    propsForElement.style = { ...props.style, ...attrs.style };\n  }\n\n  propsForElement.className = Array.prototype\n    .concat(\n      foldedComponentIds,\n      styledComponentId,\n      generatedClassName !== styledComponentId ? generatedClassName : null,\n      props.className,\n      attrs.className\n    )\n    .filter(Boolean)\n    .join(' ');\n\n  propsForElement.ref = refToForward;\n\n  return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n  target: $PropertyType<IStyledComponent, 'target'>,\n  options: {\n    attrs?: Attrs,\n    componentId: string,\n    displayName?: string,\n    parentComponentId?: string,\n    shouldForwardProp?: ShouldForwardProp,\n  },\n  rules: RuleSet\n) {\n  const isTargetStyledComp = isStyledComponent(target);\n  const isCompositeComponent = !isTag(target);\n\n  const {\n    attrs = EMPTY_ARRAY,\n    componentId = generateId(options.displayName, options.parentComponentId),\n    displayName = generateDisplayName(target),\n  } = options;\n\n  const styledComponentId =\n    options.displayName && options.componentId\n      ? `${escape(options.displayName)}-${options.componentId}`\n      : options.componentId || componentId;\n\n  // fold the underlying StyledComponent attrs up (implicit extend)\n  const finalAttrs =\n    isTargetStyledComp && ((target: any): IStyledComponent).attrs\n      ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n      : attrs;\n\n  // eslint-disable-next-line prefer-destructuring\n  let shouldForwardProp = options.shouldForwardProp;\n\n  if (isTargetStyledComp && target.shouldForwardProp) {\n    if (options.shouldForwardProp) {\n      // compose nested shouldForwardProp calls\n      shouldForwardProp = (prop, filterFn, elementToBeCreated) =>\n        ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n          prop,\n          filterFn,\n          elementToBeCreated\n        ) &&\n        ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn, elementToBeCreated);\n    } else {\n      // eslint-disable-next-line prefer-destructuring\n      shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n    }\n  }\n\n  const componentStyle = new ComponentStyle(\n    rules,\n    styledComponentId,\n    isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n  );\n\n  // statically styled-components don't need to build an execution context object,\n  // and shouldn't be increasing the number of class names\n  const isStatic = componentStyle.isStatic && attrs.length === 0;\n\n  /**\n   * forwardRef creates a new interim component, which we'll take advantage of\n   * instead of extending ParentComponent to create _another_ interim class\n   */\n  let WrappedStyledComponent: IStyledComponent;\n\n  const forwardRef = (props, ref) =>\n    // eslint-disable-next-line\n    useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n  forwardRef.displayName = displayName;\n\n  WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n  WrappedStyledComponent.attrs = finalAttrs;\n  WrappedStyledComponent.componentStyle = componentStyle;\n  WrappedStyledComponent.displayName = displayName;\n  WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n  // this static is used to preserve the cascade of static classes for component selector\n  // purposes; this is especially important with usage of the css prop\n  WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n    ? Array.prototype.concat(\n        ((target: any): IStyledComponent).foldedComponentIds,\n        ((target: any): IStyledComponent).styledComponentId\n      )\n    : EMPTY_ARRAY;\n\n  WrappedStyledComponent.styledComponentId = styledComponentId;\n\n  // fold the underlying StyledComponent target up since we folded the styles\n  WrappedStyledComponent.target = isTargetStyledComp\n    ? ((target: any): IStyledComponent).target\n    : target;\n\n  WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n    const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n    const newComponentId =\n      previousComponentId &&\n      `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n    const newOptions = {\n      ...optionsToCopy,\n      attrs: finalAttrs,\n      componentId: newComponentId,\n    };\n\n    return createStyledComponent(tag, newOptions, rules);\n  };\n\n  Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n    get() {\n      return this._foldedDefaultProps;\n    },\n\n    set(obj) {\n      this._foldedDefaultProps = isTargetStyledComp\n        ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n        : obj;\n    },\n  });\n\n  if (process.env.NODE_ENV !== 'production') {\n    checkDynamicCreation(displayName, styledComponentId);\n\n    WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n      displayName,\n      styledComponentId\n    );\n  }\n\n  // If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n  // cannot have the property changed using an assignment. If using strict mode, attempting that will cause an error. If not using strict\n  // mode, attempting that will be silently ignored.\n  // However, we can still explicitly shadow the prototype's \"toString\" property by defining a new \"toString\" property on this object.\n  Object.defineProperty(WrappedStyledComponent, 'toString', { value: () => `.${WrappedStyledComponent.styledComponentId}` });\n\n  if (isCompositeComponent) {\n    hoist<\n      IStyledStatics,\n      $PropertyType<IStyledComponent, 'target'>,\n      { [key: $Keys<IStyledStatics>]: true }\n    >(WrappedStyledComponent, ((target: any): $PropertyType<IStyledComponent, 'target'>), {\n      // all SC-specific things should not be hoisted\n      attrs: true,\n      componentStyle: true,\n      displayName: true,\n      foldedComponentIds: true,\n      shouldForwardProp: true,\n      styledComponentId: true,\n      target: true,\n      withComponent: true,\n    });\n  }\n\n  return WrappedStyledComponent;\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(\n  target: $PropertyType<IStyledComponent, 'target'>\n): string {\n  return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport default function joinStrings(a: ?String, b: ?String): ?String {\n  return a && b ? `${a} ${b}` : a || b;\n}\n","// @flow\n// Thanks to ReactDOMFactories for this handy list!\n\nexport default [\n  'a',\n  'abbr',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'base',\n  'bdi',\n  'bdo',\n  'big',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'data',\n  'datalist',\n  'dd',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'div',\n  'dl',\n  'dt',\n  'em',\n  'embed',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'iframe',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'keygen',\n  'label',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meta',\n  'meter',\n  'nav',\n  'noscript',\n  'object',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'param',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'script',\n  'section',\n  'select',\n  'small',\n  'source',\n  'span',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'title',\n  'tr',\n  'track',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n\n  // SVG\n  'circle',\n  'clipPath',\n  'defs',\n  'ellipse',\n  'foreignObject',\n  'g',\n  'image',\n  'line',\n  'linearGradient',\n  'marker',\n  'mask',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialGradient',\n  'rect',\n  'stop',\n  'svg',\n  'text',\n  'textPath',\n  'tspan',\n];\n","// @flow\nimport constructWithOptions from './constructWithOptions';\nimport StyledComponent from '../models/StyledComponent';\nimport domElements from '../utils/domElements';\n\nimport type { Target } from '../types';\n\nconst styled = (tag: Target) => constructWithOptions(StyledComponent, tag);\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n  styled[domElement] = styled(domElement);\n});\n\nexport default styled;\n","// @flow\nimport { isValidElementType } from 'react-is';\nimport css from './css';\nimport throwStyledError from '../utils/error';\nimport { EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Target } from '../types';\n\nexport default function constructWithOptions(\n  componentConstructor: Function,\n  tag: Target,\n  options: Object = EMPTY_OBJECT\n) {\n  if (!isValidElementType(tag)) {\n    return throwStyledError(1, String(tag));\n  }\n\n  /* This is callable directly as a template function */\n  // $FlowFixMe: Not typed to avoid destructuring arguments\n  const templateFunction = (...args) => componentConstructor(tag, options, css(...args));\n\n  /* If config methods are called, wrap up a new template function and merge options */\n  templateFunction.withConfig = config =>\n    constructWithOptions(componentConstructor, tag, { ...options, ...config });\n\n  /* Modify/inject new props at runtime */\n  templateFunction.attrs = attrs =>\n    constructWithOptions(componentConstructor, tag, {\n      ...options,\n      attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n    });\n\n  return templateFunction;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\n\nexport default class GlobalStyle {\n  componentId: string;\n\n  isStatic: boolean;\n\n  rules: RuleSet;\n\n  constructor(rules: RuleSet, componentId: string) {\n    this.rules = rules;\n    this.componentId = componentId;\n    this.isStatic = isStaticRules(rules);\n\n    // pre-register the first instance to ensure global styles\n    // load before component ones\n    StyleSheet.registerId(this.componentId + 1);\n  }\n\n  createStyles(\n    instance: number,\n    executionContext: Object,\n    styleSheet: StyleSheet,\n    stylis: Stringifier\n  ) {\n    const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n    const css = stylis(flatCSS.join(''), '');\n    const id = this.componentId + instance;\n\n    // NOTE: We use the id as a name as well, since these rules never change\n    styleSheet.insertRules(id, id, css);\n  }\n\n  removeStyles(instance: number, styleSheet: StyleSheet) {\n    styleSheet.clearRules(this.componentId + instance);\n  }\n\n  renderStyles(\n    instance: number,\n    executionContext: Object,\n    styleSheet: StyleSheet,\n    stylis: Stringifier\n  ) {\n    if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n    // NOTE: Remove old styles, then inject the new ones\n    this.removeStyles(instance, styleSheet);\n    this.createStyles(instance, executionContext, styleSheet, stylis);\n  }\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n  isStreaming: boolean;\n\n  instance: StyleSheet;\n\n  sealed: boolean;\n\n  constructor() {\n    this.instance = new StyleSheet({ isServer: true });\n    this.sealed = false;\n  }\n\n  _emitSheetCSS = (): string => {\n    const css = this.instance.toString();\n    if (!css) return '';\n\n    const nonce = getNonce();\n    const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n    const htmlAttr = attrs.filter(Boolean).join(' ');\n\n    return `<style ${htmlAttr}>${css}</style>`;\n  };\n\n  collectStyles(children: any) {\n    if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    return <StyleSheetManager sheet={this.instance}>{children}</StyleSheetManager>;\n  }\n\n  getStyleTags = (): string => {\n    if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    return this._emitSheetCSS();\n  };\n\n  getStyleElement = () => {\n    if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    const props = {\n      [SC_ATTR]: '',\n      [SC_ATTR_VERSION]: SC_VERSION,\n      dangerouslySetInnerHTML: {\n        __html: this.instance.toString(),\n      },\n    };\n\n    const nonce = getNonce();\n    if (nonce) {\n      (props: any).nonce = nonce;\n    }\n\n    // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n    return [<style {...props} key=\"sc-0-0\" />];\n  };\n\n  // eslint-disable-next-line consistent-return\n  interleaveWithNodeStream(input: any) {\n    if (!__SERVER__ || IS_BROWSER) {\n      return throwStyledError(3);\n    } else if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    if (__SERVER__) {\n      this.seal();\n\n      // eslint-disable-next-line global-require\n      const { Readable, Transform } = require('stream');\n\n      const readableStream: Readable = input;\n      const { instance: sheet, _emitSheetCSS } = this;\n\n      const transformer = new Transform({\n        transform: function appendStyleChunks(chunk, /* encoding */ _, callback) {\n          // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n          // then reset its rules so we get only new ones for the next chunk\n          const renderedHtml = chunk.toString();\n          const html = _emitSheetCSS();\n\n          sheet.clearTag();\n\n          // prepend style html to chunk, unless the start of the chunk is a\n          // closing tag in which case append right after that\n          if (CLOSING_TAG_R.test(renderedHtml)) {\n            const endOfClosingTag = renderedHtml.indexOf('>') + 1;\n            const before = renderedHtml.slice(0, endOfClosingTag);\n            const after = renderedHtml.slice(endOfClosingTag);\n\n            this.push(before + html + after);\n          } else {\n            this.push(html + renderedHtml);\n          }\n\n          callback();\n        },\n      });\n\n      readableStream.on('error', err => {\n        // forward the error to the transform stream\n        transformer.emit('error', err);\n      });\n\n      return readableStream.pipe(transformer);\n    }\n  }\n\n  seal = () => {\n    this.sealed = true;\n  };\n}\n","// @flow\n/* Import singletons */\nimport isStyledComponent from './utils/isStyledComponent';\nimport css from './constructors/css';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport keyframes from './constructors/keyframes';\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport { SC_VERSION } from './constants';\n\nimport StyleSheetManager, {\n  StyleSheetContext,\n  StyleSheetConsumer,\n} from './models/StyleSheetManager';\n\n/* Import components */\nimport ThemeProvider, { ThemeContext, ThemeConsumer } from './models/ThemeProvider';\n\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n\n/* Import hooks */\nimport useTheme from './hooks/useTheme';\n\ndeclare var __SERVER__: boolean;\n\n/* Warning if you've imported this file on React Native */\nif (\n  process.env.NODE_ENV !== 'production' &&\n  typeof navigator !== 'undefined' &&\n  navigator.product === 'ReactNative'\n) {\n  // eslint-disable-next-line no-console\n  console.warn(\n    \"It looks like you've imported 'styled-components' on React Native.\\n\" +\n      \"Perhaps you're looking to import 'styled-components/native'?\\n\" +\n      'Read more about this at https://www.styled-components.com/docs/basics#react-native'\n  );\n}\n\n/* Warning if there are several instances of styled-components */\nif (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && typeof window !== 'undefined') {\n  window['__styled-components-init__'] = window['__styled-components-init__'] || 0;\n\n  if (window['__styled-components-init__'] === 1) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      \"It looks like there are several instances of 'styled-components' initialized in this application. \" +\n        'This may cause dynamic styles to not render properly, errors during the rehydration process, ' +\n        'a missing theme prop, and makes your application bigger without good reason.\\n\\n' +\n        'See https://s-c.sh/2BAXzed for more info.'\n    );\n  }\n\n  window['__styled-components-init__'] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport {\n  createGlobalStyle,\n  css,\n  isStyledComponent,\n  keyframes,\n  ServerStyleSheet,\n  StyleSheetConsumer,\n  StyleSheetContext,\n  StyleSheetManager,\n  ThemeConsumer,\n  ThemeContext,\n  ThemeProvider,\n  useTheme,\n  SC_VERSION as version,\n  withTheme,\n};\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","export var CameraSource;\n(function (CameraSource) {\n    CameraSource[\"Prompt\"] = \"PROMPT\";\n    CameraSource[\"Camera\"] = \"CAMERA\";\n    CameraSource[\"Photos\"] = \"PHOTOS\";\n})(CameraSource || (CameraSource = {}));\nexport var CameraDirection;\n(function (CameraDirection) {\n    CameraDirection[\"Rear\"] = \"REAR\";\n    CameraDirection[\"Front\"] = \"FRONT\";\n})(CameraDirection || (CameraDirection = {}));\nexport var CameraResultType;\n(function (CameraResultType) {\n    CameraResultType[\"Uri\"] = \"uri\";\n    CameraResultType[\"Base64\"] = \"base64\";\n    CameraResultType[\"DataUrl\"] = \"dataUrl\";\n})(CameraResultType || (CameraResultType = {}));\nexport var FilesystemDirectory;\n(function (FilesystemDirectory) {\n    /**\n     * The Documents directory\n     * On iOS it's the app's documents directory.\n     * Use this directory to store user-generated content.\n     * On Android it's the Public Documents folder, so it's accessible from other apps.\n     * It's not accesible on Android 10 unless the app enables legacy External Storage\n     * by adding `android:requestLegacyExternalStorage=\"true\"` in the `application` tag\n     * in the `AndroidManifest.xml`\n     */\n    FilesystemDirectory[\"Documents\"] = \"DOCUMENTS\";\n    /**\n     * The Data directory\n     * On iOS it will use the Documents directory\n     * On Android it's the directory holding application files.\n     * Files will be deleted when the application is uninstalled.\n     */\n    FilesystemDirectory[\"Data\"] = \"DATA\";\n    /**\n     * The Cache directory\n     * Can be deleted in cases of low memory, so use this directory to write app-specific files\n     * that your app can re-create easily.\n     */\n    FilesystemDirectory[\"Cache\"] = \"CACHE\";\n    /**\n     * The external directory\n     * On iOS it will use the Documents directory\n     * On Android it's the directory on the primary shared/external\n     * storage device where the application can place persistent files it owns.\n     * These files are internal to the applications, and not typically visible\n     * to the user as media.\n     * Files will be deleted when the application is uninstalled.\n     */\n    FilesystemDirectory[\"External\"] = \"EXTERNAL\";\n    /**\n     * The external storage directory\n     * On iOS it will use the Documents directory\n     * On Android it's the primary shared/external storage directory.\n     * It's not accesible on Android 10 unless the app enables legacy External Storage\n     * by adding `android:requestLegacyExternalStorage=\"true\"` in the `application` tag\n     * in the `AndroidManifest.xml`\n     */\n    FilesystemDirectory[\"ExternalStorage\"] = \"EXTERNAL_STORAGE\";\n})(FilesystemDirectory || (FilesystemDirectory = {}));\nexport var FilesystemEncoding;\n(function (FilesystemEncoding) {\n    FilesystemEncoding[\"UTF8\"] = \"utf8\";\n    FilesystemEncoding[\"ASCII\"] = \"ascii\";\n    FilesystemEncoding[\"UTF16\"] = \"utf16\";\n})(FilesystemEncoding || (FilesystemEncoding = {}));\nexport var HapticsImpactStyle;\n(function (HapticsImpactStyle) {\n    HapticsImpactStyle[\"Heavy\"] = \"HEAVY\";\n    HapticsImpactStyle[\"Medium\"] = \"MEDIUM\";\n    HapticsImpactStyle[\"Light\"] = \"LIGHT\";\n})(HapticsImpactStyle || (HapticsImpactStyle = {}));\nexport var HapticsNotificationType;\n(function (HapticsNotificationType) {\n    HapticsNotificationType[\"SUCCESS\"] = \"SUCCESS\";\n    HapticsNotificationType[\"WARNING\"] = \"WARNING\";\n    HapticsNotificationType[\"ERROR\"] = \"ERROR\";\n})(HapticsNotificationType || (HapticsNotificationType = {}));\nexport var KeyboardStyle;\n(function (KeyboardStyle) {\n    KeyboardStyle[\"Dark\"] = \"DARK\";\n    KeyboardStyle[\"Light\"] = \"LIGHT\";\n})(KeyboardStyle || (KeyboardStyle = {}));\nexport var KeyboardResize;\n(function (KeyboardResize) {\n    KeyboardResize[\"Body\"] = \"body\";\n    KeyboardResize[\"Ionic\"] = \"ionic\";\n    KeyboardResize[\"Native\"] = \"native\";\n    KeyboardResize[\"None\"] = \"none\";\n})(KeyboardResize || (KeyboardResize = {}));\nexport var ActionSheetOptionStyle;\n(function (ActionSheetOptionStyle) {\n    ActionSheetOptionStyle[\"Default\"] = \"DEFAULT\";\n    ActionSheetOptionStyle[\"Destructive\"] = \"DESTRUCTIVE\";\n    ActionSheetOptionStyle[\"Cancel\"] = \"CANCEL\";\n})(ActionSheetOptionStyle || (ActionSheetOptionStyle = {}));\n//\nexport var PermissionType;\n(function (PermissionType) {\n    PermissionType[\"Camera\"] = \"camera\";\n    PermissionType[\"Photos\"] = \"photos\";\n    PermissionType[\"Geolocation\"] = \"geolocation\";\n    PermissionType[\"Notifications\"] = \"notifications\";\n    PermissionType[\"ClipboardRead\"] = \"clipboard-read\";\n    PermissionType[\"ClipboardWrite\"] = \"clipboard-write\";\n    PermissionType[\"Microphone\"] = \"microphone\";\n})(PermissionType || (PermissionType = {}));\nexport var PhotosAlbumType;\n(function (PhotosAlbumType) {\n    /**\n     * Album is a \"smart\" album (such as Favorites or Recently Added)\n     */\n    PhotosAlbumType[\"Smart\"] = \"smart\";\n    /**\n     * Album is a cloud-shared album\n     */\n    PhotosAlbumType[\"Shared\"] = \"shared\";\n    /**\n     * Album is a user-created album\n     */\n    PhotosAlbumType[\"User\"] = \"user\";\n})(PhotosAlbumType || (PhotosAlbumType = {}));\nexport var StatusBarStyle;\n(function (StatusBarStyle) {\n    /**\n     * Light text for dark backgrounds.\n     */\n    StatusBarStyle[\"Dark\"] = \"DARK\";\n    /**\n     * Dark text for light backgrounds.\n     */\n    StatusBarStyle[\"Light\"] = \"LIGHT\";\n})(StatusBarStyle || (StatusBarStyle = {}));\nexport var StatusBarAnimation;\n(function (StatusBarAnimation) {\n    /**\n     * No animation during show/hide.\n     */\n    StatusBarAnimation[\"None\"] = \"NONE\";\n    /**\n     * Slide animation during show/hide.\n     */\n    StatusBarAnimation[\"Slide\"] = \"SLIDE\";\n    /**\n     * Fade animation during show/hide.\n     */\n    StatusBarAnimation[\"Fade\"] = \"FADE\";\n})(StatusBarAnimation || (StatusBarAnimation = {}));\n//# sourceMappingURL=core-plugin-definitions.js.map","var WebPluginRegistry = /** @class */ (function () {\n    function WebPluginRegistry() {\n        this.plugins = {};\n        this.loadedPlugins = {};\n    }\n    WebPluginRegistry.prototype.addPlugin = function (plugin) {\n        this.plugins[plugin.config.name] = plugin;\n    };\n    WebPluginRegistry.prototype.getPlugin = function (name) {\n        return this.plugins[name];\n    };\n    WebPluginRegistry.prototype.loadPlugin = function (name) {\n        var plugin = this.getPlugin(name);\n        if (!plugin) {\n            console.error(\"Unable to load web plugin \" + name + \", no such plugin found.\");\n            return;\n        }\n        plugin.load();\n    };\n    WebPluginRegistry.prototype.getPlugins = function () {\n        var p = [];\n        for (var name_1 in this.plugins) {\n            p.push(this.plugins[name_1]);\n        }\n        return p;\n    };\n    return WebPluginRegistry;\n}());\nexport { WebPluginRegistry };\nvar WebPlugins = new WebPluginRegistry();\nexport { WebPlugins };\nvar WebPlugin = /** @class */ (function () {\n    function WebPlugin(config, pluginRegistry) {\n        this.config = config;\n        this.loaded = false;\n        this.listeners = {};\n        this.windowListeners = {};\n        if (!pluginRegistry) {\n            WebPlugins.addPlugin(this);\n        }\n        else {\n            pluginRegistry.addPlugin(this);\n        }\n    }\n    WebPlugin.prototype.addWindowListener = function (handle) {\n        window.addEventListener(handle.windowEventName, handle.handler);\n        handle.registered = true;\n    };\n    WebPlugin.prototype.removeWindowListener = function (handle) {\n        if (!handle) {\n            return;\n        }\n        window.removeEventListener(handle.windowEventName, handle.handler);\n        handle.registered = false;\n    };\n    WebPlugin.prototype.addListener = function (eventName, listenerFunc) {\n        var _this = this;\n        var listeners = this.listeners[eventName];\n        if (!listeners) {\n            this.listeners[eventName] = [];\n        }\n        this.listeners[eventName].push(listenerFunc);\n        // If we haven't added a window listener for this event and it requires one,\n        // go ahead and add it\n        var windowListener = this.windowListeners[eventName];\n        if (windowListener && !windowListener.registered) {\n            this.addWindowListener(windowListener);\n        }\n        return {\n            remove: function () {\n                _this.removeListener(eventName, listenerFunc);\n            }\n        };\n    };\n    WebPlugin.prototype.removeListener = function (eventName, listenerFunc) {\n        var listeners = this.listeners[eventName];\n        if (!listeners) {\n            return;\n        }\n        var index = listeners.indexOf(listenerFunc);\n        this.listeners[eventName].splice(index, 1);\n        // If there are no more listeners for this type of event,\n        // remove the window listener\n        if (!this.listeners[eventName].length) {\n            this.removeWindowListener(this.windowListeners[eventName]);\n        }\n    };\n    WebPlugin.prototype.removeAllListeners = function () {\n        this.listeners = {};\n        for (var listener in this.windowListeners) {\n            this.removeWindowListener(this.windowListeners[listener]);\n        }\n        this.windowListeners = {};\n    };\n    WebPlugin.prototype.notifyListeners = function (eventName, data) {\n        var listeners = this.listeners[eventName];\n        if (listeners) {\n            listeners.forEach(function (listener) { return listener(data); });\n        }\n    };\n    WebPlugin.prototype.hasListeners = function (eventName) {\n        return !!this.listeners[eventName].length;\n    };\n    WebPlugin.prototype.registerWindowListener = function (windowEventName, pluginEventName) {\n        var _this = this;\n        this.windowListeners[pluginEventName] = {\n            registered: false,\n            windowEventName: windowEventName,\n            pluginEventName: pluginEventName,\n            handler: function (event) {\n                _this.notifyListeners(pluginEventName, event);\n            }\n        };\n    };\n    WebPlugin.prototype.requestPermissions = function () {\n        if (Capacitor.isNative) {\n            return Capacitor.nativePromise(this.config.name, 'requestPermissions', {});\n        }\n        else {\n            return Promise.resolve({ results: [] });\n        }\n    };\n    WebPlugin.prototype.load = function () {\n        this.loaded = true;\n    };\n    return WebPlugin;\n}());\nexport { WebPlugin };\nvar shouldMergeWebPlugin = function (plugin) {\n    return plugin.config.platforms && plugin.config.platforms.indexOf(Capacitor.platform) >= 0;\n};\n/**\n * For all our known web plugins, merge them into the global plugins\n * registry if they aren't already existing. If they don't exist, that\n * means there's no existing native implementation for it.\n * @param knownPlugins the Capacitor.Plugins global registry.\n */\nexport var mergeWebPlugins = function (knownPlugins) {\n    var plugins = WebPlugins.getPlugins();\n    for (var _i = 0, plugins_1 = plugins; _i < plugins_1.length; _i++) {\n        var plugin = plugins_1[_i];\n        mergeWebPlugin(knownPlugins, plugin);\n    }\n};\nexport var mergeWebPlugin = function (knownPlugins, plugin) {\n    // If we already have a plugin registered (meaning it was defined in the native layer),\n    // then we should only overwrite it if the corresponding web plugin activates on\n    // a certain platform. For example: Geolocation uses the WebPlugin on Android but not iOS\n    if (knownPlugins.hasOwnProperty(plugin.config.name) && !shouldMergeWebPlugin(plugin)) {\n        return;\n    }\n    knownPlugins[plugin.config.name] = plugin;\n};\n//# sourceMappingURL=index.js.map","export var extend = function (target) {\n    var objs = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        objs[_i - 1] = arguments[_i];\n    }\n    objs.forEach(function (o) {\n        if (o && typeof (o) === 'object') {\n            for (var k in o) {\n                if (o.hasOwnProperty(k)) {\n                    target[k] = o[k];\n                }\n            }\n        }\n    });\n    return target;\n};\nexport var uuid4 = function () {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\n        return v.toString(16);\n    });\n};\n//# sourceMappingURL=util.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar AccessibilityPluginWeb = /** @class */ (function (_super) {\n    __extends(AccessibilityPluginWeb, _super);\n    function AccessibilityPluginWeb() {\n        return _super.call(this, {\n            name: 'Accessibility',\n            platforms: ['web']\n        }) || this;\n    }\n    AccessibilityPluginWeb.prototype.isScreenReaderEnabled = function () {\n        throw new Error('Feature not available in the browser');\n    };\n    AccessibilityPluginWeb.prototype.speak = function (options) {\n        if (!('speechSynthesis' in window)) {\n            return Promise.reject('Browser does not support the Speech Synthesis API');\n        }\n        var utterance = new SpeechSynthesisUtterance(options.value);\n        if (options.language) {\n            utterance.lang = options.language;\n        }\n        window.speechSynthesis.speak(utterance);\n        return Promise.resolve();\n    };\n    return AccessibilityPluginWeb;\n}(WebPlugin));\nexport { AccessibilityPluginWeb };\nvar Accessibility = new AccessibilityPluginWeb();\nexport { Accessibility };\n//# sourceMappingURL=accessibility.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar AppPluginWeb = /** @class */ (function (_super) {\n    __extends(AppPluginWeb, _super);\n    function AppPluginWeb() {\n        var _this = _super.call(this, {\n            name: 'App',\n            platforms: ['web']\n        }) || this;\n        if (typeof document !== 'undefined') {\n            document.addEventListener('visibilitychange', _this.handleVisibilityChange.bind(_this), false);\n        }\n        return _this;\n    }\n    AppPluginWeb.prototype.exitApp = function () {\n        throw new Error('Method not implemented.');\n    };\n    AppPluginWeb.prototype.canOpenUrl = function (_options) {\n        return Promise.resolve({ value: true });\n    };\n    AppPluginWeb.prototype.openUrl = function (_options) {\n        return Promise.resolve({ completed: true });\n    };\n    AppPluginWeb.prototype.getLaunchUrl = function () {\n        return Promise.resolve({ url: '' });\n    };\n    AppPluginWeb.prototype.getState = function () {\n        return Promise.resolve({ isActive: document.hidden !== true });\n    };\n    AppPluginWeb.prototype.handleVisibilityChange = function () {\n        var data = {\n            isActive: document.hidden !== true\n        };\n        this.notifyListeners('appStateChange', data);\n    };\n    return AppPluginWeb;\n}(WebPlugin));\nexport { AppPluginWeb };\nvar App = new AppPluginWeb();\nexport { App };\n//# sourceMappingURL=app.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nvar BrowserPluginWeb = /** @class */ (function (_super) {\n    __extends(BrowserPluginWeb, _super);\n    function BrowserPluginWeb() {\n        return _super.call(this, {\n            name: 'Browser',\n            platforms: ['web']\n        }) || this;\n    }\n    BrowserPluginWeb.prototype.open = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this._lastWindow = window.open(options.url, options.windowName || '_blank');\n                return [2 /*return*/, Promise.resolve()];\n            });\n        });\n    };\n    BrowserPluginWeb.prototype.prefetch = function (_options) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                // Does nothing\n                return [2 /*return*/, Promise.resolve()];\n            });\n        });\n    };\n    BrowserPluginWeb.prototype.close = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this._lastWindow && this._lastWindow.close();\n                return [2 /*return*/, Promise.resolve()];\n            });\n        });\n    };\n    return BrowserPluginWeb;\n}(WebPlugin));\nexport { BrowserPluginWeb };\nvar Browser = new BrowserPluginWeb();\nexport { Browser };\n//# sourceMappingURL=browser.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nimport { CameraResultType, CameraDirection, CameraSource } from '../core-plugin-definitions';\nvar CameraPluginWeb = /** @class */ (function (_super) {\n    __extends(CameraPluginWeb, _super);\n    function CameraPluginWeb() {\n        return _super.call(this, {\n            name: 'Camera',\n            platforms: ['web']\n        }) || this;\n    }\n    CameraPluginWeb.prototype.getPhoto = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {\n                        var cameraModal_1, e_1;\n                        var _this = this;\n                        return __generator(this, function (_a) {\n                            switch (_a.label) {\n                                case 0:\n                                    if (!options.webUseInput) return [3 /*break*/, 1];\n                                    this.fileInputExperience(options, resolve);\n                                    return [3 /*break*/, 7];\n                                case 1:\n                                    if (!customElements.get('pwa-camera-modal')) return [3 /*break*/, 6];\n                                    cameraModal_1 = document.createElement('pwa-camera-modal');\n                                    document.body.appendChild(cameraModal_1);\n                                    _a.label = 2;\n                                case 2:\n                                    _a.trys.push([2, 4, , 5]);\n                                    return [4 /*yield*/, cameraModal_1.componentOnReady()];\n                                case 3:\n                                    _a.sent();\n                                    cameraModal_1.addEventListener('onPhoto', function (e) { return __awaiter(_this, void 0, void 0, function () {\n                                        var photo, _a;\n                                        return __generator(this, function (_b) {\n                                            switch (_b.label) {\n                                                case 0:\n                                                    photo = e.detail;\n                                                    if (!(photo === null)) return [3 /*break*/, 1];\n                                                    reject('User cancelled photos app');\n                                                    return [3 /*break*/, 4];\n                                                case 1:\n                                                    if (!(photo instanceof Error)) return [3 /*break*/, 2];\n                                                    reject(photo.message);\n                                                    return [3 /*break*/, 4];\n                                                case 2:\n                                                    _a = resolve;\n                                                    return [4 /*yield*/, this._getCameraPhoto(photo, options)];\n                                                case 3:\n                                                    _a.apply(void 0, [_b.sent()]);\n                                                    _b.label = 4;\n                                                case 4:\n                                                    cameraModal_1.dismiss();\n                                                    document.body.removeChild(cameraModal_1);\n                                                    return [2 /*return*/];\n                                            }\n                                        });\n                                    }); });\n                                    cameraModal_1.present();\n                                    return [3 /*break*/, 5];\n                                case 4:\n                                    e_1 = _a.sent();\n                                    this.fileInputExperience(options, resolve);\n                                    return [3 /*break*/, 5];\n                                case 5: return [3 /*break*/, 7];\n                                case 6:\n                                    console.error(\"Unable to load PWA Element 'pwa-camera-modal'. See the docs: https://capacitorjs.com/docs/pwa-elements.\");\n                                    this.fileInputExperience(options, resolve);\n                                    _a.label = 7;\n                                case 7: return [2 /*return*/];\n                            }\n                        });\n                    }); })];\n            });\n        });\n    };\n    CameraPluginWeb.prototype.fileInputExperience = function (options, resolve) {\n        var input = document.querySelector('#_capacitor-camera-input');\n        var cleanup = function () {\n            input.parentNode && input.parentNode.removeChild(input);\n        };\n        if (!input) {\n            input = document.createElement('input');\n            input.id = '_capacitor-camera-input';\n            input.type = 'file';\n            document.body.appendChild(input);\n        }\n        input.accept = 'image/*';\n        input.capture = true;\n        if (options.source === CameraSource.Photos || options.source === CameraSource.Prompt) {\n            input.removeAttribute('capture');\n        }\n        else if (options.direction === CameraDirection.Front) {\n            input.capture = 'user';\n        }\n        else if (options.direction === CameraDirection.Rear) {\n            input.capture = 'environment';\n        }\n        input.addEventListener('change', function (_e) {\n            var file = input.files[0];\n            var format = 'jpeg';\n            if (file.type === 'image/png') {\n                format = 'png';\n            }\n            else if (file.type === 'image/gif') {\n                format = 'gif';\n            }\n            if (options.resultType === CameraResultType.DataUrl || options.resultType === CameraResultType.Base64) {\n                var reader_1 = new FileReader();\n                reader_1.addEventListener('load', function () {\n                    if (options.resultType === CameraResultType.DataUrl) {\n                        resolve({\n                            dataUrl: reader_1.result,\n                            format: format\n                        });\n                    }\n                    else if (options.resultType === CameraResultType.Base64) {\n                        var b64 = reader_1.result.split(',')[1];\n                        resolve({\n                            base64String: b64,\n                            format: format\n                        });\n                    }\n                    cleanup();\n                });\n                reader_1.readAsDataURL(file);\n            }\n            else {\n                resolve({\n                    webPath: URL.createObjectURL(file),\n                    format: format\n                });\n                cleanup();\n            }\n        });\n        input.click();\n    };\n    CameraPluginWeb.prototype._getCameraPhoto = function (photo, options) {\n        return new Promise(function (resolve, reject) {\n            var reader = new FileReader();\n            var format = photo.type.split('/')[1];\n            if (options.resultType === CameraResultType.Uri) {\n                resolve({\n                    webPath: URL.createObjectURL(photo),\n                    format: format\n                });\n            }\n            else {\n                reader.readAsDataURL(photo);\n                reader.onloadend = function () {\n                    var r = reader.result;\n                    if (options.resultType === CameraResultType.DataUrl) {\n                        resolve({\n                            dataUrl: r,\n                            format: format\n                        });\n                    }\n                    else {\n                        resolve({\n                            base64String: r.split(',')[1],\n                            format: format\n                        });\n                    }\n                };\n                reader.onerror = function (e) {\n                    reject(e);\n                };\n            }\n        });\n    };\n    return CameraPluginWeb;\n}(WebPlugin));\nexport { CameraPluginWeb };\nvar Camera = new CameraPluginWeb();\nexport { Camera };\n//# sourceMappingURL=camera.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nvar ClipboardPluginWeb = /** @class */ (function (_super) {\n    __extends(ClipboardPluginWeb, _super);\n    function ClipboardPluginWeb() {\n        return _super.call(this, {\n            name: 'Clipboard',\n            platforms: ['web']\n        }) || this;\n    }\n    ClipboardPluginWeb.prototype.write = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var blob, clipboardItemInput, err_1;\n            var _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (!navigator.clipboard) {\n                            return [2 /*return*/, Promise.reject('Clipboard API not available in this browser')];\n                        }\n                        if (!(options.string !== undefined || options.url)) return [3 /*break*/, 2];\n                        if (!navigator.clipboard.writeText) {\n                            return [2 /*return*/, Promise.reject('Writting to clipboard not supported in this browser')];\n                        }\n                        return [4 /*yield*/, navigator.clipboard.writeText(options.string !== undefined ? options.string : options.url)];\n                    case 1:\n                        _b.sent();\n                        return [3 /*break*/, 10];\n                    case 2:\n                        if (!options.image) return [3 /*break*/, 9];\n                        if (!navigator.clipboard.write) {\n                            return [2 /*return*/, Promise.reject('Setting images not supported in this browser')];\n                        }\n                        _b.label = 3;\n                    case 3:\n                        _b.trys.push([3, 7, , 8]);\n                        return [4 /*yield*/, fetch(options.image)];\n                    case 4: return [4 /*yield*/, (_b.sent()).blob()];\n                    case 5:\n                        blob = _b.sent();\n                        clipboardItemInput = new ClipboardItem((_a = {}, _a[blob.type] = blob, _a));\n                        return [4 /*yield*/, navigator.clipboard.write([clipboardItemInput])];\n                    case 6:\n                        _b.sent();\n                        return [3 /*break*/, 8];\n                    case 7:\n                        err_1 = _b.sent();\n                        return [2 /*return*/, Promise.reject('Failed to write image')];\n                    case 8: return [3 /*break*/, 10];\n                    case 9: return [2 /*return*/, Promise.reject('Nothing to write')];\n                    case 10: return [2 /*return*/, Promise.resolve()];\n                }\n            });\n        });\n    };\n    ClipboardPluginWeb.prototype.read = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var clipboardItems, type, clipboardBlob, data, err_2;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!navigator.clipboard) {\n                            return [2 /*return*/, Promise.reject('Clipboard API not available in this browser')];\n                        }\n                        if (!!navigator.clipboard.read) return [3 /*break*/, 1];\n                        if (!navigator.clipboard.readText) {\n                            return [2 /*return*/, Promise.reject('Reading from clipboard not supported in this browser')];\n                        }\n                        return [2 /*return*/, this.readText()];\n                    case 1:\n                        _a.trys.push([1, 5, , 6]);\n                        return [4 /*yield*/, navigator.clipboard.read()];\n                    case 2:\n                        clipboardItems = _a.sent();\n                        type = clipboardItems[0].types[0];\n                        return [4 /*yield*/, clipboardItems[0].getType(type)];\n                    case 3:\n                        clipboardBlob = _a.sent();\n                        return [4 /*yield*/, this._getBlobData(clipboardBlob, type)];\n                    case 4:\n                        data = _a.sent();\n                        return [2 /*return*/, Promise.resolve({ value: data, type: type })];\n                    case 5:\n                        err_2 = _a.sent();\n                        return [2 /*return*/, this.readText()];\n                    case 6: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    ClipboardPluginWeb.prototype.readText = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var text;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, navigator.clipboard.readText()];\n                    case 1:\n                        text = _a.sent();\n                        return [2 /*return*/, Promise.resolve({ value: text, type: 'text/plain' })];\n                }\n            });\n        });\n    };\n    ClipboardPluginWeb.prototype._getBlobData = function (clipboardBlob, type) {\n        return new Promise(function (resolve, reject) {\n            var reader = new FileReader();\n            if (type.includes('image')) {\n                reader.readAsDataURL(clipboardBlob);\n            }\n            else {\n                reader.readAsText(clipboardBlob);\n            }\n            reader.onloadend = function () {\n                var r = reader.result;\n                resolve(r);\n            };\n            reader.onerror = function (e) {\n                reject(e);\n            };\n        });\n    };\n    return ClipboardPluginWeb;\n}(WebPlugin));\nexport { ClipboardPluginWeb };\nvar Clipboard = new ClipboardPluginWeb();\nexport { Clipboard };\n//# sourceMappingURL=clipboard.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nimport { FilesystemDirectory } from '../core-plugin-definitions';\nvar FilesystemPluginWeb = /** @class */ (function (_super) {\n    __extends(FilesystemPluginWeb, _super);\n    function FilesystemPluginWeb() {\n        var _this = _super.call(this, {\n            name: 'Filesystem',\n            platforms: ['web']\n        }) || this;\n        _this.DEFAULT_DIRECTORY = FilesystemDirectory.Data;\n        _this.DB_VERSION = 1;\n        _this.DB_NAME = 'Disc';\n        _this._writeCmds = ['add', 'put', 'delete'];\n        return _this;\n    }\n    FilesystemPluginWeb.prototype.initDb = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                if (this._db !== undefined) {\n                    return [2 /*return*/, this._db];\n                }\n                if (!('indexedDB' in window)) {\n                    throw new Error('This browser doesn\\'t support IndexedDB');\n                }\n                return [2 /*return*/, new Promise(function (resolve, reject) {\n                        var request = indexedDB.open(_this.DB_NAME, _this.DB_VERSION);\n                        request.onupgradeneeded = FilesystemPluginWeb.doUpgrade;\n                        request.onsuccess = function () {\n                            _this._db = request.result;\n                            resolve(request.result);\n                        };\n                        request.onerror = function () { return reject(request.error); };\n                        request.onblocked = function () {\n                            console.warn('db blocked');\n                        };\n                    })];\n            });\n        });\n    };\n    FilesystemPluginWeb.doUpgrade = function (event) {\n        var eventTarget = event.target;\n        var db = eventTarget.result;\n        switch (event.oldVersion) {\n            case 0:\n            case 1:\n            default:\n                if (db.objectStoreNames.contains('FileStorage')) {\n                    db.deleteObjectStore('FileStorage');\n                }\n                var store = db.createObjectStore('FileStorage', { keyPath: 'path' });\n                store.createIndex('by_folder', 'folder');\n        }\n    };\n    FilesystemPluginWeb.prototype.dbRequest = function (cmd, args) {\n        return __awaiter(this, void 0, void 0, function () {\n            var readFlag;\n            return __generator(this, function (_a) {\n                readFlag = this._writeCmds.indexOf(cmd) !== -1 ? 'readwrite' : 'readonly';\n                return [2 /*return*/, this.initDb()\n                        .then(function (conn) {\n                        return new Promise(function (resolve, reject) {\n                            var tx = conn.transaction(['FileStorage'], readFlag);\n                            var store = tx.objectStore('FileStorage');\n                            var req = store[cmd].apply(store, args);\n                            req.onsuccess = function () { return resolve(req.result); };\n                            req.onerror = function () { return reject(req.error); };\n                        });\n                    })];\n            });\n        });\n    };\n    FilesystemPluginWeb.prototype.dbIndexRequest = function (indexName, cmd, args) {\n        return __awaiter(this, void 0, void 0, function () {\n            var readFlag;\n            return __generator(this, function (_a) {\n                readFlag = this._writeCmds.indexOf(cmd) !== -1 ? 'readwrite' : 'readonly';\n                return [2 /*return*/, this.initDb()\n                        .then(function (conn) {\n                        return new Promise(function (resolve, reject) {\n                            var tx = conn.transaction(['FileStorage'], readFlag);\n                            var store = tx.objectStore('FileStorage');\n                            var index = store.index(indexName);\n                            var req = index[cmd].apply(index, args);\n                            req.onsuccess = function () { return resolve(req.result); };\n                            req.onerror = function () { return reject(req.error); };\n                        });\n                    })];\n            });\n        });\n    };\n    FilesystemPluginWeb.prototype.getPath = function (directory, uriPath) {\n        directory = directory || this.DEFAULT_DIRECTORY;\n        var cleanedUriPath = uriPath !== undefined ? uriPath.replace(/^[/]+|[/]+$/g, '') : '';\n        var fsPath = '/' + directory;\n        if (uriPath !== '')\n            fsPath += '/' + cleanedUriPath;\n        return fsPath;\n    };\n    FilesystemPluginWeb.prototype.clear = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var conn, tx, store;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.initDb()];\n                    case 1:\n                        conn = _a.sent();\n                        tx = conn.transaction(['FileStorage'], 'readwrite');\n                        store = tx.objectStore('FileStorage');\n                        store.clear();\n                        return [2 /*return*/, {}];\n                }\n            });\n        });\n    };\n    /**\n     * Read a file from disk\n     * @param options options for the file read\n     * @return a promise that resolves with the read file data result\n     */\n    FilesystemPluginWeb.prototype.readFile = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, entry;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 1:\n                        entry = _a.sent();\n                        if (entry === undefined)\n                            throw Error('File does not exist.');\n                        return [2 /*return*/, { data: entry.content }];\n                }\n            });\n        });\n    };\n    /**\n     * Write a file to disk in the specified location on device\n     * @param options options for the file write\n     * @return a promise that resolves with the file write result\n     */\n    FilesystemPluginWeb.prototype.writeFile = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, data, doRecursive, occupiedEntry, encoding, parentPath, parentEntry, subDirIndex, parentArgPath, now, pathObj;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        data = options.data;\n                        doRecursive = options.recursive;\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 1:\n                        occupiedEntry = _a.sent();\n                        if (occupiedEntry && occupiedEntry.type === 'directory')\n                            throw ('The supplied path is a directory.');\n                        encoding = options.encoding;\n                        parentPath = path.substr(0, path.lastIndexOf('/'));\n                        return [4 /*yield*/, this.dbRequest('get', [parentPath])];\n                    case 2:\n                        parentEntry = _a.sent();\n                        if (!(parentEntry === undefined)) return [3 /*break*/, 4];\n                        subDirIndex = parentPath.indexOf('/', 1);\n                        if (!(subDirIndex !== -1)) return [3 /*break*/, 4];\n                        parentArgPath = parentPath.substr(subDirIndex);\n                        return [4 /*yield*/, this.mkdir({ path: parentArgPath, directory: options.directory, recursive: doRecursive })];\n                    case 3:\n                        _a.sent();\n                        _a.label = 4;\n                    case 4:\n                        now = Date.now();\n                        pathObj = {\n                            path: path,\n                            folder: parentPath,\n                            type: 'file',\n                            size: data.length,\n                            ctime: now,\n                            mtime: now,\n                            content: !encoding && data.indexOf(',') >= 0 ? data.split(',')[1] : data,\n                        };\n                        return [4 /*yield*/, this.dbRequest('put', [pathObj])];\n                    case 5:\n                        _a.sent();\n                        return [2 /*return*/, {\n                                uri: pathObj.path\n                            }];\n                }\n            });\n        });\n    };\n    /**\n     * Append to a file on disk in the specified location on device\n     * @param options options for the file append\n     * @return a promise that resolves with the file write result\n     */\n    FilesystemPluginWeb.prototype.appendFile = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, data, parentPath, now, ctime, occupiedEntry, parentEntry, subDirIndex, parentArgPath, pathObj;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        data = options.data;\n                        parentPath = path.substr(0, path.lastIndexOf('/'));\n                        now = Date.now();\n                        ctime = now;\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 1:\n                        occupiedEntry = _a.sent();\n                        if (occupiedEntry && occupiedEntry.type === 'directory')\n                            throw ('The supplied path is a directory.');\n                        return [4 /*yield*/, this.dbRequest('get', [parentPath])];\n                    case 2:\n                        parentEntry = _a.sent();\n                        if (!(parentEntry === undefined)) return [3 /*break*/, 4];\n                        subDirIndex = parentPath.indexOf('/', 1);\n                        if (!(subDirIndex !== -1)) return [3 /*break*/, 4];\n                        parentArgPath = parentPath.substr(subDirIndex);\n                        return [4 /*yield*/, this.mkdir({ path: parentArgPath, directory: options.directory, recursive: true })];\n                    case 3:\n                        _a.sent();\n                        _a.label = 4;\n                    case 4:\n                        if (occupiedEntry !== undefined) {\n                            data = occupiedEntry.content + data;\n                            ctime = occupiedEntry.ctime;\n                        }\n                        pathObj = {\n                            path: path,\n                            folder: parentPath,\n                            type: 'file',\n                            size: data.length,\n                            ctime: ctime,\n                            mtime: now,\n                            content: data\n                        };\n                        return [4 /*yield*/, this.dbRequest('put', [pathObj])];\n                    case 5:\n                        _a.sent();\n                        return [2 /*return*/, {}];\n                }\n            });\n        });\n    };\n    /**\n     * Delete a file from disk\n     * @param options options for the file delete\n     * @return a promise that resolves with the deleted file data result\n     */\n    FilesystemPluginWeb.prototype.deleteFile = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, entry, entries;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 1:\n                        entry = _a.sent();\n                        if (entry === undefined)\n                            throw Error('File does not exist.');\n                        return [4 /*yield*/, this.dbIndexRequest('by_folder', 'getAllKeys', [IDBKeyRange.only(path)])];\n                    case 2:\n                        entries = _a.sent();\n                        if (entries.length !== 0)\n                            throw Error('Folder is not empty.');\n                        return [4 /*yield*/, this.dbRequest('delete', [path])];\n                    case 3:\n                        _a.sent();\n                        return [2 /*return*/, {}];\n                }\n            });\n        });\n    };\n    /**\n     * Create a directory.\n     * @param options options for the mkdir\n     * @return a promise that resolves with the mkdir result\n     */\n    FilesystemPluginWeb.prototype.mkdir = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, doRecursive, parentPath, depth, parentEntry, occupiedEntry, parentArgPath, now, pathObj;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        doRecursive = options.recursive;\n                        parentPath = path.substr(0, path.lastIndexOf('/'));\n                        depth = (path.match(/\\//g) || []).length;\n                        return [4 /*yield*/, this.dbRequest('get', [parentPath])];\n                    case 1:\n                        parentEntry = _a.sent();\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 2:\n                        occupiedEntry = _a.sent();\n                        if (depth === 1)\n                            throw Error('Cannot create Root directory');\n                        if (occupiedEntry !== undefined)\n                            throw Error('Current directory does already exist.');\n                        if (!doRecursive && depth !== 2 && parentEntry === undefined)\n                            throw Error('Parent directory must exist');\n                        if (!(doRecursive && depth !== 2 && parentEntry === undefined)) return [3 /*break*/, 4];\n                        parentArgPath = parentPath.substr(parentPath.indexOf('/', 1));\n                        return [4 /*yield*/, this.mkdir({\n                                path: parentArgPath,\n                                directory: options.directory,\n                                recursive: doRecursive\n                            })];\n                    case 3:\n                        _a.sent();\n                        _a.label = 4;\n                    case 4:\n                        now = Date.now();\n                        pathObj = { path: path, folder: parentPath, type: 'directory', size: 0, ctime: now, mtime: now };\n                        return [4 /*yield*/, this.dbRequest('put', [pathObj])];\n                    case 5:\n                        _a.sent();\n                        return [2 /*return*/, {}];\n                }\n            });\n        });\n    };\n    /**\n     * Remove a directory\n     * @param options the options for the directory remove\n     */\n    FilesystemPluginWeb.prototype.rmdir = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, directory, recursive, fullPath, entry, readDirResult, _i, _a, entry_1, entryPath, entryObj;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        path = options.path, directory = options.directory, recursive = options.recursive;\n                        fullPath = this.getPath(directory, path);\n                        return [4 /*yield*/, this.dbRequest('get', [fullPath])];\n                    case 1:\n                        entry = _b.sent();\n                        if (entry === undefined)\n                            throw Error('Folder does not exist.');\n                        if (entry.type !== 'directory')\n                            throw Error('Requested path is not a directory');\n                        return [4 /*yield*/, this.readdir({ path: path, directory: directory })];\n                    case 2:\n                        readDirResult = _b.sent();\n                        if (readDirResult.files.length !== 0 && !recursive)\n                            throw Error('Folder is not empty');\n                        _i = 0, _a = readDirResult.files;\n                        _b.label = 3;\n                    case 3:\n                        if (!(_i < _a.length)) return [3 /*break*/, 9];\n                        entry_1 = _a[_i];\n                        entryPath = path + \"/\" + entry_1;\n                        return [4 /*yield*/, this.stat({ path: entryPath, directory: directory })];\n                    case 4:\n                        entryObj = _b.sent();\n                        if (!(entryObj.type === 'file')) return [3 /*break*/, 6];\n                        return [4 /*yield*/, this.deleteFile({ path: entryPath, directory: directory })];\n                    case 5:\n                        _b.sent();\n                        return [3 /*break*/, 8];\n                    case 6: return [4 /*yield*/, this.rmdir({ path: entryPath, directory: directory, recursive: recursive })];\n                    case 7:\n                        _b.sent();\n                        _b.label = 8;\n                    case 8:\n                        _i++;\n                        return [3 /*break*/, 3];\n                    case 9: return [4 /*yield*/, this.dbRequest('delete', [fullPath])];\n                    case 10:\n                        _b.sent();\n                        return [2 /*return*/, {}];\n                }\n            });\n        });\n    };\n    /**\n     * Return a list of files from the directory (not recursive)\n     * @param options the options for the readdir operation\n     * @return a promise that resolves with the readdir directory listing result\n     */\n    FilesystemPluginWeb.prototype.readdir = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, entry, entries, names;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 1:\n                        entry = _a.sent();\n                        if (options.path !== '' && entry === undefined)\n                            throw Error('Folder does not exist.');\n                        return [4 /*yield*/, this.dbIndexRequest('by_folder', 'getAllKeys', [IDBKeyRange.only(path)])];\n                    case 2:\n                        entries = _a.sent();\n                        names = entries.map(function (e) {\n                            return e.substring(path.length + 1);\n                        });\n                        return [2 /*return*/, { files: names }];\n                }\n            });\n        });\n    };\n    /**\n     * Return full File URI for a path and directory\n     * @param options the options for the stat operation\n     * @return a promise that resolves with the file stat result\n     */\n    FilesystemPluginWeb.prototype.getUri = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, entry;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 1:\n                        entry = _a.sent();\n                        if (!(entry === undefined)) return [3 /*break*/, 3];\n                        return [4 /*yield*/, this.dbRequest('get', [path + '/'])];\n                    case 2:\n                        entry = (_a.sent());\n                        _a.label = 3;\n                    case 3:\n                        if (entry === undefined)\n                            throw Error('Entry does not exist.');\n                        return [2 /*return*/, {\n                                uri: entry.path\n                            }];\n                }\n            });\n        });\n    };\n    /**\n     * Return data about a file\n     * @param options the options for the stat operation\n     * @return a promise that resolves with the file stat result\n     */\n    FilesystemPluginWeb.prototype.stat = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var path, entry;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        path = this.getPath(options.directory, options.path);\n                        return [4 /*yield*/, this.dbRequest('get', [path])];\n                    case 1:\n                        entry = _a.sent();\n                        if (!(entry === undefined)) return [3 /*break*/, 3];\n                        return [4 /*yield*/, this.dbRequest('get', [path + '/'])];\n                    case 2:\n                        entry = (_a.sent());\n                        _a.label = 3;\n                    case 3:\n                        if (entry === undefined)\n                            throw Error('Entry does not exist.');\n                        return [2 /*return*/, {\n                                type: entry.type,\n                                size: entry.size,\n                                ctime: entry.ctime,\n                                mtime: entry.mtime,\n                                uri: entry.path\n                            }];\n                }\n            });\n        });\n    };\n    /**\n     * Rename a file or directory\n     * @param options the options for the rename operation\n     * @return a promise that resolves with the rename result\n     */\n    FilesystemPluginWeb.prototype.rename = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this._copy(options, true)];\n            });\n        });\n    };\n    /**\n     * Copy a file or directory\n     * @param options the options for the copy operation\n     * @return a promise that resolves with the copy result\n     */\n    FilesystemPluginWeb.prototype.copy = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this._copy(options, false)];\n            });\n        });\n    };\n    /**\n     * Function that can perform a copy or a rename\n     * @param options the options for the rename operation\n     * @param doRename whether to perform a rename or copy operation\n     * @return a promise that resolves with the result\n     */\n    FilesystemPluginWeb.prototype._copy = function (options, doRename) {\n        if (doRename === void 0) { doRename = false; }\n        return __awaiter(this, void 0, void 0, function () {\n            var to, from, fromDirectory, toDirectory, fromPath, toPath, toObj, e_1, toPathComponents, toPath_1, toParentDirectory, fromObj, updateTime, _a, file, e_2, contents, _i, contents_1, filename;\n            var _this = this;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        to = options.to, from = options.from, fromDirectory = options.directory, toDirectory = options.toDirectory;\n                        if (!to || !from) {\n                            throw Error('Both to and from must be provided');\n                        }\n                        // If no \"to\" directory is provided, use the \"from\" directory\n                        if (!toDirectory) {\n                            toDirectory = fromDirectory;\n                        }\n                        fromPath = this.getPath(fromDirectory, from);\n                        toPath = this.getPath(toDirectory, to);\n                        // Test that the \"to\" and \"from\" locations are different\n                        if (fromPath === toPath) {\n                            return [2 /*return*/, {}];\n                        }\n                        if (toPath.startsWith(fromPath)) {\n                            throw Error('To path cannot contain the from path');\n                        }\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 3, , 6]);\n                        return [4 /*yield*/, this.stat({\n                                path: to,\n                                directory: toDirectory\n                            })];\n                    case 2:\n                        toObj = _b.sent();\n                        return [3 /*break*/, 6];\n                    case 3:\n                        e_1 = _b.sent();\n                        toPathComponents = to.split('/');\n                        toPathComponents.pop();\n                        toPath_1 = toPathComponents.join('/');\n                        if (!(toPathComponents.length > 0)) return [3 /*break*/, 5];\n                        return [4 /*yield*/, this.stat({\n                                path: toPath_1,\n                                directory: toDirectory,\n                            })];\n                    case 4:\n                        toParentDirectory = _b.sent();\n                        if (toParentDirectory.type !== 'directory') {\n                            throw new Error('Parent directory of the to path is a file');\n                        }\n                        _b.label = 5;\n                    case 5: return [3 /*break*/, 6];\n                    case 6:\n                        // Cannot overwrite a directory\n                        if (toObj && toObj.type === 'directory') {\n                            throw new Error('Cannot overwrite a directory with a file');\n                        }\n                        return [4 /*yield*/, this.stat({\n                                path: from,\n                                directory: fromDirectory,\n                            })];\n                    case 7:\n                        fromObj = _b.sent();\n                        updateTime = function (path, ctime, mtime) { return __awaiter(_this, void 0, void 0, function () {\n                            var fullPath, entry;\n                            return __generator(this, function (_a) {\n                                switch (_a.label) {\n                                    case 0:\n                                        fullPath = this.getPath(toDirectory, path);\n                                        return [4 /*yield*/, this.dbRequest('get', [fullPath])];\n                                    case 1:\n                                        entry = _a.sent();\n                                        entry.ctime = ctime;\n                                        entry.mtime = mtime;\n                                        return [4 /*yield*/, this.dbRequest('put', [entry])];\n                                    case 2:\n                                        _a.sent();\n                                        return [2 /*return*/];\n                                }\n                            });\n                        }); };\n                        _a = fromObj.type;\n                        switch (_a) {\n                            case 'file': return [3 /*break*/, 8];\n                            case 'directory': return [3 /*break*/, 15];\n                        }\n                        return [3 /*break*/, 28];\n                    case 8: return [4 /*yield*/, this.readFile({\n                            path: from,\n                            directory: fromDirectory\n                        })];\n                    case 9:\n                        file = _b.sent();\n                        if (!doRename) return [3 /*break*/, 11];\n                        return [4 /*yield*/, this.deleteFile({\n                                path: from,\n                                directory: fromDirectory\n                            })];\n                    case 10:\n                        _b.sent();\n                        _b.label = 11;\n                    case 11: \n                    // Write the file to the new location\n                    return [4 /*yield*/, this.writeFile({\n                            path: to,\n                            directory: toDirectory,\n                            data: file.data\n                        })];\n                    case 12:\n                        // Write the file to the new location\n                        _b.sent();\n                        if (!doRename) return [3 /*break*/, 14];\n                        return [4 /*yield*/, updateTime(to, fromObj.ctime, fromObj.mtime)];\n                    case 13:\n                        _b.sent();\n                        _b.label = 14;\n                    case 14: \n                    // Resolve promise\n                    return [2 /*return*/, {}];\n                    case 15:\n                        if (toObj) {\n                            throw Error('Cannot move a directory over an existing object');\n                        }\n                        _b.label = 16;\n                    case 16:\n                        _b.trys.push([16, 20, , 21]);\n                        // Create the to directory\n                        return [4 /*yield*/, this.mkdir({\n                                path: to,\n                                directory: toDirectory,\n                                recursive: false,\n                            })];\n                    case 17:\n                        // Create the to directory\n                        _b.sent();\n                        if (!doRename) return [3 /*break*/, 19];\n                        return [4 /*yield*/, updateTime(to, fromObj.ctime, fromObj.mtime)];\n                    case 18:\n                        _b.sent();\n                        _b.label = 19;\n                    case 19: return [3 /*break*/, 21];\n                    case 20:\n                        e_2 = _b.sent();\n                        return [3 /*break*/, 21];\n                    case 21: return [4 /*yield*/, this.readdir({\n                            path: from,\n                            directory: fromDirectory,\n                        })];\n                    case 22:\n                        contents = (_b.sent()).files;\n                        _i = 0, contents_1 = contents;\n                        _b.label = 23;\n                    case 23:\n                        if (!(_i < contents_1.length)) return [3 /*break*/, 26];\n                        filename = contents_1[_i];\n                        // Move item from the from directory to the to directory\n                        return [4 /*yield*/, this._copy({\n                                from: from + \"/\" + filename,\n                                to: to + \"/\" + filename,\n                                directory: fromDirectory,\n                                toDirectory: toDirectory,\n                            }, doRename)];\n                    case 24:\n                        // Move item from the from directory to the to directory\n                        _b.sent();\n                        _b.label = 25;\n                    case 25:\n                        _i++;\n                        return [3 /*break*/, 23];\n                    case 26:\n                        if (!doRename) return [3 /*break*/, 28];\n                        return [4 /*yield*/, this.rmdir({\n                                path: from,\n                                directory: fromDirectory\n                            })];\n                    case 27:\n                        _b.sent();\n                        _b.label = 28;\n                    case 28: return [2 /*return*/, {}];\n                }\n            });\n        });\n    };\n    FilesystemPluginWeb._debug = true;\n    return FilesystemPluginWeb;\n}(WebPlugin));\nexport { FilesystemPluginWeb };\nvar Filesystem = new FilesystemPluginWeb();\nexport { Filesystem };\n//# sourceMappingURL=filesystem.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nimport { extend } from '../util';\nvar GeolocationPluginWeb = /** @class */ (function (_super) {\n    __extends(GeolocationPluginWeb, _super);\n    function GeolocationPluginWeb() {\n        return _super.call(this, {\n            name: 'Geolocation',\n            platforms: ['web']\n        }) || this;\n    }\n    GeolocationPluginWeb.prototype.getCurrentPosition = function (options) {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            return _this.requestPermissions().then(function (_result) {\n                window.navigator.geolocation.getCurrentPosition(function (pos) {\n                    resolve(pos);\n                }, function (err) {\n                    reject(err);\n                }, extend({\n                    enableHighAccuracy: true,\n                    timeout: 10000,\n                    maximumAge: 0\n                }, options));\n            });\n        });\n    };\n    GeolocationPluginWeb.prototype.watchPosition = function (options, callback) {\n        var id = window.navigator.geolocation.watchPosition(function (pos) {\n            callback(pos);\n        }, function (err) {\n            callback(null, err);\n        }, extend({\n            enableHighAccuracy: true,\n            timeout: 10000,\n            maximumAge: 0\n        }, options));\n        return \"\" + id;\n    };\n    GeolocationPluginWeb.prototype.clearWatch = function (options) {\n        window.navigator.geolocation.clearWatch(parseInt(options.id, 10));\n        return Promise.resolve();\n    };\n    return GeolocationPluginWeb;\n}(WebPlugin));\nexport { GeolocationPluginWeb };\nvar Geolocation = new GeolocationPluginWeb();\nexport { Geolocation };\n//# sourceMappingURL=geolocation.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nimport { uuid4 } from '../util';\nvar DevicePluginWeb = /** @class */ (function (_super) {\n    __extends(DevicePluginWeb, _super);\n    function DevicePluginWeb() {\n        return _super.call(this, {\n            name: 'Device',\n            platforms: ['web']\n        }) || this;\n    }\n    DevicePluginWeb.prototype.getInfo = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var ua, uaFields;\n            return __generator(this, function (_a) {\n                ua = navigator.userAgent;\n                uaFields = this.parseUa(ua);\n                return [2 /*return*/, Promise.resolve({\n                        model: uaFields.model,\n                        platform: 'web',\n                        appVersion: '',\n                        appBuild: '',\n                        appId: '',\n                        appName: '',\n                        operatingSystem: uaFields.operatingSystem,\n                        osVersion: uaFields.osVersion,\n                        manufacturer: navigator.vendor,\n                        isVirtual: false,\n                        uuid: this.getUid()\n                    })];\n            });\n        });\n    };\n    DevicePluginWeb.prototype.getBatteryInfo = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var battery, e_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        battery = {};\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, navigator.getBattery()];\n                    case 2:\n                        battery = _a.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/, Promise.resolve({\n                            batteryLevel: battery.level,\n                            isCharging: battery.charging\n                        })];\n                }\n            });\n        });\n    };\n    DevicePluginWeb.prototype.getLanguageCode = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, {\n                        value: navigator.language\n                    }];\n            });\n        });\n    };\n    DevicePluginWeb.prototype.parseUa = function (_ua) {\n        var uaFields = {};\n        var start = _ua.indexOf('(') + 1;\n        var end = _ua.indexOf(') AppleWebKit');\n        if (_ua.indexOf(') Gecko') !== -1) {\n            end = _ua.indexOf(') Gecko');\n        }\n        var fields = _ua.substring(start, end);\n        if (_ua.indexOf('Android') !== -1) {\n            uaFields.model = fields.replace('; wv', '').split('; ').pop().split(' Build')[0];\n            uaFields.osVersion = fields.split('; ')[1];\n        }\n        else {\n            uaFields.model = fields.split('; ')[0];\n            if (navigator.oscpu) {\n                uaFields.osVersion = navigator.oscpu;\n            }\n            else {\n                if (_ua.indexOf('Windows') !== -1) {\n                    uaFields.osVersion = fields;\n                }\n                else {\n                    var lastParts = fields.split('; ').pop().replace(' like Mac OS X', '').split(' ');\n                    uaFields.osVersion = lastParts[lastParts.length - 1].replace(/_/g, '.');\n                }\n            }\n        }\n        if (/android/i.test(_ua)) {\n            uaFields.operatingSystem = 'android';\n        }\n        else if (/iPad|iPhone|iPod/.test(_ua) && !window.MSStream) {\n            uaFields.operatingSystem = 'ios';\n        }\n        else if (/Win/.test(_ua)) {\n            uaFields.operatingSystem = 'windows';\n        }\n        else if (/Mac/i.test(_ua)) {\n            uaFields.operatingSystem = 'mac';\n        }\n        else {\n            uaFields.operatingSystem = 'unknown';\n        }\n        return uaFields;\n    };\n    DevicePluginWeb.prototype.getUid = function () {\n        var uid = window.localStorage.getItem('_capuid');\n        if (uid) {\n            return uid;\n        }\n        uid = uuid4();\n        window.localStorage.setItem('_capuid', uid);\n        return uid;\n    };\n    return DevicePluginWeb;\n}(WebPlugin));\nexport { DevicePluginWeb };\nvar Device = new DevicePluginWeb();\nexport { Device };\n//# sourceMappingURL=device.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar LocalNotificationsPluginWeb = /** @class */ (function (_super) {\n    __extends(LocalNotificationsPluginWeb, _super);\n    function LocalNotificationsPluginWeb() {\n        var _this = _super.call(this, {\n            name: 'LocalNotifications',\n            platforms: ['web']\n        }) || this;\n        _this.pending = [];\n        return _this;\n    }\n    LocalNotificationsPluginWeb.prototype.createChannel = function (channel) {\n        throw new Error('Feature not available in the browser. ' + channel.id);\n    };\n    LocalNotificationsPluginWeb.prototype.deleteChannel = function (channel) {\n        throw new Error('Feature not available in the browser. ' + channel.id);\n    };\n    LocalNotificationsPluginWeb.prototype.listChannels = function () {\n        throw new Error('Feature not available in the browser');\n    };\n    LocalNotificationsPluginWeb.prototype.sendPending = function () {\n        var _this = this;\n        var toRemove = [];\n        var now = +new Date;\n        this.pending.forEach(function (localNotification) {\n            if (localNotification.schedule && localNotification.schedule.at) {\n                if (+localNotification.schedule.at <= now) {\n                    _this.buildNotification(localNotification);\n                    toRemove.push(localNotification);\n                }\n            }\n        });\n        console.log('Sent pending, removing', toRemove);\n        this.pending = this.pending.filter(function (localNotification) { return !toRemove.find(function (ln) { return ln === localNotification; }); });\n    };\n    LocalNotificationsPluginWeb.prototype.sendNotification = function (localNotification) {\n        var _this = this;\n        var l = localNotification;\n        if (localNotification.schedule && localNotification.schedule.at) {\n            var diff = +localNotification.schedule.at - +new Date;\n            this.pending.push(l);\n            setTimeout(function () {\n                _this.sendPending();\n            }, diff);\n            return;\n        }\n        this.buildNotification(localNotification);\n    };\n    LocalNotificationsPluginWeb.prototype.buildNotification = function (localNotification) {\n        var l = localNotification;\n        return new Notification(l.title, {\n            body: l.body\n        });\n    };\n    LocalNotificationsPluginWeb.prototype.schedule = function (options) {\n        var _this = this;\n        var notifications = [];\n        options.notifications.forEach(function (notification) {\n            notifications.push(_this.sendNotification(notification));\n        });\n        return Promise.resolve({\n            notifications: options.notifications.map(function (notification) { return { id: '' + notification.id }; })\n        });\n    };\n    LocalNotificationsPluginWeb.prototype.getPending = function () {\n        return Promise.resolve({\n            notifications: this.pending.map(function (localNotification) {\n                return {\n                    id: '' + localNotification.id\n                };\n            })\n        });\n    };\n    LocalNotificationsPluginWeb.prototype.registerActionTypes = function (_options) {\n        throw new Error('Method not implemented.');\n    };\n    LocalNotificationsPluginWeb.prototype.cancel = function (pending) {\n        console.log('Cancel these', pending);\n        this.pending = this.pending.filter(function (localNotification) { return !pending.notifications.find(function (ln) { return ln.id === '' + localNotification.id; }); });\n        return Promise.resolve();\n    };\n    LocalNotificationsPluginWeb.prototype.areEnabled = function () {\n        return Promise.resolve({\n            value: Notification.permission === 'granted'\n        });\n    };\n    LocalNotificationsPluginWeb.prototype.requestPermission = function () {\n        return new Promise(function (resolve) {\n            Notification.requestPermission(function (result) {\n                var granted = true;\n                if (result === 'denied' || result === 'default') {\n                    granted = false;\n                }\n                resolve({ granted: granted });\n            });\n        });\n    };\n    LocalNotificationsPluginWeb.prototype.requestPermissions = function () {\n        return new Promise(function (resolve, reject) {\n            Notification.requestPermission(function (result) {\n                if (result === 'denied' || result === 'default') {\n                    reject(result);\n                    return;\n                }\n                resolve({\n                    results: [result]\n                });\n            });\n        });\n    };\n    return LocalNotificationsPluginWeb;\n}(WebPlugin));\nexport { LocalNotificationsPluginWeb };\nvar LocalNotifications = new LocalNotificationsPluginWeb();\nexport { LocalNotifications };\n//# sourceMappingURL=local-notifications.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar SharePluginWeb = /** @class */ (function (_super) {\n    __extends(SharePluginWeb, _super);\n    function SharePluginWeb() {\n        return _super.call(this, {\n            name: 'Share',\n            platforms: ['web']\n        }) || this;\n    }\n    SharePluginWeb.prototype.share = function (options) {\n        if (!navigator.share) {\n            return Promise.reject('Web Share API not available');\n        }\n        return navigator.share({\n            title: options.title,\n            text: options.text,\n            url: options.url\n        });\n    };\n    return SharePluginWeb;\n}(WebPlugin));\nexport { SharePluginWeb };\nvar Share = new SharePluginWeb();\nexport { Share };\n//# sourceMappingURL=share.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nvar ModalsPluginWeb = /** @class */ (function (_super) {\n    __extends(ModalsPluginWeb, _super);\n    function ModalsPluginWeb() {\n        return _super.call(this, {\n            name: 'Modals',\n            platforms: ['web']\n        }) || this;\n    }\n    ModalsPluginWeb.prototype.alert = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                window.alert(options.message);\n                return [2 /*return*/, Promise.resolve()];\n            });\n        });\n    };\n    ModalsPluginWeb.prototype.prompt = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var val;\n            return __generator(this, function (_a) {\n                val = window.prompt(options.message, options.inputText || '');\n                return [2 /*return*/, Promise.resolve({\n                        value: val,\n                        cancelled: val === null\n                    })];\n            });\n        });\n    };\n    ModalsPluginWeb.prototype.confirm = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var val;\n            return __generator(this, function (_a) {\n                val = window.confirm(options.message);\n                return [2 /*return*/, Promise.resolve({\n                        value: val\n                    })];\n            });\n        });\n    };\n    ModalsPluginWeb.prototype.showActions = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                return [2 /*return*/, new Promise(function (resolve, _reject) { return __awaiter(_this, void 0, void 0, function () {\n                        var actionSheet;\n                        var _this = this;\n                        return __generator(this, function (_a) {\n                            actionSheet = document.querySelector('pwa-action-sheet');\n                            if (!actionSheet) {\n                                actionSheet = document.createElement('pwa-action-sheet');\n                                document.body.appendChild(actionSheet);\n                            }\n                            actionSheet.header = options.title;\n                            actionSheet.cancelable = false;\n                            actionSheet.options = options.options;\n                            actionSheet.addEventListener('onSelection', function (e) { return __awaiter(_this, void 0, void 0, function () {\n                                var selection;\n                                return __generator(this, function (_a) {\n                                    selection = e.detail;\n                                    resolve({\n                                        index: selection\n                                    });\n                                    return [2 /*return*/];\n                                });\n                            }); });\n                            return [2 /*return*/];\n                        });\n                    }); })];\n            });\n        });\n    };\n    return ModalsPluginWeb;\n}(WebPlugin));\nexport { ModalsPluginWeb };\nvar Modals = new ModalsPluginWeb();\nexport { Modals };\n//# sourceMappingURL=modals.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar MotionPluginWeb = /** @class */ (function (_super) {\n    __extends(MotionPluginWeb, _super);\n    function MotionPluginWeb() {\n        var _this = _super.call(this, {\n            name: 'Motion'\n        }) || this;\n        _this.registerWindowListener('devicemotion', 'accel');\n        _this.registerWindowListener('deviceorientation', 'orientation');\n        return _this;\n    }\n    return MotionPluginWeb;\n}(WebPlugin));\nexport { MotionPluginWeb };\nvar Motion = new MotionPluginWeb();\nexport { Motion };\n//# sourceMappingURL=motion.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar NetworkPluginWeb = /** @class */ (function (_super) {\n    __extends(NetworkPluginWeb, _super);\n    function NetworkPluginWeb() {\n        var _this = _super.call(this, {\n            name: 'Network',\n            platforms: ['web']\n        }) || this;\n        _this.listenerFunction = null;\n        return _this;\n    }\n    NetworkPluginWeb.prototype.getStatus = function () {\n        return new Promise(function (resolve, reject) {\n            if (!window.navigator) {\n                reject('Network info not available');\n                return;\n            }\n            var connected = window.navigator.onLine;\n            var connection = window.navigator.connection || window.navigator.mozConnection || window.navigator.webkitConnection;\n            var connectionType = connection ? (connection.type || connection.effectiveType) : 'wifi';\n            resolve({\n                connected: connected,\n                connectionType: connected ? connectionType : 'none'\n            });\n        });\n    };\n    NetworkPluginWeb.prototype.addListener = function (eventName, listenerFunc) {\n        var thisRef = this;\n        var connection = window.navigator.connection || window.navigator.mozConnection || window.navigator.webkitConnection;\n        var connectionType = connection ? (connection.type || connection.effectiveType) : 'wifi';\n        var onlineBindFunc = listenerFunc.bind(thisRef, { connected: true, connectionType: connectionType });\n        var offlineBindFunc = listenerFunc.bind(thisRef, { connected: false, connectionType: 'none' });\n        if (eventName.localeCompare('networkStatusChange') === 0) {\n            window.addEventListener('online', onlineBindFunc);\n            window.addEventListener('offline', offlineBindFunc);\n            return {\n                remove: function () {\n                    window.removeEventListener('online', onlineBindFunc);\n                    window.removeEventListener('offline', offlineBindFunc);\n                }\n            };\n        }\n    };\n    return NetworkPluginWeb;\n}(WebPlugin));\nexport { NetworkPluginWeb };\nvar Network = new NetworkPluginWeb();\nexport { Network };\n//# sourceMappingURL=network.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nimport { PermissionType } from '../core-plugin-definitions';\nvar PermissionsPluginWeb = /** @class */ (function (_super) {\n    __extends(PermissionsPluginWeb, _super);\n    function PermissionsPluginWeb() {\n        return _super.call(this, {\n            name: 'Permissions'\n        }) || this;\n    }\n    PermissionsPluginWeb.prototype.query = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var navigator, name, ret;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        navigator = window.navigator;\n                        if (!navigator.permissions) {\n                            return [2 /*return*/, Promise.reject('This browser does not support the Permissions API')];\n                        }\n                        name = options.name === PermissionType.Photos ? 'camera' : options.name;\n                        return [4 /*yield*/, navigator.permissions.query({ name: name })];\n                    case 1:\n                        ret = _a.sent();\n                        return [2 /*return*/, {\n                                state: ret.state\n                            }];\n                }\n            });\n        });\n    };\n    return PermissionsPluginWeb;\n}(WebPlugin));\nexport { PermissionsPluginWeb };\nvar Permissions = new PermissionsPluginWeb();\nexport { Permissions };\n//# sourceMappingURL=permissions.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar SplashScreenPluginWeb = /** @class */ (function (_super) {\n    __extends(SplashScreenPluginWeb, _super);\n    function SplashScreenPluginWeb() {\n        return _super.call(this, {\n            name: 'SplashScreen',\n            platforms: ['web']\n        }) || this;\n    }\n    SplashScreenPluginWeb.prototype.show = function (_options, _callback) {\n        return Promise.resolve();\n    };\n    SplashScreenPluginWeb.prototype.hide = function (_options, _callback) {\n        return Promise.resolve();\n    };\n    return SplashScreenPluginWeb;\n}(WebPlugin));\nexport { SplashScreenPluginWeb };\nvar SplashScreen = new SplashScreenPluginWeb();\nexport { SplashScreen };\n//# sourceMappingURL=splash-screen.js.map","import { __extends } from \"tslib\";\nimport { WebPlugin } from './index';\nvar StoragePluginWeb = /** @class */ (function (_super) {\n    __extends(StoragePluginWeb, _super);\n    function StoragePluginWeb() {\n        var _this = _super.call(this, {\n            name: 'Storage',\n            platforms: ['web']\n        }) || this;\n        _this.KEY_PREFIX = '_cap_';\n        return _this;\n    }\n    StoragePluginWeb.prototype.get = function (options) {\n        var _this = this;\n        return new Promise(function (resolve, _reject) {\n            resolve({\n                value: window.localStorage.getItem(_this.makeKey(options.key))\n            });\n        });\n    };\n    StoragePluginWeb.prototype.set = function (options) {\n        var _this = this;\n        return new Promise(function (resolve, _reject) {\n            window.localStorage.setItem(_this.makeKey(options.key), options.value);\n            resolve();\n        });\n    };\n    StoragePluginWeb.prototype.remove = function (options) {\n        var _this = this;\n        return new Promise(function (resolve, _reject) {\n            window.localStorage.removeItem(_this.makeKey(options.key));\n            resolve();\n        });\n    };\n    StoragePluginWeb.prototype.keys = function () {\n        var _this = this;\n        return new Promise(function (resolve, _reject) {\n            resolve({\n                keys: Object.keys(localStorage).filter(function (k) { return _this.isKey(k); }).map(function (k) { return _this.getKey(k); })\n            });\n        });\n    };\n    StoragePluginWeb.prototype.clear = function () {\n        var _this = this;\n        return new Promise(function (resolve, _reject) {\n            Object.keys(localStorage)\n                .filter(function (k) { return _this.isKey(k); })\n                .forEach(function (k) { return window.localStorage.removeItem(k); });\n            resolve();\n        });\n    };\n    StoragePluginWeb.prototype.makeKey = function (key) {\n        return this.KEY_PREFIX + key;\n    };\n    StoragePluginWeb.prototype.isKey = function (key) {\n        return key.indexOf(this.KEY_PREFIX) === 0;\n    };\n    StoragePluginWeb.prototype.getKey = function (key) {\n        return key.substr(this.KEY_PREFIX.length);\n    };\n    return StoragePluginWeb;\n}(WebPlugin));\nexport { StoragePluginWeb };\nvar Storage = new StoragePluginWeb();\nexport { Storage };\n//# sourceMappingURL=storage.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { WebPlugin } from './index';\nvar ToastPluginWeb = /** @class */ (function (_super) {\n    __extends(ToastPluginWeb, _super);\n    function ToastPluginWeb() {\n        return _super.call(this, {\n            name: 'Toast',\n            platforms: ['web']\n        }) || this;\n    }\n    ToastPluginWeb.prototype.show = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var duration, toast;\n            return __generator(this, function (_a) {\n                duration = 2000;\n                if (options.duration) {\n                    duration = options.duration === 'long' ? 3500 : 2000;\n                }\n                toast = document.createElement('pwa-toast');\n                toast.duration = duration;\n                toast.message = options.text;\n                document.body.appendChild(toast);\n                return [2 /*return*/];\n            });\n        });\n    };\n    return ToastPluginWeb;\n}(WebPlugin));\nexport { ToastPluginWeb };\nvar Toast = new ToastPluginWeb();\nexport { Toast };\n//# sourceMappingURL=toast.js.map","import { Plugins } from './global';\nimport { mergeWebPlugins, mergeWebPlugin } from './web/index';\nexport * from './web/accessibility';\nexport * from './web/app';\nexport * from './web/browser';\nexport * from './web/camera';\nexport * from './web/clipboard';\nexport * from './web/filesystem';\nexport * from './web/geolocation';\nexport * from './web/device';\nexport * from './web/local-notifications';\nexport * from './web/share';\nexport * from './web/modals';\nexport * from './web/motion';\nexport * from './web/network';\nexport * from './web/permissions';\nexport * from './web/splash-screen';\nexport * from './web/storage';\nexport * from './web/toast';\nmergeWebPlugins(Plugins);\nexport var registerWebPlugin = function (plugin) {\n    mergeWebPlugin(Plugins, plugin);\n};\n//# sourceMappingURL=web-plugins.js.map","export * from './core-plugin-definitions';\nexport * from './global';\nexport * from './web-plugins';\nexport * from './web/index';\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n  /** Pending */\n  PENDING = 0,\n  /** Resolved / OK */\n  RESOLVED = 1,\n  /** Rejected / Error */\n  REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike<void>;\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T>;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise<T>(value?: T | PromiseLike<T>): PromiseLike<T> {\n  return new SyncPromise(resolve => {\n    resolve(value);\n  });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise<T = never>(reason?: any): PromiseLike<T> {\n  return new SyncPromise((_, reject) => {\n    reject(reason);\n  });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n  private _state: States;\n  private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n  private _value: any;\n\n  public constructor(\n    executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n  ) {\n    this._state = States.PENDING;\n    this._handlers = [];\n\n    try {\n      executor(this._resolve, this._reject);\n    } catch (e) {\n      this._reject(e);\n    }\n  }\n\n  /** JSDoc */\n  public then<TResult1 = T, TResult2 = never>(\n    onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n    onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n  ): PromiseLike<TResult1 | TResult2> {\n    return new SyncPromise((resolve, reject) => {\n      this._handlers.push([\n        false,\n        result => {\n          if (!onfulfilled) {\n            // TODO: ¯\\_(ツ)_/¯\n            // TODO: FIXME\n            resolve(result as any);\n          } else {\n            try {\n              resolve(onfulfilled(result));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n        reason => {\n          if (!onrejected) {\n            reject(reason);\n          } else {\n            try {\n              resolve(onrejected(reason));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n      ]);\n      this._executeHandlers();\n    });\n  }\n\n  /** JSDoc */\n  public catch<TResult = never>(\n    onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n  ): PromiseLike<T | TResult> {\n    return this.then(val => val, onrejected);\n  }\n\n  /** JSDoc */\n  public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n    return new SyncPromise<TResult>((resolve, reject) => {\n      let val: TResult | any;\n      let isRejected: boolean;\n\n      return this.then(\n        value => {\n          isRejected = false;\n          val = value;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n        reason => {\n          isRejected = true;\n          val = reason;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n      ).then(() => {\n        if (isRejected) {\n          reject(val);\n          return;\n        }\n\n        resolve(val as unknown as any);\n      });\n    });\n  }\n\n  /** JSDoc */\n  private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n    this._setResult(States.RESOLVED, value);\n  };\n\n  /** JSDoc */\n  private readonly _reject = (reason?: any) => {\n    this._setResult(States.REJECTED, reason);\n  };\n\n  /** JSDoc */\n  private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n    if (this._state !== States.PENDING) {\n      return;\n    }\n\n    if (isThenable(value)) {\n      void (value as PromiseLike<T>).then(this._resolve, this._reject);\n      return;\n    }\n\n    this._state = state;\n    this._value = value;\n\n    this._executeHandlers();\n  };\n\n  /** JSDoc */\n  private readonly _executeHandlers = () => {\n    if (this._state === States.PENDING) {\n      return;\n    }\n\n    const cachedHandlers = this._handlers.slice();\n    this._handlers = [];\n\n    cachedHandlers.forEach(handler => {\n      if (handler[0]) {\n        return;\n      }\n\n      if (this._state === States.RESOLVED) {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        handler[1](this._value as unknown as any);\n      }\n\n      if (this._state === States.REJECTED) {\n        handler[2](this._value);\n      }\n\n      handler[0] = true;\n    });\n  };\n}\n\nexport { SyncPromise };\n","import{__awaiter,__generator}from\"tslib\";var blockHardwareBackButton=function(){document.addEventListener(\"backbutton\",(function(){}))};var startHardwareBackButton=function(){var r=document;var t=false;r.addEventListener(\"backbutton\",(function(){if(t){return}var n=0;var e=[];var a=new CustomEvent(\"ionBackButton\",{bubbles:false,detail:{register:function(r,t){e.push({priority:r,handler:t,id:n++})}}});r.dispatchEvent(a);var i=function(r){return __awaiter(void 0,void 0,void 0,(function(){var t,n;return __generator(this,(function(e){switch(e.label){case 0:e.trys.push([0,3,,4]);if(!(r&&r.handler))return[3,2];t=r.handler(o);if(!(t!=null))return[3,2];return[4,t];case 1:e.sent();e.label=2;case 2:return[3,4];case 3:n=e.sent();console.error(n);return[3,4];case 4:return[2]}}))}))};var o=function(){if(e.length>0){var r={priority:Number.MIN_SAFE_INTEGER,handler:function(){return undefined},id:-1};e.forEach((function(t){if(t.priority>=r.priority){r=t}}));t=true;e=e.filter((function(t){return t.id!==r.id}));i(r).then((function(){return t=false}))}};o()}))};var OVERLAY_BACK_BUTTON_PRIORITY=100;var MENU_BACK_BUTTON_PRIORITY=99;export{MENU_BACK_BUTTON_PRIORITY,OVERLAY_BACK_BUTTON_PRIORITY,blockHardwareBackButton,startHardwareBackButton};","var GestureController=function(){function t(){this.gestureId=0;this.requestedStart=new Map;this.disabledGestures=new Map;this.disabledScroll=new Set}t.prototype.createGesture=function(t){return new GestureDelegate(this,this.newID(),t.name,t.priority||0,!!t.disableScroll)};t.prototype.createBlocker=function(t){if(t===void 0){t={}}return new BlockerDelegate(this,this.newID(),t.disable,!!t.disableScroll)};t.prototype.start=function(t,e,r){if(!this.canStart(t)){this.requestedStart.delete(e);return false}this.requestedStart.set(e,r);return true};t.prototype.capture=function(t,e,r){if(!this.start(t,e,r)){return false}var i=this.requestedStart;var s=-1e4;i.forEach((function(t){s=Math.max(s,t)}));if(s===r){this.capturedId=e;i.clear();var l=new CustomEvent(\"ionGestureCaptured\",{detail:{gestureName:t}});document.dispatchEvent(l);return true}i.delete(e);return false};t.prototype.release=function(t){this.requestedStart.delete(t);if(this.capturedId===t){this.capturedId=undefined}};t.prototype.disableGesture=function(t,e){var r=this.disabledGestures.get(t);if(r===undefined){r=new Set;this.disabledGestures.set(t,r)}r.add(e)};t.prototype.enableGesture=function(t,e){var r=this.disabledGestures.get(t);if(r!==undefined){r.delete(e)}};t.prototype.disableScroll=function(t){this.disabledScroll.add(t);if(this.disabledScroll.size===1){document.body.classList.add(BACKDROP_NO_SCROLL)}};t.prototype.enableScroll=function(t){this.disabledScroll.delete(t);if(this.disabledScroll.size===0){document.body.classList.remove(BACKDROP_NO_SCROLL)}};t.prototype.canStart=function(t){if(this.capturedId!==undefined){return false}if(this.isDisabled(t)){return false}return true};t.prototype.isCaptured=function(){return this.capturedId!==undefined};t.prototype.isScrollDisabled=function(){return this.disabledScroll.size>0};t.prototype.isDisabled=function(t){var e=this.disabledGestures.get(t);if(e&&e.size>0){return true}return false};t.prototype.newID=function(){this.gestureId++;return this.gestureId};return t}();var GestureDelegate=function(){function t(t,e,r,i,s){this.id=e;this.name=r;this.disableScroll=s;this.priority=i*1e6+e;this.ctrl=t}t.prototype.canStart=function(){if(!this.ctrl){return false}return this.ctrl.canStart(this.name)};t.prototype.start=function(){if(!this.ctrl){return false}return this.ctrl.start(this.name,this.id,this.priority)};t.prototype.capture=function(){if(!this.ctrl){return false}var t=this.ctrl.capture(this.name,this.id,this.priority);if(t&&this.disableScroll){this.ctrl.disableScroll(this.id)}return t};t.prototype.release=function(){if(this.ctrl){this.ctrl.release(this.id);if(this.disableScroll){this.ctrl.enableScroll(this.id)}}};t.prototype.destroy=function(){this.release();this.ctrl=undefined};return t}();var BlockerDelegate=function(){function t(t,e,r,i){this.id=e;this.disable=r;this.disableScroll=i;this.ctrl=t}t.prototype.block=function(){if(!this.ctrl){return}if(this.disable){for(var t=0,e=this.disable;t<e.length;t++){var r=e[t];this.ctrl.disableGesture(r,this.id)}}if(this.disableScroll){this.ctrl.disableScroll(this.id)}};t.prototype.unblock=function(){if(!this.ctrl){return}if(this.disable){for(var t=0,e=this.disable;t<e.length;t++){var r=e[t];this.ctrl.enableGesture(r,this.id)}}if(this.disableScroll){this.ctrl.enableScroll(this.id)}};t.prototype.destroy=function(){this.unblock();this.ctrl=undefined};return t}();var BACKDROP_NO_SCROLL=\"backdrop-no-scroll\";var GESTURE_CONTROLLER=new GestureController;export{GESTURE_CONTROLLER as G};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n  Base.call(this, 'digest')\n\n  this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n  return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n  alg = alg.toLowerCase()\n  if (alg === 'md5') return new MD5()\n  if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n  return new Hash(sha(alg))\n}\n","module.exports = function xor (a, b) {\n  var length = Math.min(a.length, b.length)\n  var buffer = new Buffer(length)\n\n  for (var i = 0; i < length; ++i) {\n    buffer[i] = a[i] ^ b[i]\n  }\n\n  return buffer\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n  this.pending = null;\n  this.pendingTotal = 0;\n  this.blockSize = this.constructor.blockSize;\n  this.outSize = this.constructor.outSize;\n  this.hmacStrength = this.constructor.hmacStrength;\n  this.padLength = this.constructor.padLength / 8;\n  this.endian = 'big';\n\n  this._delta8 = this.blockSize / 8;\n  this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n  // Convert message to array, pad it, and join into 32bit blocks\n  msg = utils.toArray(msg, enc);\n  if (!this.pending)\n    this.pending = msg;\n  else\n    this.pending = this.pending.concat(msg);\n  this.pendingTotal += msg.length;\n\n  // Enough data, try updating\n  if (this.pending.length >= this._delta8) {\n    msg = this.pending;\n\n    // Process pending data in blocks\n    var r = msg.length % this._delta8;\n    this.pending = msg.slice(msg.length - r, msg.length);\n    if (this.pending.length === 0)\n      this.pending = null;\n\n    msg = utils.join32(msg, 0, msg.length - r, this.endian);\n    for (var i = 0; i < msg.length; i += this._delta32)\n      this._update(msg, i, i + this._delta32);\n  }\n\n  return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n  this.update(this._pad());\n  assert(this.pending === null);\n\n  return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n  var len = this.pendingTotal;\n  var bytes = this._delta8;\n  var k = bytes - ((len + this.padLength) % bytes);\n  var res = new Array(k + this.padLength);\n  res[0] = 0x80;\n  for (var i = 1; i < k; i++)\n    res[i] = 0;\n\n  // Append length\n  len <<= 3;\n  if (this.endian === 'big') {\n    for (var t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = len & 0xff;\n  } else {\n    res[i++] = len & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n\n    for (t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n  }\n\n  return res;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n  Reporter.call(this, options);\n  if (!Buffer.isBuffer(base)) {\n    this.error('Input not Buffer');\n    return;\n  }\n\n  this.base = base;\n  this.offset = 0;\n  this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n  if (data instanceof DecoderBuffer) {\n    return true;\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    Buffer.isBuffer(data.base) &&\n    data.constructor.name === 'DecoderBuffer' &&\n    typeof data.offset === 'number' &&\n    typeof data.length === 'number' &&\n    typeof data.save === 'function' &&\n    typeof data.restore === 'function' &&\n    typeof data.isEmpty === 'function' &&\n    typeof data.readUInt8 === 'function' &&\n    typeof data.skip === 'function' &&\n    typeof data.raw === 'function';\n\n  return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n  // Return skipped data\n  const res = new DecoderBuffer(this.base);\n  res.offset = save.offset;\n  res.length = this.offset;\n\n  this.offset = save.offset;\n  Reporter.prototype.restore.call(this, save.reporter);\n\n  return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n  return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n  if (this.offset + 1 <= this.length)\n    return this.base.readUInt8(this.offset++, true);\n  else\n    return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n  if (!(this.offset + bytes <= this.length))\n    return this.error(fail || 'DecoderBuffer overrun');\n\n  const res = new DecoderBuffer(this.base);\n\n  // Share reporter state\n  res._reporterState = this._reporterState;\n\n  res.offset = this.offset;\n  res.length = this.offset + bytes;\n  this.offset += bytes;\n  return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n  return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n  if (Array.isArray(value)) {\n    this.length = 0;\n    this.value = value.map(function(item) {\n      if (!EncoderBuffer.isEncoderBuffer(item))\n        item = new EncoderBuffer(item, reporter);\n      this.length += item.length;\n      return item;\n    }, this);\n  } else if (typeof value === 'number') {\n    if (!(0 <= value && value <= 0xff))\n      return reporter.error('non-byte EncoderBuffer value');\n    this.value = value;\n    this.length = 1;\n  } else if (typeof value === 'string') {\n    this.value = value;\n    this.length = Buffer.byteLength(value);\n  } else if (Buffer.isBuffer(value)) {\n    this.value = value;\n    this.length = value.length;\n  } else {\n    return reporter.error('Unsupported type: ' + typeof value);\n  }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n  if (data instanceof EncoderBuffer) {\n    return true;\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    data.constructor.name === 'EncoderBuffer' &&\n    typeof data.length === 'number' &&\n    typeof data.join === 'function';\n\n  return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n  if (!out)\n    out = Buffer.alloc(this.length);\n  if (!offset)\n    offset = 0;\n\n  if (this.length === 0)\n    return out;\n\n  if (Array.isArray(this.value)) {\n    this.value.forEach(function(item) {\n      item.join(out, offset);\n      offset += item.length;\n    });\n  } else {\n    if (typeof this.value === 'number')\n      out[offset] = this.value;\n    else if (typeof this.value === 'string')\n      out.write(this.value, offset);\n    else if (Buffer.isBuffer(this.value))\n      this.value.copy(out, offset);\n    offset += this.length;\n  }\n\n  return out;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.between = between;\nexports.safeMax = safeMax;\nexports.safeMin = safeMin;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\nfunction between(value, min, max) {\n  if (min && min > value) {\n    return min;\n  }\n\n  if (max && max < value) {\n    return max;\n  }\n\n  return value;\n}\n\nfunction isValidNumber(num) {\n  return num !== null && num !== false && !Number.isNaN(Number(num));\n}\n\nfunction safeMin() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return Math.min.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}\n\nfunction safeMax() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  return Math.max.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import memoize from 'lodash.memoize';\n\nfunction resolver(options) {\n  return JSON.stringify(options);\n}\n\nfunction uniqDefined(arr) {\n  return arr.filter(function (el, index) {\n    return el && arr.indexOf(el) === index;\n  });\n}\n\nfunction normalizeLocales(arr) {\n  return arr.map(function (el) {\n    if (!el || el.indexOf('-') === -1 || el.toLowerCase() !== el) {\n      return el;\n    }\n\n    var splitEl = el.split('-');\n    return splitEl[0] + \"-\" + splitEl[1].toUpperCase();\n  });\n}\n\nfunction getUserLocalesInternal(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$useFallbackLocal = _ref.useFallbackLocale,\n      useFallbackLocale = _ref$useFallbackLocal === void 0 ? true : _ref$useFallbackLocal,\n      _ref$fallbackLocale = _ref.fallbackLocale,\n      fallbackLocale = _ref$fallbackLocale === void 0 ? 'en-US' : _ref$fallbackLocale;\n\n  var languageList = [];\n\n  if (typeof window !== 'undefined') {\n    var _window = window,\n        navigator = _window.navigator;\n    languageList = languageList.concat(navigator.languages, navigator.language, navigator.userLanguage, navigator.browserLanguage, navigator.systemLanguage);\n  }\n\n  if (useFallbackLocale) {\n    languageList.push(fallbackLocale);\n  }\n\n  return normalizeLocales(uniqDefined(languageList));\n}\n\nexport var getUserLocales = memoize(getUserLocalesInternal, resolver);\n\nfunction getUserLocaleInternal(options) {\n  return getUserLocales(options)[0] || null;\n}\n\nexport var getUserLocale = memoize(getUserLocaleInternal, resolver);\nexport default getUserLocale;","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n  if (!isProduction) {\n    if (condition) {\n      return;\n    }\n\n    var text = \"Warning: \" + message;\n\n    if (typeof console !== 'undefined') {\n      console.warn(text);\n    }\n\n    try {\n      throw Error(text);\n    } catch (x) {}\n  }\n}\n\nexport default warning;\n","export default 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}","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n    return typeof Symbol === 'function'\n        ? /*@__PURE__*/ Symbol('rxSubscriber')\n        : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","export const SDK_VERSION = '7.118.0';\n","/**\n * Copyright (c) 2019-2021 Emilio Almansi. All rights reserved.\n * This work is licensed under the terms of the MIT license.\n * For a copy, see the file LICENSE in the root directory.\n */\n\nimport { clearIntervalAsync } from './clear'\nimport SetIntervalAsyncError from './error'\nimport SetIntervalAsyncTimer from './timer'\nimport { getNextIterationId, noop } from './util'\nimport { validateHandler, validateInterval } from './validation'\n\n/**\n * Executes the given handler at fixed intervals, while preventing<br>\n * multiple concurrent executions. The handler will never be executed<br>\n * concurrently more than once in any given moment, providing a fixed<br>\n * time interval between the <strong>end</strong> of a given execution and the <strong>start</strong> of<br>\n * the following one.\n *\n * @param {function} handler - Handler function to be executed in intervals.<br>\n *                             May be asynchronous.\n * @param {number} interval - Interval in milliseconds. Must be at least 10 ms.\n * @param {...*} args - Any number of arguments to pass on to the handler.\n * @returns {SetIntervalAsyncTimer}\n *          A timer object which can be used to stop execution with {@link clearIntervalAsync}.\n *\n * @alias [Fixed] setIntervalAsync\n */\nfunction setIntervalAsync (handler, interval, ...args) {\n  validateHandler(handler)\n  validateInterval(interval)\n  const timer = new SetIntervalAsyncTimer()\n  const iterationId = 0\n  timer.timeouts[iterationId] = setTimeout(\n    timeoutHandler,\n    interval,\n    timer,\n    iterationId,\n    handler,\n    interval,\n    ...args\n  )\n  return timer\n}\n\n/**\n * @private\n *\n * @param {SetIntervalAsyncTimer} timer\n * @param {number} iterationId\n * @param {function} handler\n * @param {number} interval\n * @param {...*} args\n */\nfunction timeoutHandler (timer, iterationId, handler, interval, ...args) {\n  delete timer.timeouts[iterationId]\n  timer.promises[iterationId] = runHandler(\n    timer,\n    iterationId,\n    handler,\n    interval,\n    ...args\n  )\n}\n\n/**\n * @private\n *\n * @param {SetIntervalAsyncTimer} timer\n * @param {number} iterationId\n * @param {function} handler\n * @param {number} interval\n * @param {...*} args\n */\nasync function runHandler (timer, iterationId, handler, interval, ...args) {\n  // The next line ensures that timer.promises[iterationId] is set\n  // before running the handler.\n  await noop()\n  try {\n    await handler(...args)\n  } finally {\n    if (!timer.stopped) {\n      const nextIterationId = getNextIterationId(iterationId)\n      timer.timeouts[nextIterationId] = setTimeout(\n        timeoutHandler,\n        interval,\n        timer,\n        nextIterationId,\n        handler,\n        interval,\n        ...args\n      )\n    }\n    delete timer.promises[iterationId]\n  }\n}\n\nexport { setIntervalAsync, clearIntervalAsync, SetIntervalAsyncTimer, SetIntervalAsyncError }\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n","'use strict';\n\nif (typeof process === 'undefined' ||\n    !process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = { nextTick: nextTick };\n} else {\n  module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\n\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n  if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n  var len = (buf.length / 4) | 0\n  var out = new Array(len)\n\n  for (var i = 0; i < len; i++) {\n    out[i] = buf.readUInt32BE(i * 4)\n  }\n\n  return out\n}\n\nfunction scrubVec (v) {\n  for (var i = 0; i < v.length; v++) {\n    v[i] = 0\n  }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n  var SUB_MIX0 = SUB_MIX[0]\n  var SUB_MIX1 = SUB_MIX[1]\n  var SUB_MIX2 = SUB_MIX[2]\n  var SUB_MIX3 = SUB_MIX[3]\n\n  var s0 = M[0] ^ keySchedule[0]\n  var s1 = M[1] ^ keySchedule[1]\n  var s2 = M[2] ^ keySchedule[2]\n  var s3 = M[3] ^ keySchedule[3]\n  var t0, t1, t2, t3\n  var ksRow = 4\n\n  for (var round = 1; round < nRounds; round++) {\n    t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n    t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n    t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n    t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n    s0 = t0\n    s1 = t1\n    s2 = t2\n    s3 = t3\n  }\n\n  t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n  t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n  t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n  t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n  t0 = t0 >>> 0\n  t1 = t1 >>> 0\n  t2 = t2 >>> 0\n  t3 = t3 >>> 0\n\n  return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n  // Compute double table\n  var d = new Array(256)\n  for (var j = 0; j < 256; j++) {\n    if (j < 128) {\n      d[j] = j << 1\n    } else {\n      d[j] = (j << 1) ^ 0x11b\n    }\n  }\n\n  var SBOX = []\n  var INV_SBOX = []\n  var SUB_MIX = [[], [], [], []]\n  var INV_SUB_MIX = [[], [], [], []]\n\n  // Walk GF(2^8)\n  var x = 0\n  var xi = 0\n  for (var i = 0; i < 256; ++i) {\n    // Compute sbox\n    var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n    sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n    SBOX[x] = sx\n    INV_SBOX[sx] = x\n\n    // Compute multiplication\n    var x2 = d[x]\n    var x4 = d[x2]\n    var x8 = d[x4]\n\n    // Compute sub bytes, mix columns tables\n    var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n    SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n    SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n    SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n    SUB_MIX[3][x] = t\n\n    // Compute inv sub bytes, inv mix columns tables\n    t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n    INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n    INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n    INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n    INV_SUB_MIX[3][sx] = t\n\n    if (x === 0) {\n      x = xi = 1\n    } else {\n      x = x2 ^ d[d[d[x8 ^ x2]]]\n      xi ^= d[d[xi]]\n    }\n  }\n\n  return {\n    SBOX: SBOX,\n    INV_SBOX: INV_SBOX,\n    SUB_MIX: SUB_MIX,\n    INV_SUB_MIX: INV_SUB_MIX\n  }\n})()\n\nfunction AES (key) {\n  this._key = asUInt32Array(key)\n  this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n  var keyWords = this._key\n  var keySize = keyWords.length\n  var nRounds = keySize + 6\n  var ksRows = (nRounds + 1) * 4\n\n  var keySchedule = []\n  for (var k = 0; k < keySize; k++) {\n    keySchedule[k] = keyWords[k]\n  }\n\n  for (k = keySize; k < ksRows; k++) {\n    var t = keySchedule[k - 1]\n\n    if (k % keySize === 0) {\n      t = (t << 8) | (t >>> 24)\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n\n      t ^= RCON[(k / keySize) | 0] << 24\n    } else if (keySize > 6 && k % keySize === 4) {\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n    }\n\n    keySchedule[k] = keySchedule[k - keySize] ^ t\n  }\n\n  var invKeySchedule = []\n  for (var ik = 0; ik < ksRows; ik++) {\n    var ksR = ksRows - ik\n    var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n    if (ik < 4 || ksR <= 4) {\n      invKeySchedule[ik] = tt\n    } else {\n      invKeySchedule[ik] =\n        G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n        G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n        G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n        G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n    }\n  }\n\n  this._nRounds = nRounds\n  this._keySchedule = keySchedule\n  this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n  M = asUInt32Array(M)\n  return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n  var out = this.encryptBlockRaw(M)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[1], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[3], 12)\n  return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n  M = asUInt32Array(M)\n\n  // swap\n  var m1 = M[1]\n  M[1] = M[3]\n  M[3] = m1\n\n  var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[3], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[1], 12)\n  return buf\n}\n\nAES.prototype.scrub = function () {\n  scrubVec(this._keySchedule)\n  scrubVec(this._invKeySchedule)\n  scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n  if (salt) {\n    if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n    if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n  }\n\n  var keyLen = keyBits / 8\n  var key = Buffer.alloc(keyLen)\n  var iv = Buffer.alloc(ivLen || 0)\n  var tmp = Buffer.alloc(0)\n\n  while (keyLen > 0 || ivLen > 0) {\n    var hash = new MD5()\n    hash.update(tmp)\n    hash.update(password)\n    if (salt) hash.update(salt)\n    tmp = hash.digest()\n\n    var used = 0\n\n    if (keyLen > 0) {\n      var keyStart = key.length - keyLen\n      used = Math.min(keyLen, tmp.length)\n      tmp.copy(key, keyStart, 0, used)\n      keyLen -= used\n    }\n\n    if (used < tmp.length && ivLen > 0) {\n      var ivStart = iv.length - ivLen\n      var length = Math.min(ivLen, tmp.length - used)\n      tmp.copy(iv, ivStart, used, used + length)\n      ivLen -= length\n    }\n  }\n\n  tmp.fill(0)\n  return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n  this.type = type;\n  this.p = new BN(conf.p, 16);\n\n  // Use Montgomery, when there is no fast reduction for the prime\n  this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n  // Useful for many curves\n  this.zero = new BN(0).toRed(this.red);\n  this.one = new BN(1).toRed(this.red);\n  this.two = new BN(2).toRed(this.red);\n\n  // Curve configuration, optional\n  this.n = conf.n && new BN(conf.n, 16);\n  this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n  // Temporary arrays\n  this._wnafT1 = new Array(4);\n  this._wnafT2 = new Array(4);\n  this._wnafT3 = new Array(4);\n  this._wnafT4 = new Array(4);\n\n  this._bitLength = this.n ? this.n.bitLength() : 0;\n\n  // Generalized Greg Maxwell's trick\n  var adjustCount = this.n && this.p.div(this.n);\n  if (!adjustCount || adjustCount.cmpn(100) > 0) {\n    this.redN = null;\n  } else {\n    this._maxwellTrick = true;\n    this.redN = this.n.toRed(this.red);\n  }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n  assert(p.precomputed);\n  var doubles = p._getDoubles();\n\n  var naf = getNAF(k, 1, this._bitLength);\n  var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n  I /= 3;\n\n  // Translate into more windowed form\n  var repr = [];\n  var j;\n  var nafW;\n  for (j = 0; j < naf.length; j += doubles.step) {\n    nafW = 0;\n    for (var l = j + doubles.step - 1; l >= j; l--)\n      nafW = (nafW << 1) + naf[l];\n    repr.push(nafW);\n  }\n\n  var a = this.jpoint(null, null, null);\n  var b = this.jpoint(null, null, null);\n  for (var i = I; i > 0; i--) {\n    for (j = 0; j < repr.length; j++) {\n      nafW = repr[j];\n      if (nafW === i)\n        b = b.mixedAdd(doubles.points[j]);\n      else if (nafW === -i)\n        b = b.mixedAdd(doubles.points[j].neg());\n    }\n    a = a.add(b);\n  }\n  return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n  var w = 4;\n\n  // Precompute window\n  var nafPoints = p._getNAFPoints(w);\n  w = nafPoints.wnd;\n  var wnd = nafPoints.points;\n\n  // Get NAF form\n  var naf = getNAF(k, w, this._bitLength);\n\n  // Add `this`*(N+1) for every w-NAF index\n  var acc = this.jpoint(null, null, null);\n  for (var i = naf.length - 1; i >= 0; i--) {\n    // Count zeroes\n    for (var l = 0; i >= 0 && naf[i] === 0; i--)\n      l++;\n    if (i >= 0)\n      l++;\n    acc = acc.dblp(l);\n\n    if (i < 0)\n      break;\n    var z = naf[i];\n    assert(z !== 0);\n    if (p.type === 'affine') {\n      // J +- P\n      if (z > 0)\n        acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n    } else {\n      // J +- J\n      if (z > 0)\n        acc = acc.add(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.add(wnd[(-z - 1) >> 1].neg());\n    }\n  }\n  return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n  points,\n  coeffs,\n  len,\n  jacobianResult) {\n  var wndWidth = this._wnafT1;\n  var wnd = this._wnafT2;\n  var naf = this._wnafT3;\n\n  // Fill all arrays\n  var max = 0;\n  var i;\n  var j;\n  var p;\n  for (i = 0; i < len; i++) {\n    p = points[i];\n    var nafPoints = p._getNAFPoints(defW);\n    wndWidth[i] = nafPoints.wnd;\n    wnd[i] = nafPoints.points;\n  }\n\n  // Comb small window NAFs\n  for (i = len - 1; i >= 1; i -= 2) {\n    var a = i - 1;\n    var b = i;\n    if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n      naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n      naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n      max = Math.max(naf[a].length, max);\n      max = Math.max(naf[b].length, max);\n      continue;\n    }\n\n    var comb = [\n      points[a], /* 1 */\n      null, /* 3 */\n      null, /* 5 */\n      points[b], /* 7 */\n    ];\n\n    // Try to avoid Projective points, if possible\n    if (points[a].y.cmp(points[b].y) === 0) {\n      comb[1] = points[a].add(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].add(points[b].neg());\n    } else {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    }\n\n    var index = [\n      -3, /* -1 -1 */\n      -1, /* -1 0 */\n      -5, /* -1 1 */\n      -7, /* 0 -1 */\n      0, /* 0 0 */\n      7, /* 0 1 */\n      5, /* 1 -1 */\n      1, /* 1 0 */\n      3,  /* 1 1 */\n    ];\n\n    var jsf = getJSF(coeffs[a], coeffs[b]);\n    max = Math.max(jsf[0].length, max);\n    naf[a] = new Array(max);\n    naf[b] = new Array(max);\n    for (j = 0; j < max; j++) {\n      var ja = jsf[0][j] | 0;\n      var jb = jsf[1][j] | 0;\n\n      naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n      naf[b][j] = 0;\n      wnd[a] = comb;\n    }\n  }\n\n  var acc = this.jpoint(null, null, null);\n  var tmp = this._wnafT4;\n  for (i = max; i >= 0; i--) {\n    var k = 0;\n\n    while (i >= 0) {\n      var zero = true;\n      for (j = 0; j < len; j++) {\n        tmp[j] = naf[j][i] | 0;\n        if (tmp[j] !== 0)\n          zero = false;\n      }\n      if (!zero)\n        break;\n      k++;\n      i--;\n    }\n    if (i >= 0)\n      k++;\n    acc = acc.dblp(k);\n    if (i < 0)\n      break;\n\n    for (j = 0; j < len; j++) {\n      var z = tmp[j];\n      p;\n      if (z === 0)\n        continue;\n      else if (z > 0)\n        p = wnd[j][(z - 1) >> 1];\n      else if (z < 0)\n        p = wnd[j][(-z - 1) >> 1].neg();\n\n      if (p.type === 'affine')\n        acc = acc.mixedAdd(p);\n      else\n        acc = acc.add(p);\n    }\n  }\n  // Zeroify references\n  for (i = 0; i < len; i++)\n    wnd[i] = null;\n\n  if (jacobianResult)\n    return acc;\n  else\n    return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n  this.curve = curve;\n  this.type = type;\n  this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n  throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n  return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  bytes = utils.toArray(bytes, enc);\n\n  var len = this.p.byteLength();\n\n  // uncompressed, hybrid-odd, hybrid-even\n  if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n      bytes.length - 1 === 2 * len) {\n    if (bytes[0] === 0x06)\n      assert(bytes[bytes.length - 1] % 2 === 0);\n    else if (bytes[0] === 0x07)\n      assert(bytes[bytes.length - 1] % 2 === 1);\n\n    var res =  this.point(bytes.slice(1, 1 + len),\n      bytes.slice(1 + len, 1 + 2 * len));\n\n    return res;\n  } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n              bytes.length - 1 === len) {\n    return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n  }\n  throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n  return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n  var len = this.curve.p.byteLength();\n  var x = this.getX().toArray('be', len);\n\n  if (compact)\n    return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n  return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n  return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n  if (this.precomputed)\n    return this;\n\n  var precomputed = {\n    doubles: null,\n    naf: null,\n    beta: null,\n  };\n  precomputed.naf = this._getNAFPoints(8);\n  precomputed.doubles = this._getDoubles(4, power);\n  precomputed.beta = this._getBeta();\n  this.precomputed = precomputed;\n\n  return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n  if (!this.precomputed)\n    return false;\n\n  var doubles = this.precomputed.doubles;\n  if (!doubles)\n    return false;\n\n  return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n  if (this.precomputed && this.precomputed.doubles)\n    return this.precomputed.doubles;\n\n  var doubles = [ this ];\n  var acc = this;\n  for (var i = 0; i < power; i += step) {\n    for (var j = 0; j < step; j++)\n      acc = acc.dbl();\n    doubles.push(acc);\n  }\n  return {\n    step: step,\n    points: doubles,\n  };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n  if (this.precomputed && this.precomputed.naf)\n    return this.precomputed.naf;\n\n  var res = [ this ];\n  var max = (1 << wnd) - 1;\n  var dbl = max === 1 ? null : this.dbl();\n  for (var i = 1; i < max; i++)\n    res[i] = res[i - 1].add(dbl);\n  return {\n    wnd: wnd,\n    points: res,\n  };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n  return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n  var r = this;\n  for (var i = 0; i < k; i++)\n    r = r.dbl();\n  return r;\n};\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n  var password\n  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n    password = buffer.passphrase\n    buffer = buffer.key\n  }\n  if (typeof buffer === 'string') {\n    buffer = Buffer.from(buffer)\n  }\n\n  var stripped = fixProc(buffer, password)\n\n  var type = stripped.tag\n  var data = stripped.data\n  var subtype, ndata\n  switch (type) {\n    case 'CERTIFICATE':\n      ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n      // falls through\n    case 'PUBLIC KEY':\n      if (!ndata) {\n        ndata = asn1.PublicKey.decode(data, 'der')\n      }\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n        case '1.2.840.10045.2.1':\n          ndata.subjectPrivateKey = ndata.subjectPublicKey\n          return {\n            type: 'ec',\n            data: ndata\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n          return {\n            type: 'dsa',\n            data: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      // throw new Error('unknown key type ' + type)\n    case 'ENCRYPTED PRIVATE KEY':\n      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n      data = decrypt(data, password)\n      // falls through\n    case 'PRIVATE KEY':\n      ndata = asn1.PrivateKey.decode(data, 'der')\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n        case '1.2.840.10045.2.1':\n          return {\n            curve: ndata.algorithm.curve,\n            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n          return {\n            type: 'dsa',\n            params: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      // throw new Error('unknown key type ' + type)\n    case 'RSA PUBLIC KEY':\n      return asn1.RSAPublicKey.decode(data, 'der')\n    case 'RSA PRIVATE KEY':\n      return asn1.RSAPrivateKey.decode(data, 'der')\n    case 'DSA PRIVATE KEY':\n      return {\n        type: 'dsa',\n        params: asn1.DSAPrivateKey.decode(data, 'der')\n      }\n    case 'EC PRIVATE KEY':\n      data = asn1.ECPrivateKey.decode(data, 'der')\n      return {\n        curve: data.parameters.value,\n        privateKey: data.privateKey\n      }\n    default: throw new Error('unknown key type ' + type)\n  }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n  var iv = data.algorithm.decrypt.cipher.iv\n  var cipherText = data.subjectPrivateKey\n  var keylen = parseInt(algo.split('-')[1], 10) / 8\n  var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n  var cipher = ciphers.createDecipheriv(algo, key, iv)\n  var out = []\n  out.push(cipher.update(cipherText))\n  out.push(cipher.final())\n  return Buffer.concat(out)\n}\n","var JsonWebTokenError = function (message, error) {\n  Error.call(this, message);\n  if(Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  }\n  this.name = 'JsonWebTokenError';\n  this.message = message;\n  if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\n\nmodule.exports = JsonWebTokenError;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\nvar toastr = {\n  maxAnimationDelay: 6000,\n  newestOnTop: true,\n  position: 'top-right',\n  preventDuplicates: true\n};\nvar _default = toastr;\nexports[\"default\"] = _default;","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n  return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n//   'createCredentials'\n// ].forEach(function (name) {\n//   exports[name] = function () {\n//     throw new Error([\n//       'sorry, ' + name + ' is not implemented yet',\n//       'we accept pull requests',\n//       'https://github.com/crypto-browserify/crypto-browserify'\n//     ].join('\\n'))\n//   }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n  throw new Error([\n    'sorry, createCredentials is not implemented yet',\n    'we accept pull requests',\n    'https://github.com/crypto-browserify/crypto-browserify'\n  ].join('\\n'))\n}\n\nexports.constants = {\n  'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n  'DH_CHECK_P_NOT_PRIME': 1,\n  'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n  'DH_NOT_SUITABLE_GENERATOR': 8,\n  'NPN_ENABLED': 1,\n  'ALPN_ENABLED': 1,\n  'RSA_PKCS1_PADDING': 1,\n  'RSA_SSLV23_PADDING': 2,\n  'RSA_NO_PADDING': 3,\n  'RSA_PKCS1_OAEP_PADDING': 4,\n  'RSA_X931_PADDING': 5,\n  'RSA_PKCS1_PSS_PADDING': 6,\n  'POINT_CONVERSION_COMPRESSED': 2,\n  'POINT_CONVERSION_UNCOMPRESSED': 4,\n  'POINT_CONVERSION_HYBRID': 6\n}\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function dependenciesChecker() {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};","export default function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n  const args = [].slice.call(arguments, 1)\n  const argsNum = args.length\n  const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n  if (!isLastArgCb && !canPromise()) {\n    throw new Error('Callback required as last argument')\n  }\n\n  if (isLastArgCb) {\n    if (argsNum < 2) {\n      throw new Error('Too few arguments provided')\n    }\n\n    if (argsNum === 2) {\n      cb = text\n      text = canvas\n      canvas = opts = undefined\n    } else if (argsNum === 3) {\n      if (canvas.getContext && typeof cb === 'undefined') {\n        cb = opts\n        opts = undefined\n      } else {\n        cb = opts\n        opts = text\n        text = canvas\n        canvas = undefined\n      }\n    }\n  } else {\n    if (argsNum < 1) {\n      throw new Error('Too few arguments provided')\n    }\n\n    if (argsNum === 1) {\n      text = canvas\n      canvas = opts = undefined\n    } else if (argsNum === 2 && !canvas.getContext) {\n      opts = text\n      text = canvas\n      canvas = undefined\n    }\n\n    return new Promise(function (resolve, reject) {\n      try {\n        const data = QRCode.create(text, opts)\n        resolve(renderFunc(data, canvas, opts))\n      } catch (e) {\n        reject(e)\n      }\n    })\n  }\n\n  try {\n    const data = QRCode.create(text, opts)\n    cb(null, renderFunc(data, canvas, opts))\n  } catch (e) {\n    cb(e)\n  }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n  return SvgRenderer.render(data, opts)\n})\n","import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n  // TODO (v8): Remove this check and just return span\n  // eslint-disable-next-line deprecation/deprecation\n  return span.transaction;\n}\n","import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n  trace_id: string,\n  client: Client,\n  scope?: Scope,\n): DynamicSamplingContext {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n  // TODO(v8): Remove segment from User\n  // eslint-disable-next-line deprecation/deprecation\n  const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n  const dsc = dropUndefinedKeys({\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    user_segment,\n    public_key,\n    trace_id,\n  }) as DynamicSamplingContext;\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly<Partial<DynamicSamplingContext>> {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n\n  // passing emit=false here to only emit later once the DSC is actually populated\n  const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n  if (!txn) {\n    return dsc;\n  }\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n  // @see Transaction class constructor\n  const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n  if (v7FrozenDsc) {\n    return v7FrozenDsc;\n  }\n\n  // TODO (v8): Replace txn.metadata with txn.attributes[]\n  // We can't do this yet because attributes aren't always set yet.\n  // eslint-disable-next-line deprecation/deprecation\n  const { sampleRate: maybeSampleRate, source } = txn.metadata;\n  if (maybeSampleRate != null) {\n    dsc.sample_rate = `${maybeSampleRate}`;\n  }\n\n  // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n  const jsonSpan = spanToJSON(txn);\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  if (source && source !== 'url') {\n    dsc.transaction = jsonSpan.description;\n  }\n\n  dsc.sampled = String(spanIsSampled(txn));\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n","import type {\n  CaptureContext,\n  Client,\n  ClientOptions,\n  Event,\n  EventHint,\n  Scope as ScopeInterface,\n  ScopeContext,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, addExceptionMechanism, dateTimestampInSeconds, normalize, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors';\nimport { Scope, getGlobalScope } from '../scope';\nimport { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent';\nimport { spanToJSON } from './spanUtils';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n  | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n  | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n  scope?: Scope,\n  client?: Client,\n  isolationScope?: Scope,\n): PromiseLike<Event | null> {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n  const prepared: Event = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n\n  // If we have scope given to us, use it as the base for further modifications.\n  // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n  const finalScope = getFinalScope(scope, hint.captureContext);\n\n  if (hint.mechanism) {\n    addExceptionMechanism(prepared, hint.mechanism);\n  }\n\n  const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Hub.addEventProcessor} gets the finished prepared event.\n  // Merge scope data together\n  const data = getGlobalScope().getScopeData();\n\n  if (isolationScope) {\n    const isolationData = isolationScope.getScopeData();\n    mergeScopeData(data, isolationData);\n  }\n\n  if (finalScope) {\n    const finalScopeData = finalScope.getScopeData();\n    mergeScopeData(data, finalScopeData);\n  }\n\n  const attachments = [...(hint.attachments || []), ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n\n  applyScopeDataToEvent(prepared, data);\n\n  // TODO (v8): Update this order to be: Global > Client > Scope\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // eslint-disable-next-line deprecation/deprecation\n    ...getGlobalEventProcessors(),\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors,\n  ];\n\n  const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\n\n/**\n *  Enhances event using the client configuration.\n *  It takes care of all \"static\" values like environment, release and `dist`,\n *  as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n  const { environment, release, dist, maxValueLength = 250 } = options;\n\n  if (!('environment' in event)) {\n    event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n  }\n\n  if (event.release === undefined && release !== undefined) {\n    event.release = release;\n  }\n\n  if (event.dist === undefined && dist !== undefined) {\n    event.dist = dist;\n  }\n\n  if (event.message) {\n    event.message = truncate(event.message, maxValueLength);\n  }\n\n  const exception = event.exception && event.exception.values && event.exception.values[0];\n  if (exception && exception.value) {\n    exception.value = truncate(exception.value, maxValueLength);\n  }\n\n  const request = event.request;\n  if (request && request.url) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return;\n  }\n\n  let debugIdStackFramesCache: Map<string, StackFrame[]>;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map<string, StackFrame[]>();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.keys(debugIdMap).reduce<Record<string, string>>((acc, debugIdStackTrace) => {\n    let parsedStack: StackFrame[];\n    const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n    if (cachedParsedStack) {\n      parsedStack = cachedParsedStack;\n    } else {\n      parsedStack = stackParser(debugIdStackTrace);\n      debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n    }\n\n    for (let i = parsedStack.length - 1; i >= 0; i--) {\n      const stackFrame = parsedStack[i];\n      if (stackFrame.filename) {\n        acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n        break;\n      }\n    }\n    return acc;\n  }, {});\n\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event!.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.filename) {\n          frame.debug_id = filenameDebugIdMap[frame.filename];\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap: Record<string, string> = {};\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.debug_id) {\n          if (frame.abs_path) {\n            filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n          } else if (frame.filename) {\n            filenameDebugIdMap[frame.filename] = frame.debug_id;\n          }\n          delete frame.debug_id;\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.keys(filenameDebugIdMap).forEach(filename => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id: filenameDebugIdMap[filename],\n    });\n  });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n  }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n  if (!event) {\n    return null;\n  }\n\n  const normalized: Event = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\n  // event.contexts.trace stores information about a Transaction. Similarly,\n  // event.spans[] stores information about child Spans. Given that a\n  // Transaction is conceptually a Span, normalization should apply to both\n  // Transactions and Spans consistently.\n  // For now the decision is to skip normalization of Transactions and Spans,\n  // so this block overwrites the normalized event to add back the original\n  // Transaction information prior to normalization.\n  if (event.contexts && event.contexts.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n\n    // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n\n  // event.spans[].data may contain circular/dangerous data so we need to normalize it\n  if (event.spans) {\n    normalized.spans = event.spans.map(span => {\n      const data = spanToJSON(span).data;\n\n      if (data) {\n        // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n        // eslint-disable-next-line deprecation/deprecation\n        span.data = normalize(data, depth, maxBreadth);\n      }\n\n      return span;\n    });\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n  if (!captureContext) {\n    return scope;\n  }\n\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n  hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n  if (!hint) {\n    return undefined;\n  }\n\n  // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint,\n    };\n  }\n\n  return hint;\n}\n\nfunction hintIsScopeOrFunction(\n  hint: CaptureContext | EventHint,\n): hint is ScopeInterface | ((scope: ScopeInterface) => ScopeInterface) {\n  return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n  'user',\n  'level',\n  'extra',\n  'contexts',\n  'tags',\n  'fingerprint',\n  'requestSession',\n  'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial<ScopeContext> | EventHint): hint is Partial<ScopeContext> {\n  return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import { StackFrame } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\nexport type StackParser = (stack: string, skipFirst?: number) => StackFrame[];\nexport type StackLineParserFn = (line: string) => StackFrame | undefined;\nexport type StackLineParser = [number, StackLineParserFn];\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack: string, skipFirst: number = 0): StackFrame[] => {\n    const frames: StackFrame[] = [];\n\n    for (const line of stack.split('\\n').slice(skipFirst)) {\n      for (const parser of sortedParsers) {\n        const frame = parser(line);\n\n        if (frame) {\n          frames.push(frame);\n          break;\n        }\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames);\n  };\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n  if (!stack.length) {\n    return [];\n  }\n\n  let localStack = stack;\n\n  const firstFrameFunction = localStack[0].function || '';\n  const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n  // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n  if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n    localStack = localStack.slice(1);\n  }\n\n  // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n  if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n    localStack = localStack.slice(0, -1);\n  }\n\n  // The frame where the crash happened, should be the last entry in the array\n  return localStack\n    .slice(0, STACKTRACE_LIMIT)\n    .map(frame => ({\n      ...frame,\n      filename: frame.filename || localStack[0].filename,\n      function: frame.function || '?',\n    }))\n    .reverse();\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n  try {\n    if (!fn || typeof fn !== 'function') {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    return defaultFunctionName;\n  }\n}\n","(function(root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof exports === 'object') {\n    module.exports = factory();\n  } else {\n    root.loadjs = factory();\n  }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n    bundleIdCache = {},\n    bundleResultCache = {},\n    bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n  // listify\n  bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n  var depsNotFound = [],\n      i = bundleIds.length,\n      numWaiting = i,\n      fn,\n      bundleId,\n      r,\n      q;\n\n  // define callback function\n  fn = function (bundleId, pathsNotFound) {\n    if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n    numWaiting--;\n    if (!numWaiting) callbackFn(depsNotFound);\n  };\n\n  // register callback\n  while (i--) {\n    bundleId = bundleIds[i];\n\n    // execute callback if in result cache\n    r = bundleResultCache[bundleId];\n    if (r) {\n      fn(bundleId, r);\n      continue;\n    }\n\n    // add to callback queue\n    q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n    q.push(fn);\n  }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n  // exit if id isn't defined\n  if (!bundleId) return;\n\n  var q = bundleCallbackQueue[bundleId];\n\n  // cache result\n  bundleResultCache[bundleId] = pathsNotFound;\n\n  // exit if queue is empty\n  if (!q) return;\n\n  // empty callback queue\n  while (q.length) {\n    q[0](bundleId, pathsNotFound);\n    q.splice(0, 1);\n  }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n  // accept function as argument\n  if (args.call) args = {success: args};\n\n  // success and error callbacks\n  if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n  else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n  var doc = document,\n      async = args.async,\n      maxTries = (args.numRetries || 0) + 1,\n      beforeCallbackFn = args.before || devnull,\n      pathname = path.replace(/[\\?|#].*$/, ''),\n      pathStripped = path.replace(/^(css|img)!/, ''),\n      isLegacyIECss,\n      e;\n\n  numTries = numTries || 0;\n\n  if (/(^css!|\\.css$)/.test(pathname)) {\n    // css\n    e = doc.createElement('link');\n    e.rel = 'stylesheet';\n    e.href = pathStripped;\n\n    // tag IE9+\n    isLegacyIECss = 'hideFocus' in e;\n\n    // use preload in IE Edge (to detect load errors)\n    if (isLegacyIECss && e.relList) {\n      isLegacyIECss = 0;\n      e.rel = 'preload';\n      e.as = 'style';\n    }\n  } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n    // image\n    e = doc.createElement('img');\n    e.src = pathStripped;    \n  } else {\n    // javascript\n    e = doc.createElement('script');\n    e.src = path;\n    e.async = async === undefined ? true : async;\n  }\n\n  e.onload = e.onerror = e.onbeforeload = function (ev) {\n    var result = ev.type[0];\n\n    // treat empty stylesheets as failures to get around lack of onerror\n    // support in IE9-11\n    if (isLegacyIECss) {\n      try {\n        if (!e.sheet.cssText.length) result = 'e';\n      } catch (x) {\n        // sheets objects created from load errors don't allow access to\n        // `cssText` (unless error is Code:18 SecurityError)\n        if (x.code != 18) result = 'e';\n      }\n    }\n\n    // handle retries in case of load failure\n    if (result == 'e') {\n      // increment counter\n      numTries += 1;\n\n      // exit function and try again\n      if (numTries < maxTries) {\n        return loadFile(path, callbackFn, args, numTries);\n      }\n    } else if (e.rel == 'preload' && e.as == 'style') {\n      // activate preloaded stylesheets\n      return e.rel = 'stylesheet'; // jshint ignore:line\n    }\n    \n    // execute callback\n    callbackFn(path, result, ev.defaultPrevented);\n  };\n\n  // add to document (unless callback returns `false`)\n  if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n  // listify paths\n  paths = paths.push ? paths : [paths];\n\n  var numWaiting = paths.length,\n      x = numWaiting,\n      pathsNotFound = [],\n      fn,\n      i;\n\n  // define callback function\n  fn = function(path, result, defaultPrevented) {\n    // handle error\n    if (result == 'e') pathsNotFound.push(path);\n\n    // handle beforeload event. If defaultPrevented then that means the load\n    // will be blocked (ex. Ghostery/ABP on Safari)\n    if (result == 'b') {\n      if (defaultPrevented) pathsNotFound.push(path);\n      else return;\n    }\n\n    numWaiting--;\n    if (!numWaiting) callbackFn(pathsNotFound);\n  };\n\n  // load scripts\n  for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n *   callback or (3) object literal with success/error arguments, numRetries,\n *   etc.\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n *   literal with success/error arguments, numRetries, etc.\n */\nfunction loadjs(paths, arg1, arg2) {\n  var bundleId,\n      args;\n\n  // bundleId (if string)\n  if (arg1 && arg1.trim) bundleId = arg1;\n\n  // args (default is {})\n  args = (bundleId ? arg2 : arg1) || {};\n\n  // throw error if bundle is already defined\n  if (bundleId) {\n    if (bundleId in bundleIdCache) {\n      throw \"LoadJS\";\n    } else {\n      bundleIdCache[bundleId] = true;\n    }\n  }\n\n  function loadFn(resolve, reject) {\n    loadFiles(paths, function (pathsNotFound) {\n      // execute callbacks\n      executeCallbacks(args, pathsNotFound);\n      \n      // resolve Promise\n      if (resolve) {\n        executeCallbacks({success: resolve, error: reject}, pathsNotFound);\n      }\n\n      // publish bundle load event\n      publish(bundleId, pathsNotFound);\n    }, args);\n  }\n  \n  if (args.returnPromise) return new Promise(loadFn);\n  else loadFn();\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n  // subscribe to bundle load event\n  subscribe(deps, function (depsNotFound) {\n    // execute callbacks\n    executeCallbacks(args, depsNotFound);\n  });\n\n  return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n  publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n  bundleIdCache = {};\n  bundleResultCache = {};\n  bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n  return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { consoleSandbox, logger } from './logger';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n  return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return (\n    `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n    `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n  );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return undefined;\n  }\n\n  const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n  let path = '';\n  let projectId = lastPath;\n\n  const split = projectId.split('/');\n  if (split.length > 1) {\n    path = split.slice(0, -1).join('/');\n    projectId = split.pop() as string;\n  }\n\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents: ReadonlyArray<keyof DsnComponents> = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      logger.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n","/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nexport function identity(x) {\n    return x;\n}\n//# sourceMappingURL=identity.js.map\n","/** PURE_IMPORTS_START _identity PURE_IMPORTS_END */\nimport { identity } from './identity';\nexport function pipe() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n    if (fns.length === 0) {\n        return identity;\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function piped(input) {\n        return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n    };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n    function Observable(subscribe) {\n        this._isScalar = false;\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var operator = this.operator;\n        var sink = toSubscriber(observerOrNext, error, complete);\n        if (operator) {\n            sink.add(operator.call(sink, this.source));\n        }\n        else {\n            sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n                this._subscribe(sink) :\n                this._trySubscribe(sink));\n        }\n        if (config.useDeprecatedSynchronousErrorHandling) {\n            if (sink.syncErrorThrowable) {\n                sink.syncErrorThrowable = false;\n                if (sink.syncErrorThrown) {\n                    throw sink.syncErrorValue;\n                }\n            }\n        }\n        return sink;\n    };\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            if (config.useDeprecatedSynchronousErrorHandling) {\n                sink.syncErrorThrown = true;\n                sink.syncErrorValue = err;\n            }\n            if (canReportError(sink)) {\n                sink.error(err);\n            }\n            else {\n                console.warn(err);\n            }\n        }\n    };\n    Observable.prototype.forEach = function (next, promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var subscription;\n            subscription = _this.subscribe(function (value) {\n                try {\n                    next(value);\n                }\n                catch (err) {\n                    reject(err);\n                    if (subscription) {\n                        subscription.unsubscribe();\n                    }\n                }\n            }, reject, resolve);\n        });\n    };\n    Observable.prototype._subscribe = function (subscriber) {\n        var source = this.source;\n        return source && source.subscribe(subscriber);\n    };\n    Observable.prototype[Symbol_observable] = function () {\n        return this;\n    };\n    Observable.prototype.pipe = function () {\n        var operations = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            operations[_i] = arguments[_i];\n        }\n        if (operations.length === 0) {\n            return this;\n        }\n        return pipeFromArray(operations)(this);\n    };\n    Observable.prototype.toPromise = function (promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var value;\n            _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n        });\n    };\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n    if (!promiseCtor) {\n        promiseCtor = config.Promise || Promise;\n    }\n    if (!promiseCtor) {\n        throw new Error('no Promise impl found');\n    }\n    return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n    if (nextOrObserver) {\n        if (nextOrObserver instanceof Subscriber) {\n            return nextOrObserver;\n        }\n        if (nextOrObserver[rxSubscriberSymbol]) {\n            return nextOrObserver[rxSubscriberSymbol]();\n        }\n    }\n    if (!nextOrObserver && !error && !complete) {\n        return new Subscriber(emptyObserver);\n    }\n    return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n    while (observer) {\n        var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n        if (closed_1 || isStopped) {\n            return false;\n        }\n        else if (destination && destination instanceof Subscriber) {\n            observer = destination;\n        }\n        else {\n            observer = null;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n  transitional: {\n    silentJSONParsing: true,\n    forcedJSONParsing: true,\n    clarifyTimeoutError: false\n  },\n\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n      setContentTypeIfUnset(headers, 'application/json');\n      return stringifySafely(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    var transitional = this.transitional;\n    var silentJSONParsing = transitional && transitional.silentJSONParsing;\n    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw enhanceError(e, this, 'E_JSON_PARSE');\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n  'HS256', 'HS384', 'HS512',\n  'RS256', 'RS384', 'RS512',\n  'PS256', 'PS384', 'PS512',\n  'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n  return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n  return new VerifyStream(opts);\n};\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var writableHwm = options.writableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    pna.nextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    pna.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    pna.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      pna.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n  var M = ARRAY16\n  for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n  var a = this._a\n  var b = this._b\n  var c = this._c\n  var d = this._d\n\n  a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n  d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n  c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n  b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n  a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n  d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n  c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n  b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n  a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n  d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n  c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n  b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n  a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n  d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n  c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n  b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n  a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n  d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n  c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n  b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n  a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n  d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n  c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n  b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n  a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n  d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n  c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n  b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n  a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n  d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n  c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n  b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n  a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n  d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n  c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n  b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n  a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n  d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n  c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n  b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n  a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n  d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n  c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n  b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n  a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n  d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n  c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n  b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n  a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n  d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n  c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n  b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n  a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n  d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n  c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n  b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n  a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n  d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n  c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n  b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n  a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n  d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n  c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n  b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n  this._a = (this._a + a) | 0\n  this._b = (this._b + b) | 0\n  this._c = (this._c + c) | 0\n  this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.allocUnsafe(16)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n  return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n  var words = ARRAY16\n  for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n  var al = this._a | 0\n  var bl = this._b | 0\n  var cl = this._c | 0\n  var dl = this._d | 0\n  var el = this._e | 0\n\n  var ar = this._a | 0\n  var br = this._b | 0\n  var cr = this._c | 0\n  var dr = this._d | 0\n  var er = this._e | 0\n\n  // computation\n  for (var i = 0; i < 80; i += 1) {\n    var tl\n    var tr\n    if (i < 16) {\n      tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n      tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n    } else if (i < 32) {\n      tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n      tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n    } else if (i < 48) {\n      tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n      tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n    } else if (i < 64) {\n      tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n      tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n    } else { // if (i<80) {\n      tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n      tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n    }\n\n    al = el\n    el = dl\n    dl = rotl(cl, 10)\n    cl = bl\n    bl = tl\n\n    ar = er\n    er = dr\n    dr = rotl(cr, 10)\n    cr = br\n    br = tr\n  }\n\n  // update state\n  var t = (this._b + cl + dr) | 0\n  this._b = (this._c + dl + er) | 0\n  this._c = (this._d + el + ar) | 0\n  this._d = (this._e + al + br) | 0\n  this._e = (this._a + bl + cr) | 0\n  this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  buffer.writeInt32LE(this._e, 16)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n  algorithm = algorithm.toLowerCase()\n\n  var Algorithm = exports[algorithm]\n  if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n  return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n  this.options = options;\n\n  this.type = this.options.type;\n  this.blockSize = 8;\n  this._init();\n\n  this.buffer = new Array(this.blockSize);\n  this.bufferOff = 0;\n  this.padding = options.padding !== false\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n  // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n  if (data.length === 0)\n    return [];\n\n  if (this.type === 'decrypt')\n    return this._updateDecrypt(data);\n  else\n    return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n  // Append data to buffer\n  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n  for (var i = 0; i < min; i++)\n    this.buffer[this.bufferOff + i] = data[off + i];\n  this.bufferOff += min;\n\n  // Shift next\n  return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n  this._update(this.buffer, 0, out, off);\n  this.bufferOff = 0;\n  return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n  var out = new Array(count * this.blockSize);\n\n  if (this.bufferOff !== 0) {\n    inputOff += this._buffer(data, inputOff);\n\n    if (this.bufferOff === this.buffer.length)\n      outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Write blocks\n  var max = data.length - ((data.length - inputOff) % this.blockSize);\n  for (; inputOff < max; inputOff += this.blockSize) {\n    this._update(data, inputOff, out, outputOff);\n    outputOff += this.blockSize;\n  }\n\n  // Queue rest\n  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n    this.buffer[this.bufferOff] = data[inputOff];\n\n  return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n  var out = new Array(count * this.blockSize);\n\n  // TODO(indutny): optimize it, this is far from optimal\n  for (; count > 0; count--) {\n    inputOff += this._buffer(data, inputOff);\n    outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Buffer rest of the input\n  inputOff += this._buffer(data, inputOff);\n\n  return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n  var first;\n  if (buffer)\n    first = this.update(buffer);\n\n  var last;\n  if (this.type === 'encrypt')\n    last = this._finalEncrypt();\n  else\n    last = this._finalDecrypt();\n\n  if (first)\n    return first.concat(last);\n  else\n    return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n  if (off === 0)\n    return false;\n\n  while (off < buffer.length)\n    buffer[off++] = 0;\n\n  return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n  if (!this._pad(this.buffer, this.bufferOff))\n    return [];\n\n  var out = new Array(this.blockSize);\n  this._update(this.buffer, 0, out, 0);\n  return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n  return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n  var out = new Array(this.blockSize);\n  this._flushBuffer(out, 0);\n\n  return this._unpad(out);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n  return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var modeModules = {\n  ECB: require('./ecb'),\n  CBC: require('./cbc'),\n  CFB: require('./cfb'),\n  CFB8: require('./cfb8'),\n  CFB1: require('./cfb1'),\n  OFB: require('./ofb'),\n  CTR: require('./ctr'),\n  GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n  modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var r;\n\nmodule.exports = function rand(len) {\n  if (!r)\n    r = new Rand(null);\n\n  return r.generate(len);\n};\n\nfunction Rand(rand) {\n  this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n  return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n  if (this.rand.getBytes)\n    return this.rand.getBytes(n);\n\n  var res = new Uint8Array(n);\n  for (var i = 0; i < res.length; i++)\n    res[i] = this.rand.getByte();\n  return res;\n};\n\nif (typeof self === 'object') {\n  if (self.crypto && self.crypto.getRandomValues) {\n    // Modern browsers\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.crypto.getRandomValues(arr);\n      return arr;\n    };\n  } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n    // IE\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.msCrypto.getRandomValues(arr);\n      return arr;\n    };\n\n  // Safari's WebWorkers do not have `crypto`\n  } else if (typeof window === 'object') {\n    // Old junk\n    Rand.prototype._rand = function() {\n      throw new Error('Not implemented yet');\n    };\n  }\n} else {\n  // Node.js or Web worker with no crypto support\n  try {\n    var crypto = require('crypto');\n    if (typeof crypto.randomBytes !== 'function')\n      throw new Error('Not supported');\n\n    Rand.prototype._rand = function _rand(n) {\n      return crypto.randomBytes(n);\n    };\n  } catch (e) {\n  }\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n  var r = getr(priv)\n  var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n  return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n  var len = priv.modulus.byteLength()\n  var r\n  do {\n    r = new BN(randomBytes(len))\n  } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n  return r\n}\n\nfunction crt (msg, priv) {\n  var blinds = blind(priv)\n  var len = priv.modulus.byteLength()\n  var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n  var c1 = blinded.toRed(BN.mont(priv.prime1))\n  var c2 = blinded.toRed(BN.mont(priv.prime2))\n  var qinv = priv.coefficient\n  var p = priv.prime1\n  var q = priv.prime2\n  var m1 = c1.redPow(priv.exponent1).fromRed()\n  var m2 = c2.redPow(priv.exponent2).fromRed()\n  var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n  return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out._strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n  if (options.type === 'short')\n    this.curve = new curve.short(options);\n  else if (options.type === 'edwards')\n    this.curve = new curve.edwards(options);\n  else\n    this.curve = new curve.mont(options);\n  this.g = this.curve.g;\n  this.n = this.curve.n;\n  this.hash = options.hash;\n\n  assert(this.g.validate(), 'Invalid curve');\n  assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n  Object.defineProperty(curves, name, {\n    configurable: true,\n    enumerable: true,\n    get: function() {\n      var curve = new PresetCurve(options);\n      Object.defineProperty(curves, name, {\n        configurable: true,\n        enumerable: true,\n        value: curve,\n      });\n      return curve;\n    },\n  });\n}\n\ndefineCurve('p192', {\n  type: 'short',\n  prime: 'p192',\n  p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n  b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n  n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n    '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n  ],\n});\n\ndefineCurve('p224', {\n  type: 'short',\n  prime: 'p224',\n  p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n  b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n  n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n    'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n  ],\n});\n\ndefineCurve('p256', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n  a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n  b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n  n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n    '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n  ],\n});\n\ndefineCurve('p384', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 ffffffff',\n  a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 fffffffc',\n  b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n     '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n  n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n     'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n  hash: hash.sha384,\n  gRed: false,\n  g: [\n    'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n    '5502f25d bf55296c 3a545e38 72760ab7',\n    '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n    '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n  ],\n});\n\ndefineCurve('p521', {\n  type: 'short',\n  prime: null,\n  p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff',\n  a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff fffffffc',\n  b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n     '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n     '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n  n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n     'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n  hash: hash.sha512,\n  gRed: false,\n  g: [\n    '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n    '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n    'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n    '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n    '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n    '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n  ],\n});\n\ndefineCurve('curve25519', {\n  type: 'mont',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '76d06',\n  b: '1',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '9',\n  ],\n});\n\ndefineCurve('ed25519', {\n  type: 'edwards',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '-1',\n  c: '1',\n  // -121665 * (121666^(-1)) (mod P)\n  d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n    // 4/5\n    '6666666666666666666666666666666666666666666666666666666666666658',\n  ],\n});\n\nvar pre;\ntry {\n  pre = require('./precomputed/secp256k1');\n} catch (e) {\n  pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n  type: 'short',\n  prime: 'k256',\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n  a: '0',\n  b: '7',\n  n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n  h: '1',\n  hash: hash.sha256,\n\n  // Precomputed endomorphism\n  beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n  lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n  basis: [\n    {\n      a: '3086d221a7d46bcde86c90e49284eb15',\n      b: '-e4437ed6010e88286f547fa90abfe4c3',\n    },\n    {\n      a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n      b: '3086d221a7d46bcde86c90e49284eb15',\n    },\n  ],\n\n  gRed: false,\n  g: [\n    '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n    '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n    pre,\n  ],\n});\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n  'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n  'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n  'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n  'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n  'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n  'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n  '_peekTag', '_decodeTag', '_use',\n  '_decodeStr', '_decodeObjid', '_decodeTime',\n  '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n  '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n  '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n  const state = {};\n  this._baseState = state;\n\n  state.name = name;\n  state.enc = enc;\n\n  state.parent = parent || null;\n  state.children = null;\n\n  // State\n  state.tag = null;\n  state.args = null;\n  state.reverseArgs = null;\n  state.choice = null;\n  state.optional = false;\n  state.any = false;\n  state.obj = false;\n  state.use = null;\n  state.useDecoder = null;\n  state.key = null;\n  state['default'] = null;\n  state.explicit = null;\n  state.implicit = null;\n  state.contains = null;\n\n  // Should create new instance on each method\n  if (!state.parent) {\n    state.children = [];\n    this._wrap();\n  }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n  'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n  'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n  'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n  const state = this._baseState;\n  const cstate = {};\n  stateProps.forEach(function(prop) {\n    cstate[prop] = state[prop];\n  });\n  const res = new this.constructor(cstate.parent);\n  res._baseState = cstate;\n  return res;\n};\n\nNode.prototype._wrap = function wrap() {\n  const state = this._baseState;\n  methods.forEach(function(method) {\n    this[method] = function _wrappedMethod() {\n      const clone = new this.constructor(this);\n      state.children.push(clone);\n      return clone[method].apply(clone, arguments);\n    };\n  }, this);\n};\n\nNode.prototype._init = function init(body) {\n  const state = this._baseState;\n\n  assert(state.parent === null);\n  body.call(this);\n\n  // Filter children\n  state.children = state.children.filter(function(child) {\n    return child._baseState.parent === this;\n  }, this);\n  assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n  const state = this._baseState;\n\n  // Filter children and args\n  const children = args.filter(function(arg) {\n    return arg instanceof this.constructor;\n  }, this);\n  args = args.filter(function(arg) {\n    return !(arg instanceof this.constructor);\n  }, this);\n\n  if (children.length !== 0) {\n    assert(state.children === null);\n    state.children = children;\n\n    // Replace parent to maintain backward link\n    children.forEach(function(child) {\n      child._baseState.parent = this;\n    }, this);\n  }\n  if (args.length !== 0) {\n    assert(state.args === null);\n    state.args = args;\n    state.reverseArgs = args.map(function(arg) {\n      if (typeof arg !== 'object' || arg.constructor !== Object)\n        return arg;\n\n      const res = {};\n      Object.keys(arg).forEach(function(key) {\n        if (key == (key | 0))\n          key |= 0;\n        const value = arg[key];\n        res[value] = key;\n      });\n      return res;\n    });\n  }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n  Node.prototype[method] = function _overrided() {\n    const state = this._baseState;\n    throw new Error(method + ' not implemented for encoding: ' + state.enc);\n  };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n  Node.prototype[tag] = function _tagMethod() {\n    const state = this._baseState;\n    const args = Array.prototype.slice.call(arguments);\n\n    assert(state.tag === null);\n    state.tag = tag;\n\n    this._useArgs(args);\n\n    return this;\n  };\n});\n\nNode.prototype.use = function use(item) {\n  assert(item);\n  const state = this._baseState;\n\n  assert(state.use === null);\n  state.use = item;\n\n  return this;\n};\n\nNode.prototype.optional = function optional() {\n  const state = this._baseState;\n\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.def = function def(val) {\n  const state = this._baseState;\n\n  assert(state['default'] === null);\n  state['default'] = val;\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n  const state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.explicit = num;\n\n  return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n  const state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.implicit = num;\n\n  return this;\n};\n\nNode.prototype.obj = function obj() {\n  const state = this._baseState;\n  const args = Array.prototype.slice.call(arguments);\n\n  state.obj = true;\n\n  if (args.length !== 0)\n    this._useArgs(args);\n\n  return this;\n};\n\nNode.prototype.key = function key(newKey) {\n  const state = this._baseState;\n\n  assert(state.key === null);\n  state.key = newKey;\n\n  return this;\n};\n\nNode.prototype.any = function any() {\n  const state = this._baseState;\n\n  state.any = true;\n\n  return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n  const state = this._baseState;\n\n  assert(state.choice === null);\n  state.choice = obj;\n  this._useArgs(Object.keys(obj).map(function(key) {\n    return obj[key];\n  }));\n\n  return this;\n};\n\nNode.prototype.contains = function contains(item) {\n  const state = this._baseState;\n\n  assert(state.use === null);\n  state.contains = item;\n\n  return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n  const state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return input.wrapResult(state.children[0]._decode(input, options));\n\n  let result = state['default'];\n  let present = true;\n\n  let prevKey = null;\n  if (state.key !== null)\n    prevKey = input.enterKey(state.key);\n\n  // Check if tag is there\n  if (state.optional) {\n    let tag = null;\n    if (state.explicit !== null)\n      tag = state.explicit;\n    else if (state.implicit !== null)\n      tag = state.implicit;\n    else if (state.tag !== null)\n      tag = state.tag;\n\n    if (tag === null && !state.any) {\n      // Trial and Error\n      const save = input.save();\n      try {\n        if (state.choice === null)\n          this._decodeGeneric(state.tag, input, options);\n        else\n          this._decodeChoice(input, options);\n        present = true;\n      } catch (e) {\n        present = false;\n      }\n      input.restore(save);\n    } else {\n      present = this._peekTag(input, tag, state.any);\n\n      if (input.isError(present))\n        return present;\n    }\n  }\n\n  // Push object on stack\n  let prevObj;\n  if (state.obj && present)\n    prevObj = input.enterObject();\n\n  if (present) {\n    // Unwrap explicit values\n    if (state.explicit !== null) {\n      const explicit = this._decodeTag(input, state.explicit);\n      if (input.isError(explicit))\n        return explicit;\n      input = explicit;\n    }\n\n    const start = input.offset;\n\n    // Unwrap implicit and normal values\n    if (state.use === null && state.choice === null) {\n      let save;\n      if (state.any)\n        save = input.save();\n      const body = this._decodeTag(\n        input,\n        state.implicit !== null ? state.implicit : state.tag,\n        state.any\n      );\n      if (input.isError(body))\n        return body;\n\n      if (state.any)\n        result = input.raw(save);\n      else\n        input = body;\n    }\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), start, input.length, 'tagged');\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), input.offset, input.length, 'content');\n\n    // Select proper method for tag\n    if (state.any) {\n      // no-op\n    } else if (state.choice === null) {\n      result = this._decodeGeneric(state.tag, input, options);\n    } else {\n      result = this._decodeChoice(input, options);\n    }\n\n    if (input.isError(result))\n      return result;\n\n    // Decode children\n    if (!state.any && state.choice === null && state.children !== null) {\n      state.children.forEach(function decodeChildren(child) {\n        // NOTE: We are ignoring errors here, to let parser continue with other\n        // parts of encoded data\n        child._decode(input, options);\n      });\n    }\n\n    // Decode contained/encoded by schema, only in bit or octet strings\n    if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n      const data = new DecoderBuffer(result);\n      result = this._getUse(state.contains, input._reporterState.obj)\n        ._decode(data, options);\n    }\n  }\n\n  // Pop object\n  if (state.obj && present)\n    result = input.leaveObject(prevObj);\n\n  // Set key\n  if (state.key !== null && (result !== null || present === true))\n    input.leaveKey(prevKey, state.key, result);\n  else if (prevKey !== null)\n    input.exitKey(prevKey);\n\n  return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n  const state = this._baseState;\n\n  if (tag === 'seq' || tag === 'set')\n    return null;\n  if (tag === 'seqof' || tag === 'setof')\n    return this._decodeList(input, tag, state.args[0], options);\n  else if (/str$/.test(tag))\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'objid' && state.args)\n    return this._decodeObjid(input, state.args[0], state.args[1], options);\n  else if (tag === 'objid')\n    return this._decodeObjid(input, null, null, options);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._decodeTime(input, tag, options);\n  else if (tag === 'null_')\n    return this._decodeNull(input, options);\n  else if (tag === 'bool')\n    return this._decodeBool(input, options);\n  else if (tag === 'objDesc')\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'int' || tag === 'enum')\n    return this._decodeInt(input, state.args && state.args[0], options);\n\n  if (state.use !== null) {\n    return this._getUse(state.use, input._reporterState.obj)\n      ._decode(input, options);\n  } else {\n    return input.error('unknown tag: ' + tag);\n  }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n  const state = this._baseState;\n  // Create altered use decoder if implicit is set\n  state.useDecoder = this._use(entity, obj);\n  assert(state.useDecoder._baseState.parent === null);\n  state.useDecoder = state.useDecoder._baseState.children[0];\n  if (state.implicit !== state.useDecoder._baseState.implicit) {\n    state.useDecoder = state.useDecoder.clone();\n    state.useDecoder._baseState.implicit = state.implicit;\n  }\n  return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n  const state = this._baseState;\n  let result = null;\n  let match = false;\n\n  Object.keys(state.choice).some(function(key) {\n    const save = input.save();\n    const node = state.choice[key];\n    try {\n      const value = node._decode(input, options);\n      if (input.isError(value))\n        return false;\n\n      result = { type: key, value: value };\n      match = true;\n    } catch (e) {\n      input.restore(save);\n      return false;\n    }\n    return true;\n  }, this);\n\n  if (!match)\n    return input.error('Choice not matched');\n\n  return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n  return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n  const state = this._baseState;\n  if (state['default'] !== null && state['default'] === data)\n    return;\n\n  const result = this._encodeValue(data, reporter, parent);\n  if (result === undefined)\n    return;\n\n  if (this._skipDefault(result, reporter, parent))\n    return;\n\n  return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n  const state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return state.children[0]._encode(data, reporter || new Reporter());\n\n  let result = null;\n\n  // Set reporter to share it with a child class\n  this.reporter = reporter;\n\n  // Check if data is there\n  if (state.optional && data === undefined) {\n    if (state['default'] !== null)\n      data = state['default'];\n    else\n      return;\n  }\n\n  // Encode children first\n  let content = null;\n  let primitive = false;\n  if (state.any) {\n    // Anything that was given is translated to buffer\n    result = this._createEncoderBuffer(data);\n  } else if (state.choice) {\n    result = this._encodeChoice(data, reporter);\n  } else if (state.contains) {\n    content = this._getUse(state.contains, parent)._encode(data, reporter);\n    primitive = true;\n  } else if (state.children) {\n    content = state.children.map(function(child) {\n      if (child._baseState.tag === 'null_')\n        return child._encode(null, reporter, data);\n\n      if (child._baseState.key === null)\n        return reporter.error('Child should have a key');\n      const prevKey = reporter.enterKey(child._baseState.key);\n\n      if (typeof data !== 'object')\n        return reporter.error('Child expected, but input is not object');\n\n      const res = child._encode(data[child._baseState.key], reporter, data);\n      reporter.leaveKey(prevKey);\n\n      return res;\n    }, this).filter(function(child) {\n      return child;\n    });\n    content = this._createEncoderBuffer(content);\n  } else {\n    if (state.tag === 'seqof' || state.tag === 'setof') {\n      // TODO(indutny): this should be thrown on DSL level\n      if (!(state.args && state.args.length === 1))\n        return reporter.error('Too many args for : ' + state.tag);\n\n      if (!Array.isArray(data))\n        return reporter.error('seqof/setof, but data is not Array');\n\n      const child = this.clone();\n      child._baseState.implicit = null;\n      content = this._createEncoderBuffer(data.map(function(item) {\n        const state = this._baseState;\n\n        return this._getUse(state.args[0], data)._encode(item, reporter);\n      }, child));\n    } else if (state.use !== null) {\n      result = this._getUse(state.use, parent)._encode(data, reporter);\n    } else {\n      content = this._encodePrimitive(state.tag, data);\n      primitive = true;\n    }\n  }\n\n  // Encode data itself\n  if (!state.any && state.choice === null) {\n    const tag = state.implicit !== null ? state.implicit : state.tag;\n    const cls = state.implicit === null ? 'universal' : 'context';\n\n    if (tag === null) {\n      if (state.use === null)\n        reporter.error('Tag could be omitted only for .use()');\n    } else {\n      if (state.use === null)\n        result = this._encodeComposite(tag, primitive, cls, content);\n    }\n  }\n\n  // Wrap in explicit\n  if (state.explicit !== null)\n    result = this._encodeComposite(state.explicit, false, 'context', result);\n\n  return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n  const state = this._baseState;\n\n  const node = state.choice[data.type];\n  if (!node) {\n    assert(\n      false,\n      data.type + ' not found in ' +\n            JSON.stringify(Object.keys(state.choice)));\n  }\n  return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n  const state = this._baseState;\n\n  if (/str$/.test(tag))\n    return this._encodeStr(data, tag);\n  else if (tag === 'objid' && state.args)\n    return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n  else if (tag === 'objid')\n    return this._encodeObjid(data, null, null);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._encodeTime(data, tag);\n  else if (tag === 'null_')\n    return this._encodeNull();\n  else if (tag === 'int' || tag === 'enum')\n    return this._encodeInt(data, state.args && state.reverseArgs[0]);\n  else if (tag === 'bool')\n    return this._encodeBool(data);\n  else if (tag === 'objDesc')\n    return this._encodeStr(data, tag);\n  else\n    throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n  return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n  return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n  this._reporterState = {\n    obj: null,\n    path: [],\n    options: options || {},\n    errors: []\n  };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n  return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n  const state = this._reporterState;\n\n  return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n  const state = this._reporterState;\n\n  state.obj = data.obj;\n  state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n  return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n  const state = this._reporterState;\n\n  state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n  const state = this._reporterState;\n\n  this.exitKey(index);\n  if (state.obj !== null)\n    state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n  return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n  const state = this._reporterState;\n\n  const prev = state.obj;\n  state.obj = {};\n  return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n  const state = this._reporterState;\n\n  const now = state.obj;\n  state.obj = prev;\n  return now;\n};\n\nReporter.prototype.error = function error(msg) {\n  let err;\n  const state = this._reporterState;\n\n  const inherited = msg instanceof ReporterError;\n  if (inherited) {\n    err = msg;\n  } else {\n    err = new ReporterError(state.path.map(function(elem) {\n      return '[' + JSON.stringify(elem) + ']';\n    }).join(''), msg.message || msg, msg.stack);\n  }\n\n  if (!state.options.partial)\n    throw err;\n\n  if (!inherited)\n    state.errors.push(err);\n\n  return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n  const state = this._reporterState;\n  if (!state.options.partial)\n    return result;\n\n  return {\n    result: this.isError(result) ? null : result,\n    errors: state.errors\n  };\n};\n\nfunction ReporterError(path, msg) {\n  this.path = path;\n  this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n  this.message = msg + ' at: ' + (this.path || '(shallow)');\n  if (Error.captureStackTrace)\n    Error.captureStackTrace(this, ReporterError);\n\n  if (!this.stack) {\n    try {\n      // IE only adds stack when thrown\n      throw new Error(this.message);\n    } catch (e) {\n      this.stack = e.stack;\n    }\n  }\n  return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n  const res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    const value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n}\n\nexports.tagClass = {\n  0: 'universal',\n  1: 'application',\n  2: 'context',\n  3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n  0x00: 'end',\n  0x01: 'bool',\n  0x02: 'int',\n  0x03: 'bitstr',\n  0x04: 'octstr',\n  0x05: 'null_',\n  0x06: 'objid',\n  0x07: 'objDesc',\n  0x08: 'external',\n  0x09: 'real',\n  0x0a: 'enum',\n  0x0b: 'embed',\n  0x0c: 'utf8str',\n  0x0d: 'relativeOid',\n  0x10: 'seq',\n  0x11: 'set',\n  0x12: 'numstr',\n  0x13: 'printstr',\n  0x14: 't61str',\n  0x15: 'videostr',\n  0x16: 'ia5str',\n  0x17: 'utctime',\n  0x18: 'gentime',\n  0x19: 'graphstr',\n  0x1a: 'iso646str',\n  0x1b: 'genstr',\n  0x1c: 'unistr',\n  0x1d: 'charstr',\n  0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","import{c as createAnimation}from\"./animation-822d986b.js\";import{g as getIonPageElement}from\"./index-a7711c1e.js\";import\"./helpers-1457892a.js\";import\"./index-7a8b7a1c.js\";var DURATION=540;var getClonedElement=function(e){return document.querySelector(e+\".ion-cloned-element\")};var shadow=function(e){return e.shadowRoot||e};var getLargeTitle=function(e){var t=e.tagName===\"ION-TABS\"?e:e.querySelector(\"ion-tabs\");var a=\"ion-content ion-header:not(.header-collapse-condense-inactive) ion-title.title-large\";if(t!=null){var r=t.querySelector(\"ion-tab:not(.tab-hidden), .ion-page:not(.ion-page-hidden)\");return r!=null?r.querySelector(a):null}return e.querySelector(a)};var getBackButton=function(e,t){var a=e.tagName===\"ION-TABS\"?e:e.querySelector(\"ion-tabs\");var r=[];if(a!=null){var o=a.querySelector(\"ion-tab:not(.tab-hidden), .ion-page:not(.ion-page-hidden)\");if(o!=null){r=o.querySelectorAll(\"ion-buttons\")}}else{r=e.querySelectorAll(\"ion-buttons\")}for(var n=0,i=r;n<i.length;n++){var l=i[n];var s=l.closest(\"ion-header\");var c=s&&!s.classList.contains(\"header-collapse-condense-inactive\");var f=l.querySelector(\"ion-back-button\");var d=l.classList.contains(\"buttons-collapse\");var m=l.slot===\"start\"||l.slot===\"\";if(f!==null&&m&&(d&&c&&t||!d)){return f}}return null};var createLargeTitleTransition=function(e,t,a,r,o){var n=getBackButton(r,a);var i=getLargeTitle(o);var l=getLargeTitle(r);var s=getBackButton(o,a);var c=n!==null&&i!==null&&!a;var f=l!==null&&s!==null&&a;if(c){var d=i.getBoundingClientRect();var m=n.getBoundingClientRect();animateLargeTitle(e,t,a,i,d,m);animateBackButton(e,t,a,n,d,m)}else if(f){var v=l.getBoundingClientRect();var p=s.getBoundingClientRect();animateLargeTitle(e,t,a,l,v,p);animateBackButton(e,t,a,s,v,p)}return{forward:c,backward:f}};var animateBackButton=function(e,t,a,r,o,n){var i=t?\"calc(100% - \"+(n.right+4)+\"px)\":n.left-4+\"px\";var l=t?\"7px\":\"-7px\";var s=t?\"-4px\":\"4px\";var c=t?\"-4px\":\"4px\";var f=t?\"right\":\"left\";var d=t?\"left\":\"right\";var m=[{offset:0,opacity:0,transform:\"translate3d(\"+l+\", \"+(o.top-40)+\"px, 0) scale(2.1)\"},{offset:1,opacity:1,transform:\"translate3d(\"+s+\", \"+(n.top-46)+\"px, 0) scale(1)\"}];var v=[{offset:0,opacity:1,transform:\"translate3d(\"+s+\", \"+(n.top-46)+\"px, 0) scale(1)\"},{offset:.6,opacity:0},{offset:1,opacity:0,transform:\"translate3d(\"+l+\", \"+(o.top-40)+\"px, 0) scale(2.1)\"}];var p=a?v:m;var y=[{offset:0,opacity:0,transform:\"translate3d(\"+c+\", \"+(n.top-41)+\"px, 0) scale(0.6)\"},{offset:1,opacity:1,transform:\"translate3d(\"+c+\", \"+(n.top-46)+\"px, 0) scale(1)\"}];var u=[{offset:0,opacity:1,transform:\"translate3d(\"+c+\", \"+(n.top-46)+\"px, 0) scale(1)\"},{offset:.2,opacity:0,transform:\"translate3d(\"+c+\", \"+(n.top-41)+\"px, 0) scale(0.6)\"},{offset:1,opacity:0,transform:\"translate3d(\"+c+\", \"+(n.top-41)+\"px, 0) scale(0.6)\"}];var g=a?u:y;var b=createAnimation();var A=createAnimation();var S=getClonedElement(\"ion-back-button\");var T=shadow(S).querySelector(\".button-text\");var h=shadow(S).querySelector(\"ion-icon\");S.text=r.text;S.mode=r.mode;S.icon=r.icon;S.color=r.color;S.disabled=r.disabled;S.style.setProperty(\"display\",\"block\");S.style.setProperty(\"position\",\"fixed\");A.addElement(h);b.addElement(T);b.beforeStyles({\"transform-origin\":f+\" center\"}).beforeAddWrite((function(){r.style.setProperty(\"display\",\"none\");S.style.setProperty(f,i)})).afterAddWrite((function(){r.style.setProperty(\"display\",\"\");S.style.setProperty(\"display\",\"none\");S.style.removeProperty(f)})).keyframes(p);A.beforeStyles({\"transform-origin\":d+\" center\"}).keyframes(g);e.addAnimation([b,A])};var animateLargeTitle=function(e,t,a,r,o,n){var i;var l=t?\"calc(100% - \"+o.right+\"px)\":o.left+\"px\";var s=t?\"-18px\":\"18px\";var c=t?\"right\":\"left\";var f=[{offset:0,opacity:0,transform:\"translate3d(\"+s+\", \"+(n.top-4)+\"px, 0) scale(0.49)\"},{offset:.1,opacity:0},{offset:1,opacity:1,transform:\"translate3d(0, \"+(o.top-2)+\"px, 0) scale(1)\"}];var d=[{offset:0,opacity:.99,transform:\"translate3d(0, \"+(o.top-2)+\"px, 0) scale(1)\"},{offset:.6,opacity:0},{offset:1,opacity:0,transform:\"translate3d(\"+s+\", \"+(n.top-4)+\"px, 0) scale(0.5)\"}];var m=a?f:d;var v=getClonedElement(\"ion-title\");var p=createAnimation();v.innerText=r.innerText;v.size=r.size;v.color=r.color;p.addElement(v);p.beforeStyles((i={\"transform-origin\":c+\" center\",height:\"46px\",display:\"\",position:\"relative\"},i[c]=l,i)).beforeAddWrite((function(){r.style.setProperty(\"display\",\"none\")})).afterAddWrite((function(){r.style.setProperty(\"display\",\"\");v.style.setProperty(\"display\",\"none\")})).keyframes(m);e.addAnimation(p)};var iosTransitionAnimation=function(e,t){try{var a=\"cubic-bezier(0.32,0.72,0,1)\";var r=\"opacity\";var o=\"transform\";var n=\"0%\";var i=.8;var l=e.ownerDocument.dir===\"rtl\";var s=l?\"-99.5%\":\"99.5%\";var c=l?\"33%\":\"-33%\";var f=t.enteringEl;var d=t.leavingEl;var m=t.direction===\"back\";var v=f.querySelector(\":scope > ion-content\");var p=f.querySelectorAll(\":scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *\");var y=f.querySelectorAll(\":scope > ion-header > ion-toolbar\");var u=createAnimation();var g=createAnimation();u.addElement(f).duration(t.duration||DURATION).easing(t.easing||a).fill(\"both\").beforeRemoveClass(\"ion-page-invisible\");if(d&&e){var b=createAnimation();b.addElement(e);u.addAnimation(b)}if(!v&&y.length===0&&p.length===0){g.addElement(f.querySelector(\":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs\"))}else{g.addElement(v);g.addElement(p)}u.addAnimation(g);if(m){g.beforeClearStyles([r]).fromTo(\"transform\",\"translateX(\"+c+\")\",\"translateX(\"+n+\")\").fromTo(r,i,1)}else{g.beforeClearStyles([r]).fromTo(\"transform\",\"translateX(\"+s+\")\",\"translateX(\"+n+\")\")}if(v){var A=shadow(v).querySelector(\".transition-effect\");if(A){var S=A.querySelector(\".transition-cover\");var T=A.querySelector(\".transition-shadow\");var h=createAnimation();var x=createAnimation();var E=createAnimation();h.addElement(A).beforeStyles({opacity:\"1\",display:\"block\"}).afterStyles({opacity:\"\",display:\"\"});x.addElement(S).beforeClearStyles([r]).fromTo(r,0,.1);E.addElement(T).beforeClearStyles([r]).fromTo(r,.03,.7);h.addAnimation([x,E]);g.addAnimation([h])}}var q=f.querySelector(\"ion-header.header-collapse-condense\");var X=createLargeTitleTransition(u,l,m,f,d),C=X.forward,k=X.backward;y.forEach((function(e){var t=createAnimation();t.addElement(e);u.addAnimation(t);var a=createAnimation();a.addElement(e.querySelector(\"ion-title\"));var o=createAnimation();var i=Array.from(e.querySelectorAll(\"ion-buttons,[menuToggle]\"));var f=e.closest(\"ion-header\");var d=f&&f.classList.contains(\"header-collapse-condense-inactive\");var v;if(m){v=i.filter((function(e){var t=e.classList.contains(\"buttons-collapse\");return t&&!d||!t}))}else{v=i.filter((function(e){return!e.classList.contains(\"buttons-collapse\")}))}o.addElement(v);var p=createAnimation();p.addElement(e.querySelectorAll(\":scope > *:not(ion-title):not(ion-buttons):not([menuToggle])\"));var y=createAnimation();y.addElement(shadow(e).querySelector(\".toolbar-background\"));var g=createAnimation();var b=e.querySelector(\"ion-back-button\");if(b){g.addElement(b)}t.addAnimation([a,o,p,y,g]);o.fromTo(r,.01,1);p.fromTo(r,.01,1);if(m){if(!d){a.fromTo(\"transform\",\"translateX(\"+c+\")\",\"translateX(\"+n+\")\").fromTo(r,.01,1)}p.fromTo(\"transform\",\"translateX(\"+c+\")\",\"translateX(\"+n+\")\");g.fromTo(r,.01,1)}else{if(!q){a.fromTo(\"transform\",\"translateX(\"+s+\")\",\"translateX(\"+n+\")\").fromTo(r,.01,1)}p.fromTo(\"transform\",\"translateX(\"+s+\")\",\"translateX(\"+n+\")\");y.beforeClearStyles([r,\"transform\"]);var A=f===null||f===void 0?void 0:f.translucent;if(!A){y.fromTo(r,.01,\"var(--opacity)\")}else{y.fromTo(\"transform\",l?\"translateX(-100%)\":\"translateX(100%)\",\"translateX(0px)\")}if(!C){g.fromTo(r,.01,1)}if(b&&!C){var S=createAnimation();S.addElement(shadow(b).querySelector(\".button-text\")).fromTo(\"transform\",l?\"translateX(-100px)\":\"translateX(100px)\",\"translateX(0px)\");t.addAnimation(S)}}}));if(d){var w=createAnimation();var B=d.querySelector(\":scope > ion-content\");var L=d.querySelectorAll(\":scope > ion-header > ion-toolbar\");var P=d.querySelectorAll(\":scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *\");if(!B&&L.length===0&&P.length===0){w.addElement(d.querySelector(\":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs\"))}else{w.addElement(B);w.addElement(P)}u.addAnimation(w);if(m){w.beforeClearStyles([r]).fromTo(\"transform\",\"translateX(\"+n+\")\",l?\"translateX(-100%)\":\"translateX(100%)\");var R=getIonPageElement(d);u.afterAddWrite((function(){if(u.getDirection()===\"normal\"){R.style.setProperty(\"display\",\"none\")}}))}else{w.fromTo(\"transform\",\"translateX(\"+n+\")\",\"translateX(\"+c+\")\").fromTo(r,1,i)}if(B){var I=shadow(B).querySelector(\".transition-effect\");if(I){var N=I.querySelector(\".transition-cover\");var W=I.querySelector(\".transition-shadow\");var j=createAnimation();var D=createAnimation();var O=createAnimation();j.addElement(I).beforeStyles({opacity:\"1\",display:\"block\"}).afterStyles({opacity:\"\",display:\"\"});D.addElement(N).beforeClearStyles([r]).fromTo(r,.1,0);O.addElement(W).beforeClearStyles([r]).fromTo(r,.7,.03);j.addAnimation([D,O]);w.addAnimation([j])}}L.forEach((function(e){var t=createAnimation();t.addElement(e);var a=createAnimation();a.addElement(e.querySelector(\"ion-title\"));var i=createAnimation();var s=e.querySelectorAll(\"ion-buttons,[menuToggle]\");var f=e.closest(\"ion-header\");var d=f&&f.classList.contains(\"header-collapse-condense-inactive\");var v=Array.from(s).filter((function(e){var t=e.classList.contains(\"buttons-collapse\");return t&&!d||!t}));i.addElement(v);var p=createAnimation();var y=e.querySelectorAll(\":scope > *:not(ion-title):not(ion-buttons):not([menuToggle])\");if(y.length>0){p.addElement(y)}var g=createAnimation();g.addElement(shadow(e).querySelector(\".toolbar-background\"));var b=createAnimation();var A=e.querySelector(\"ion-back-button\");if(A){b.addElement(A)}t.addAnimation([a,i,p,b,g]);u.addAnimation(t);b.fromTo(r,.99,0);i.fromTo(r,.99,0);p.fromTo(r,.99,0);if(m){if(!d){a.fromTo(\"transform\",\"translateX(\"+n+\")\",l?\"translateX(-100%)\":\"translateX(100%)\").fromTo(r,.99,0)}p.fromTo(\"transform\",\"translateX(\"+n+\")\",l?\"translateX(-100%)\":\"translateX(100%)\");g.beforeClearStyles([r,\"transform\"]);var S=f===null||f===void 0?void 0:f.translucent;if(!S){g.fromTo(r,\"var(--opacity)\",0)}else{g.fromTo(\"transform\",\"translateX(0px)\",l?\"translateX(-100%)\":\"translateX(100%)\")}if(A&&!k){var T=createAnimation();T.addElement(shadow(A).querySelector(\".button-text\")).fromTo(\"transform\",\"translateX(\"+n+\")\",\"translateX(\"+((l?-124:124)+\"px\")+\")\");t.addAnimation(T)}}else{if(!d){a.fromTo(\"transform\",\"translateX(\"+n+\")\",\"translateX(\"+c+\")\").fromTo(r,.99,0).afterClearStyles([o,r])}p.fromTo(\"transform\",\"translateX(\"+n+\")\",\"translateX(\"+c+\")\").afterClearStyles([o,r]);b.afterClearStyles([r]);a.afterClearStyles([r]);i.afterClearStyles([r])}}))}return u}catch(z){throw z}};export{iosTransitionAnimation,shadow};","import{c as createAnimation}from\"./animation-822d986b.js\";import{g as getIonPageElement}from\"./index-a7711c1e.js\";import\"./helpers-1457892a.js\";import\"./index-7a8b7a1c.js\";var mdTransitionAnimation=function(e,a){var n=\"40px\";var i=\"0px\";var t=a.direction===\"back\";var r=a.enteringEl;var o=a.leavingEl;var m=getIonPageElement(r);var s=m.querySelector(\"ion-toolbar\");var l=createAnimation();l.addElement(m).fill(\"both\").beforeRemoveClass(\"ion-page-invisible\");if(t){l.duration(a.duration||200).easing(\"cubic-bezier(0.47,0,0.745,0.715)\")}else{l.duration(a.duration||280).easing(\"cubic-bezier(0.36,0.66,0.04,1)\").fromTo(\"transform\",\"translateY(\"+n+\")\",\"translateY(\"+i+\")\").fromTo(\"opacity\",.01,1)}if(s){var d=createAnimation();d.addElement(s);l.addAnimation(d)}if(o&&t){l.duration(a.duration||200).easing(\"cubic-bezier(0.47,0,0.745,0.715)\");var c=createAnimation();c.addElement(getIonPageElement(o)).onFinish((function(e){if(e===1&&c.elements.length>0){c.elements[0].style.setProperty(\"display\",\"none\")}})).fromTo(\"transform\",\"translateY(\"+i+\")\",\"translateY(\"+n+\")\").fromTo(\"opacity\",1,0);l.addAnimation(c)}return l};export{mdTransitionAnimation};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TRANSITIONS = exports.SHOW_CONFIRM = exports.REMOVE_TOASTR = exports.REMOVE_BY_TYPE = exports.HIDE_CONFIRM = exports.CLEAN_TOASTR = exports.ADD_TOASTR = void 0;\nvar ADD_TOASTR = '@ReduxToastr/toastr/ADD';\nexports.ADD_TOASTR = ADD_TOASTR;\nvar REMOVE_TOASTR = '@ReduxToastr/toastr/REMOVE';\nexports.REMOVE_TOASTR = REMOVE_TOASTR;\nvar CLEAN_TOASTR = '@ReduxToastr/toastr/CLEAN';\nexports.CLEAN_TOASTR = CLEAN_TOASTR;\nvar SHOW_CONFIRM = '@ReduxToastr/confirm/SHOW';\nexports.SHOW_CONFIRM = SHOW_CONFIRM;\nvar HIDE_CONFIRM = '@ReduxToastr/confirm/HIDE';\nexports.HIDE_CONFIRM = HIDE_CONFIRM;\nvar REMOVE_BY_TYPE = '@ReduxToastr/toastr/REMOVE_BY_TYPE'; // before add a new transition - check its presence in src/styles/animations.scss\n\nexports.REMOVE_BY_TYPE = REMOVE_BY_TYPE;\nvar TRANSITIONS = {\n  \"in\": ['bounceIn', 'bounceInDown', 'fadeIn'],\n  out: ['bounceOut', 'bounceOutUp', 'fadeOut']\n};\nexports.TRANSITIONS = TRANSITIONS;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _mergeRefs = _interopRequireDefault(require(\"merge-refs\"));\n\nvar _updateInputWidth = _interopRequireWildcard(require(\"update-input-width\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable jsx-a11y/no-autofocus */\nvar isIEOrEdgeLegacy = typeof window !== 'undefined' && /(MSIE|Trident\\/|Edge\\/)/.test(window.navigator.userAgent);\nvar isFirefox = typeof window !== 'undefined' && /Firefox/.test(window.navigator.userAgent);\n\nfunction onFocus(event) {\n  var target = event.target;\n\n  if (isIEOrEdgeLegacy) {\n    requestAnimationFrame(function () {\n      return target.select();\n    });\n  } else {\n    target.select();\n  }\n}\n\nfunction updateInputWidthOnFontLoad(element) {\n  if (!document.fonts) {\n    return;\n  }\n\n  var font = (0, _updateInputWidth.getFontShorthand)(element);\n\n  if (!font) {\n    return;\n  }\n\n  var isFontLoaded = document.fonts.check(font);\n\n  if (isFontLoaded) {\n    return;\n  }\n\n  function onLoadingDone() {\n    (0, _updateInputWidth[\"default\"])(element);\n  }\n\n  document.fonts.addEventListener('loadingdone', onLoadingDone);\n}\n\nfunction getSelectionString(input) {\n  /**\n   * window.getSelection().toString() returns empty string in IE11 and Firefox,\n   * so alternatives come first.\n   */\n  if (input && 'selectionStart' in input && input.selectionStart !== null) {\n    return input.value.slice(input.selectionStart, input.selectionEnd);\n  }\n\n  if ('getSelection' in window) {\n    return window.getSelection().toString();\n  }\n\n  return null;\n}\n\nfunction makeOnKeyPress(maxLength) {\n  /**\n   * Prevents keystrokes that would not produce a number or when value after keystroke would\n   * exceed maxLength.\n   */\n  return function onKeyPress(event) {\n    if (isFirefox) {\n      // See https://github.com/wojtekmaj/react-time-picker/issues/92\n      return;\n    }\n\n    var key = event.key,\n        input = event.target;\n    var value = input.value;\n    var isNumberKey = key.length === 1 && /\\d/.test(key);\n    var selection = getSelectionString(input);\n\n    if (!isNumberKey || !(selection || value.length < maxLength)) {\n      event.preventDefault();\n    }\n  };\n}\n\nfunction Input(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      autoFocus = _ref.autoFocus,\n      className = _ref.className,\n      disabled = _ref.disabled,\n      inputRef = _ref.inputRef,\n      max = _ref.max,\n      min = _ref.min,\n      name = _ref.name,\n      nameForClass = _ref.nameForClass,\n      onChange = _ref.onChange,\n      onKeyDown = _ref.onKeyDown,\n      _onKeyUp = _ref.onKeyUp,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n      required = _ref.required,\n      showLeadingZeros = _ref.showLeadingZeros,\n      step = _ref.step,\n      value = _ref.value;\n  var hasLeadingZero = showLeadingZeros && value && value < 10 && (value === '0' || !value.toString().startsWith('0'));\n  var maxLength = max ? max.toString().length : null;\n  return [hasLeadingZero && /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n    key: \"leadingZero\",\n    className: \"\".concat(className, \"__leadingZero\")\n  }, \"0\"), /*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n    key: \"input\",\n    \"aria-label\": ariaLabel,\n    autoComplete: \"off\",\n    autoFocus: autoFocus,\n    className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(nameForClass || name), hasLeadingZero && \"\".concat(className, \"__input--hasLeadingZero\")),\n    \"data-input\": \"true\",\n    disabled: disabled,\n    inputMode: \"numeric\",\n    max: max,\n    min: min,\n    name: name,\n    onChange: onChange,\n    onFocus: onFocus,\n    onKeyDown: onKeyDown,\n    onKeyPress: makeOnKeyPress(maxLength),\n    onKeyUp: function onKeyUp(event) {\n      (0, _updateInputWidth[\"default\"])(event.target);\n\n      if (_onKeyUp) {\n        _onKeyUp(event);\n      }\n    },\n    placeholder: placeholder,\n    ref: (0, _mergeRefs[\"default\"])(_updateInputWidth[\"default\"], updateInputWidthOnFontLoad, inputRef),\n    required: required,\n    step: step,\n    type: \"number\",\n    value: value !== null ? value : ''\n  })];\n}\n\nInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  autoFocus: _propTypes[\"default\"].bool,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  inputRef: _propTypes2.isRef,\n  max: _propTypes[\"default\"].number,\n  min: _propTypes[\"default\"].number,\n  name: _propTypes[\"default\"].string,\n  nameForClass: _propTypes[\"default\"].string,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  step: _propTypes[\"default\"].number,\n  value: _propTypes[\"default\"].string\n};","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n  if (typeof string !== 'string') {\n    throw new Error('Param is not a string')\n  }\n\n  const lcStr = string.toLowerCase()\n\n  switch (lcStr) {\n    case 'l':\n    case 'low':\n      return exports.L\n\n    case 'm':\n    case 'medium':\n      return exports.M\n\n    case 'q':\n    case 'quartile':\n      return exports.Q\n\n    case 'h':\n    case 'high':\n      return exports.H\n\n    default:\n      throw new Error('Unknown EC Level: ' + string)\n  }\n}\n\nexports.isValid = function isValid (level) {\n  return level && typeof level.bit !== 'undefined' &&\n    level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n  if (exports.isValid(value)) {\n    return value\n  }\n\n  try {\n    return fromString(value)\n  } catch (e) {\n    return defaultValue\n  }\n}\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n  // Standard Redux middleware definition pattern:\n  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n  var middleware = function middleware(_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n        // If this \"action\" is really a function, call it and return the result.\n        if (typeof action === 'function') {\n          // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n          return action(dispatch, getState, extraArgument);\n        } // Otherwise, pass the action down the middleware chain as usual\n\n\n        return next(action);\n      };\n    };\n  };\n\n  return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","const ONESIGNAL_SDK_ID = 'onesignal-sdk';\nconst ONE_SIGNAL_SCRIPT_SRC = 'https://cdn.onesignal.com/sdks/OneSignalSDK.js';\nconst reactOneSignalFunctionQueue = [];\n\n// true if the script is successfully loaded from CDN.\nlet isOneSignalInitialized = false;\n// true if the script fails to load from CDN. A separate flag is necessary\n// to disambiguate between a CDN load failure and a delayed call to\n// OneSignal#init.\nlet isOneSignalScriptFailed = false;\n\nconst doesOneSignalExist = () => {\n  if (window[\"OneSignal\"]) {\n    return true;\n  }\n  return false;\n}\n\nconst handleOnLoad = (resolve: () => void, options: IInitObject) => {\n  isOneSignalInitialized = true;\n\n  // OneSignal is assumed to be loaded correctly because this method\n  // is called after the script is successfully loaded by CDN, but\n  // just in case.\n  window[\"OneSignal\"] = window[\"OneSignal\"] || []\n\n  window[\"OneSignal\"].push(() => {\n    window[\"OneSignal\"].init(options);\n  });\n\n  window[\"OneSignal\"].push(() => {\n    processQueuedOneSignalFunctions();\n    resolve();\n  });\n}\n\nconst handleOnError = (resolve: () => void) => {\n  isOneSignalScriptFailed = true;\n  // Ensure that any unresolved functions are cleared from the queue,\n  // even in the event of a CDN load failure.\n  processQueuedOneSignalFunctions();\n  resolve();\n}\n\nconst processQueuedOneSignalFunctions = () => {\n  reactOneSignalFunctionQueue.forEach(element => {\n    const { name, args, promiseResolver } = element;\n\n    if (!!promiseResolver) {\n      OneSignalReact[name](...args).then(result => {\n        promiseResolver(result);\n      });\n    } else {\n      OneSignalReact[name](...args);\n    }\n  });\n}\n\nconst init = (options: IInitObject) => new Promise<void>(resolve => {\n  if (isOneSignalInitialized) {\n    resolve();\n    return;\n  }\n\n  if (!options || !options.appId) {\n    throw new Error('You need to provide your OneSignal appId.');\n  }\n  if (!document) {\n    resolve();\n    return;\n  }\n\n  const script = document.createElement('script');\n  script.id = ONESIGNAL_SDK_ID;\n  script.src = ONE_SIGNAL_SCRIPT_SRC;\n  script.async = true;\n\n  script.onload = () => {\n    handleOnLoad(resolve, options);\n  };\n\n  // Always resolve whether or not the script is successfully initialized.\n  // This is important for users who may block cdn.onesignal.com w/ adblock.\n  script.onerror = () => {\n    handleOnError(resolve);\n  }\n\n  document.head.appendChild(script);\n});\n\ntype Action<T> = (item: T) => void;\ninterface AutoPromptOptions { force?: boolean; forceSlidedownOverNative?: boolean; slidedownPromptOptions?: IOneSignalAutoPromptOptions; }\ninterface RegisterOptions { modalPrompt?: boolean; httpPermissionRequest?: boolean; slidedown?: boolean; autoAccept?: boolean }\ninterface SetSMSOptions { identifierAuthHash?: string; }\ninterface SetEmailOptions { identifierAuthHash?: string; emailAuthHash?: string; }\ninterface TagsObject<T> { [key: string]: T; }\ninterface IOneSignalAutoPromptOptions { force?: boolean; forceSlidedownOverNative?: boolean; isInUpdateMode?: boolean; categoryOptions?: IOneSignalCategories; }\ninterface IOneSignalCategories { positiveUpdateButton: string; negativeUpdateButton: string; savingButtonText: string; errorButtonText: string; updateMessage: string; tags: IOneSignalTagCategory[]; }\ninterface IOneSignalTagCategory { tag: string; label: string; checked?: boolean; }\n\ninterface IInitObject {\n  appId: string;\n  subdomainName?: string;\n  requiresUserPrivacyConsent?: boolean;\n  promptOptions?: object;\n  welcomeNotification?: object;\n  notifyButton?: object;\n  persistNotification?: boolean;\n  webhooks?: object;\n  autoResubscribe?: boolean;\n  autoRegister?: boolean;\n  notificationClickHandlerMatch?: string;\n  notificationClickHandlerAction?: string;\n  serviceWorkerParam?: { scope: string };\n  serviceWorkerPath?: string;\n  serviceWorkerUpdaterPath?: string;\n  path?: string;\n  allowLocalhostAsSecureOrigin?: boolean;\n  [key: string]: any;\n}\n\ninterface IOneSignal {\n\tinit(options: IInitObject): Promise<void>\n\ton(event: string, listener: (eventData?: any) => void): void\n\toff(event: string, listener: (eventData?: any) => void): void\n\tonce(event: string, listener: (eventData?: any) => void): void\n\tisPushNotificationsEnabled(callback?: Action<boolean>): Promise<boolean>\n\tshowHttpPrompt(options?: AutoPromptOptions): Promise<void>\n\tregisterForPushNotifications(options?: RegisterOptions): Promise<void>\n\tsetDefaultNotificationUrl(url: string): Promise<void>\n\tsetDefaultTitle(title: string): Promise<void>\n\tgetTags(callback?: Action<any>): Promise<void>\n\tsendTag(key: string, value: any, callback?: Action<Object>): Promise<Object | null>\n\tsendTags(tags: TagsObject<any>, callback?: Action<Object>): Promise<Object | null>\n\tdeleteTag(tag: string): Promise<Array<string>>\n\tdeleteTags(tags: Array<string>, callback?: Action<Array<string>>): Promise<Array<string>>\n\taddListenerForNotificationOpened(callback?: Action<Notification>): Promise<void>\n\tsetSubscription(newSubscription: boolean): Promise<void>\n\tshowHttpPermissionRequest(options?: AutoPromptOptions): Promise<any>\n\tshowNativePrompt(): Promise<void>\n\tshowSlidedownPrompt(options?: AutoPromptOptions): Promise<void>\n\tshowCategorySlidedown(options?: AutoPromptOptions): Promise<void>\n\tshowSmsSlidedown(options?: AutoPromptOptions): Promise<void>\n\tshowEmailSlidedown(options?: AutoPromptOptions): Promise<void>\n\tshowSmsAndEmailSlidedown(options?: AutoPromptOptions): Promise<void>\n\tgetNotificationPermission(onComplete?: Action<NotificationPermission>): Promise<NotificationPermission>\n\tgetUserId(callback?: Action<string | undefined | null>): Promise<string | undefined | null>\n\tgetSubscription(callback?: Action<boolean>): Promise<boolean>\n\tsetEmail(email: string, options?: SetEmailOptions): Promise<string|null>\n\tsetSMSNumber(smsNumber: string, options?: SetSMSOptions): Promise<string | null>\n\tlogoutEmail(): Promise<void>\n\tlogoutSMS(): Promise<void>\n\tsetExternalUserId(externalUserId: string | undefined | null, authHash?: string): Promise<void>\n\tremoveExternalUserId(): Promise<void>\n\tgetExternalUserId(): Promise<string | undefined | null>\n\tprovideUserConsent(consent: boolean): Promise<void>\n\tgetEmailId(callback?: Action<string | undefined>): Promise<string | null | undefined>\n\tgetSMSId(callback?: Action<string | undefined>): Promise<string | null | undefined>\n\tsendOutcome(outcomeName: string, outcomeWeight?: number | undefined): Promise<void>\n\t[index: string]: Function;\n}\n\n\n\n  function on(event: string, listener: (eventData?: any) => void): void {\n    if (!doesOneSignalExist()) {\n      reactOneSignalFunctionQueue.push({\n        name: 'on',\n        args: arguments,\n      });\n      return;\n    }\n\n    window[\"OneSignal\"].push(() => {\n      window[\"OneSignal\"].on(event, listener)\n    });\n  }\n\n  function off(event: string, listener: (eventData?: any) => void): void {\n    if (!doesOneSignalExist()) {\n      reactOneSignalFunctionQueue.push({\n        name: 'off',\n        args: arguments,\n      });\n      return;\n    }\n\n    window[\"OneSignal\"].push(() => {\n      window[\"OneSignal\"].off(event, listener)\n    });\n  }\n\n  function once(event: string, listener: (eventData?: any) => void): void {\n    if (!doesOneSignalExist()) {\n      reactOneSignalFunctionQueue.push({\n        name: 'once',\n        args: arguments,\n      });\n      return;\n    }\n\n    window[\"OneSignal\"].push(() => {\n      window[\"OneSignal\"].once(event, listener)\n    });\n  }\n\n  function isPushNotificationsEnabled(callback?: Action<boolean>): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'isPushNotificationsEnabled',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].isPushNotificationsEnabled(callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showHttpPrompt(options?: AutoPromptOptions): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showHttpPrompt',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showHttpPrompt(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function registerForPushNotifications(options?: RegisterOptions): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'registerForPushNotifications',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].registerForPushNotifications(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function setDefaultNotificationUrl(url: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'setDefaultNotificationUrl',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].setDefaultNotificationUrl(url)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function setDefaultTitle(title: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'setDefaultTitle',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].setDefaultTitle(title)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function getTags(callback?: Action<any>): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'getTags',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].getTags(callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function sendTag(key: string, value: any, callback?: Action<Object>): Promise<Object | null> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'sendTag',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].sendTag(key, value, callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function sendTags(tags: TagsObject<any>, callback?: Action<Object>): Promise<Object | null> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'sendTags',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].sendTags(tags, callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function deleteTag(tag: string): Promise<Array<string>> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'deleteTag',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].deleteTag(tag)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function deleteTags(tags: Array<string>, callback?: Action<Array<string>>): Promise<Array<string>> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'deleteTags',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].deleteTags(tags, callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function addListenerForNotificationOpened(callback?: Action<Notification>): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'addListenerForNotificationOpened',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].addListenerForNotificationOpened(callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function setSubscription(newSubscription: boolean): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'setSubscription',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].setSubscription(newSubscription)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showHttpPermissionRequest(options?: AutoPromptOptions): Promise<any> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showHttpPermissionRequest',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showHttpPermissionRequest(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showNativePrompt(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showNativePrompt',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showNativePrompt()\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showSlidedownPrompt(options?: AutoPromptOptions): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showSlidedownPrompt',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showSlidedownPrompt(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showCategorySlidedown(options?: AutoPromptOptions): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showCategorySlidedown',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showCategorySlidedown(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showSmsSlidedown(options?: AutoPromptOptions): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showSmsSlidedown',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showSmsSlidedown(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showEmailSlidedown(options?: AutoPromptOptions): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showEmailSlidedown',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showEmailSlidedown(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function showSmsAndEmailSlidedown(options?: AutoPromptOptions): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'showSmsAndEmailSlidedown',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].showSmsAndEmailSlidedown(options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function getNotificationPermission(onComplete?: Action<NotificationPermission>): Promise<NotificationPermission> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'getNotificationPermission',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].getNotificationPermission(onComplete)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function getUserId(callback?: Action<string | undefined | null>): Promise<string | undefined | null> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'getUserId',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].getUserId(callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function getSubscription(callback?: Action<boolean>): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'getSubscription',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].getSubscription(callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function setEmail(email: string, options?: SetEmailOptions): Promise<string|null> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'setEmail',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].setEmail(email, options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function setSMSNumber(smsNumber: string, options?: SetSMSOptions): Promise<string | null> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'setSMSNumber',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].setSMSNumber(smsNumber, options)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function logoutEmail(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'logoutEmail',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].logoutEmail()\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function logoutSMS(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'logoutSMS',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].logoutSMS()\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function setExternalUserId(externalUserId: string | undefined | null, authHash?: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'setExternalUserId',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].setExternalUserId(externalUserId, authHash)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function removeExternalUserId(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'removeExternalUserId',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].removeExternalUserId()\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function getExternalUserId(): Promise<string | undefined | null> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'getExternalUserId',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].getExternalUserId()\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function provideUserConsent(consent: boolean): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'provideUserConsent',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].provideUserConsent(consent)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function getEmailId(callback?: Action<string | undefined>): Promise<string | null | undefined> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'getEmailId',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].getEmailId(callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function getSMSId(callback?: Action<string | undefined>): Promise<string | null | undefined> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'getSMSId',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].getSMSId(callback)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\n  function sendOutcome(outcomeName: string, outcomeWeight?: number | undefined): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (isOneSignalScriptFailed) {\n        resolve();\n        return;\n      }\n\n      if (!doesOneSignalExist()) {\n        reactOneSignalFunctionQueue.push({\n          name: 'sendOutcome',\n          args: arguments,\n          promiseResolver: resolve,\n        });\n        return;\n      }\n\n      try {\n        window[\"OneSignal\"].push(() => {\n          window[\"OneSignal\"].sendOutcome(outcomeName, outcomeWeight)\n            .then((value: any) => resolve(value))\n            .catch((error: any) => reject(error));\n        });\n      } catch (error) {\n        reject(error);\n      }\n    });\n  }\n\nconst OneSignalReact: IOneSignal = {\n\tinit,\n\ton,\n\toff,\n\tonce,\n\tisPushNotificationsEnabled,\n\tshowHttpPrompt,\n\tregisterForPushNotifications,\n\tsetDefaultNotificationUrl,\n\tsetDefaultTitle,\n\tgetTags,\n\tsendTag,\n\tsendTags,\n\tdeleteTag,\n\tdeleteTags,\n\taddListenerForNotificationOpened,\n\tsetSubscription,\n\tshowHttpPermissionRequest,\n\tshowNativePrompt,\n\tshowSlidedownPrompt,\n\tshowCategorySlidedown,\n\tshowSmsSlidedown,\n\tshowEmailSlidedown,\n\tshowSmsAndEmailSlidedown,\n\tgetNotificationPermission,\n\tgetUserId,\n\tgetSubscription,\n\tsetEmail,\n\tsetSMSNumber,\n\tlogoutEmail,\n\tlogoutSMS,\n\tsetExternalUserId,\n\tremoveExternalUserId,\n\tgetExternalUserId,\n\tprovideUserConsent,\n\tgetEmailId,\n\tgetSMSId,\n\tsendOutcome,\n};\nexport default OneSignalReact\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = res[2] || defaultDelimiter\n    var pattern = capture || group\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = memoize;\n","import{jsx as n,jsxs as e,Fragment as r}from\"react/jsx-runtime\";import t,{css as o}from\"styled-components\";import{useState as i,useCallback as a,useEffect as l,useRef as s}from\"react\";\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***************************************************************************** */var p=function(){return p=Object.assign||function(n){for(var e,r=1,t=arguments.length;r<t;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n},p.apply(this,arguments)};function d(n,e){return Object.defineProperty?Object.defineProperty(n,\"raw\",{value:e}):n.raw=e,n}var c,u,f,v,h,x=o(c||(c=d([\"\\n  display: flex;\\n  align-items: center;\\n  min-width: 322px;\\n  max-width: 508px;\\n  height: 48px;\\n  border: dashed 2px \",\";\\n  padding: 8px 16px 8px 8px;\\n  border-radius: 5px;\\n  cursor: pointer;\\n  flex-grow: 0;\\n\\n  &.is-disabled {\\n    border: dashed 2px \",\";\\n    cursor: no-drop;\\n    svg {\\n      fill: \",\";\\n      color: \",\";\\n      path {\\n        fill: \",\";\\n        color: \",\";\\n      }\\n    }\\n  }\\n\"],[\"\\n  display: flex;\\n  align-items: center;\\n  min-width: 322px;\\n  max-width: 508px;\\n  height: 48px;\\n  border: dashed 2px \",\";\\n  padding: 8px 16px 8px 8px;\\n  border-radius: 5px;\\n  cursor: pointer;\\n  flex-grow: 0;\\n\\n  &.is-disabled {\\n    border: dashed 2px \",\";\\n    cursor: no-drop;\\n    svg {\\n      fill: \",\";\\n      color: \",\";\\n      path {\\n        fill: \",\";\\n        color: \",\";\\n      }\\n    }\\n  }\\n\"])),\"#0658c2\",\"#666\",\"#666\",\"#666\",\"#666\",\"#666\"),g=t.label(u||(u=d([\"\\n  position: relative;\\n  \",\";\\n  &:focus-within {\\n    outline: 2px solid black;\\n  }\\n  & > input {\\n    display: block;\\n    opacity: 0;\\n    position: absolute;\\n    pointer-events: none;\\n  }\\n\"],[\"\\n  position: relative;\\n  \",\";\\n  &:focus-within {\\n    outline: 2px solid black;\\n  }\\n  & > input {\\n    display: block;\\n    opacity: 0;\\n    position: absolute;\\n    pointer-events: none;\\n  }\\n\"])),(function(n){return n.overRide?\"\":x})),m=t.div(f||(f=d([\"\\n  border: dashed 2px \",\";\\n  border-radius: 5px;\\n  background-color: \",\";\\n  opacity: 0.5;\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  left: 0;\\n  bottom: 0;\\n  & > span {\\n    position: absolute;\\n    top: 50%;\\n    left: 50%;\\n    transform: translateX(-50%) translateY(-50%);\\n  }\\n\"],[\"\\n  border: dashed 2px \",\";\\n  border-radius: 5px;\\n  background-color: \",\";\\n  opacity: 0.5;\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  left: 0;\\n  bottom: 0;\\n  & > span {\\n    position: absolute;\\n    top: 50%;\\n    left: 50%;\\n    transform: translateX(-50%) translateY(-50%);\\n  }\\n\"])),\"#666\",\"#999\"),b=t.div(v||(v=d([\"\\n  display: flex;\\n  justify-content: space-between;\\n  flex-grow: 1;\\n  & > span {\\n    font-size: 12px;\\n    color: \",\";\\n  }\\n  .file-types {\\n    overflow: hidden;\\n    white-space: nowrap;\\n    text-overflow: ellipsis;\\n    max-width: 100px;\\n  }\\n\"],[\"\\n  display: flex;\\n  justify-content: space-between;\\n  flex-grow: 1;\\n  & > span {\\n    font-size: 12px;\\n    color: \",\";\\n  }\\n  .file-types {\\n    overflow: hidden;\\n    white-space: nowrap;\\n    text-overflow: ellipsis;\\n    max-width: 100px;\\n  }\\n\"])),(function(n){return n.error?\"red\":\"#666\"})),w=t.span(h||(h=d([\"\\n  font-size: 14px;\\n  color: \",\";\\n  span {\\n    text-decoration: underline;\\n  }\\n\"],[\"\\n  font-size: 14px;\\n  color: \",\";\\n  span {\\n    text-decoration: underline;\\n  }\\n\"])),\"#666\"),y=function(n){return n/1e3/1e3},z=function(n){return void 0===n?\"\":n.map((function(n){return\".\".concat(n.toLowerCase())})).join(\",\")};function L(e){var r=e.types,t=e.minSize,o=e.maxSize;if(r){var i=r.toString(),a=\"\";return o&&(a+=\"size >= \".concat(o,\", \")),t&&(a+=\"size <= \".concat(t,\", \")),n(\"span\",p({title:\"\".concat(a,\"types: \").concat(i),className:\"file-types\"},{children:i}),void 0)}return null}function C(){return e(\"svg\",p({width:\"32\",height:\"32\",viewBox:\"0 0 32 32\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},{children:[n(\"path\",{d:\"M5.33317 6.66667H22.6665V16H25.3332V6.66667C25.3332 5.196 24.1372 4 22.6665 4H5.33317C3.8625 4 2.6665 5.196 2.6665 6.66667V22.6667C2.6665 24.1373 3.8625 25.3333 5.33317 25.3333H15.9998V22.6667H5.33317V6.66667Z\",fill:\"#0658C2\"},void 0),n(\"path\",{d:\"M10.6665 14.6667L6.6665 20H21.3332L15.9998 12L11.9998 17.3333L10.6665 14.6667Z\",fill:\"#0658C2\"},void 0),n(\"path\",{d:\"M25.3332 18.6667H22.6665V22.6667H18.6665V25.3333H22.6665V29.3333H25.3332V25.3333H29.3332V22.6667H25.3332V18.6667Z\",fill:\"#0658C2\"},void 0)]}),void 0)}var H=0;var k=function(t,o,i,a,l){return i?n(\"span\",{children:\"File type/size error, Hovered on types!\"},void 0):n(w,{children:a?n(\"span\",{children:\"Upload disabled\"},void 0):t||o?e(r,{children:[n(\"span\",{children:\"Uploaded Successfully!\"},void 0),\" Upload another?\"]},void 0):n(r,{children:e(r,l?{children:[n(\"span\",{children:l.split(\" \")[0]},void 0),\" \",l.substr(l.indexOf(\" \")+1)]}:{children:[n(\"span\",{children:\"Upload\"},void 0),\" or drop a file right here\"]},void 0)},void 0)},void 0)},E=function(t){var o=t.name,d=t.hoverTitle,c=t.types,u=t.handleChange,f=t.classes,v=t.children,h=t.maxSize,x=t.minSize,w=t.fileOrFiles,E=t.onSizeError,S=t.onTypeError,V=t.onSelect,D=t.onDrop,P=t.disabled,j=t.label,F=t.multiple,O=t.required,R=t.onDraggingStateChange,T=t.dropMessageStyle,M=s(null),U=s(null),Z=i(!1),q=Z[0],N=Z[1],X=i(null),Y=X[0],B=X[1],A=i(!1),G=A[0],I=A[1],J=function(n){return c&&!function(n,e){var r=n.name.split(\".\").pop();return e.map((function(n){return n.toLowerCase()})).includes(r.toLowerCase())}(n,c)?(I(!0),S&&S(\"File type is not supported\"),!1):h&&y(n.size)>h?(I(!0),E&&E(\"File size is too big\"),!1):!(x&&y(n.size)<x)||(I(!0),E&&E(\"File size is too small\"),!1)},K=function(n){var e=!1;if(n){if(n instanceof File)e=!J(n);else for(var r=0;r<n.length;r++){var t=n[r];e=!J(t)||e}return!e&&(u&&u(n),B(n),N(!0),I(!1),!0)}return!1},Q=function(n){var e=n.labelRef,r=n.inputRef,t=n.multiple,o=n.handleChanges,s=n.onDrop,p=i(!1),d=p[0],c=p[1],u=a((function(){r.current.click()}),[r]),f=a((function(n){n.preventDefault(),n.stopPropagation(),H++,n.dataTransfer.items&&0!==n.dataTransfer.items.length&&c(!0)}),[]),v=a((function(n){n.preventDefault(),n.stopPropagation(),--H>0||c(!1)}),[]),h=a((function(n){n.preventDefault(),n.stopPropagation()}),[]),x=a((function(n){n.preventDefault(),n.stopPropagation(),c(!1),H=0;var e=n.dataTransfer.files;if(e&&e.length>0){var r=t?e:e[0],i=o(r);s&&i&&s(r)}}),[o]);return l((function(){var n=e.current;return n.addEventListener(\"click\",u),n.addEventListener(\"dragenter\",f),n.addEventListener(\"dragleave\",v),n.addEventListener(\"dragover\",h),n.addEventListener(\"drop\",x),function(){n.removeEventListener(\"click\",u),n.removeEventListener(\"dragenter\",f),n.removeEventListener(\"dragleave\",v),n.removeEventListener(\"dragover\",h),n.removeEventListener(\"drop\",x)}}),[u,f,v,h,x,e]),d}({labelRef:M,inputRef:U,multiple:F,handleChanges:K,onDrop:D});return l((function(){null==R||R(Q)}),[Q]),l((function(){w?(N(!0),B(w)):(U.current&&(U.current.value=\"\"),N(!1),B(null))}),[w]),e(g,p({overRide:v,className:\"\".concat(f||\"\",\" \").concat(P?\"is-disabled\":\"\"),ref:M,htmlFor:o,onClick:function(n){n.preventDefault(),n.stopPropagation()}},{children:[n(\"input\",{onClick:function(n){n.stopPropagation(),U&&U.current&&(U.current.value=\"\",U.current.click())},onChange:function(n){var e=n.target.files,r=F?e:e[0],t=K(r);V&&t&&V(r)},accept:z(c),ref:U,type:\"file\",name:o,disabled:P,multiple:F,required:O},void 0),Q&&n(m,p({style:T},{children:n(\"span\",{children:d||\"Drop Here\"},void 0)}),void 0),!v&&e(r,{children:[n(C,{},void 0),e(b,p({error:G},{children:[k(Y,q,G,P,j),n(L,{types:c,minSize:x,maxSize:h},void 0)]}),void 0)]},void 0),v]}),void 0)};export{E as FileUploader};\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n  var svgNS = 'http://www.w3.org/2000/svg';\n  var locationHref = '';\n  var _useWebWorker = false;\n  var initialDefaultFrame = -999999;\n\n  var setWebWorker = function setWebWorker(flag) {\n    _useWebWorker = !!flag;\n  };\n\n  var getWebWorker = function getWebWorker() {\n    return _useWebWorker;\n  };\n\n  var setLocationHref = function setLocationHref(value) {\n    locationHref = value;\n  };\n\n  var getLocationHref = function getLocationHref() {\n    return locationHref;\n  };\n\n  function createTag(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElement(type);\n  }\n\n  function extendPrototype(sources, destination) {\n    var i;\n    var len = sources.length;\n    var sourcePrototype;\n\n    for (i = 0; i < len; i += 1) {\n      sourcePrototype = sources[i].prototype;\n\n      for (var attr in sourcePrototype) {\n        if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n      }\n    }\n  }\n\n  function getDescriptor(object, prop) {\n    return Object.getOwnPropertyDescriptor(object, prop);\n  }\n\n  function createProxyFunction(prototype) {\n    function ProxyFunction() {}\n\n    ProxyFunction.prototype = prototype;\n    return ProxyFunction;\n  }\n\n  // import Howl from '../../3rd_party/howler';\n  var audioControllerFactory = function () {\n    function AudioController(audioFactory) {\n      this.audios = [];\n      this.audioFactory = audioFactory;\n      this._volume = 1;\n      this._isMuted = false;\n    }\n\n    AudioController.prototype = {\n      addAudio: function addAudio(audio) {\n        this.audios.push(audio);\n      },\n      pause: function pause() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].pause();\n        }\n      },\n      resume: function resume() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].resume();\n        }\n      },\n      setRate: function setRate(rateValue) {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].setRate(rateValue);\n        }\n      },\n      createAudio: function createAudio(assetPath) {\n        if (this.audioFactory) {\n          return this.audioFactory(assetPath);\n        }\n\n        if (window.Howl) {\n          return new window.Howl({\n            src: [assetPath]\n          });\n        }\n\n        return {\n          isPlaying: false,\n          play: function play() {\n            this.isPlaying = true;\n          },\n          seek: function seek() {\n            this.isPlaying = false;\n          },\n          playing: function playing() {},\n          rate: function rate() {},\n          setVolume: function setVolume() {}\n        };\n      },\n      setAudioFactory: function setAudioFactory(audioFactory) {\n        this.audioFactory = audioFactory;\n      },\n      setVolume: function setVolume(value) {\n        this._volume = value;\n\n        this._updateVolume();\n      },\n      mute: function mute() {\n        this._isMuted = true;\n\n        this._updateVolume();\n      },\n      unmute: function unmute() {\n        this._isMuted = false;\n\n        this._updateVolume();\n      },\n      getVolume: function getVolume() {\n        return this._volume;\n      },\n      _updateVolume: function _updateVolume() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n        }\n      }\n    };\n    return function () {\n      return new AudioController();\n    };\n  }();\n\n  var createTypedArray = function () {\n    function createRegularArray(type, len) {\n      var i = 0;\n      var arr = [];\n      var value;\n\n      switch (type) {\n        case 'int16':\n        case 'uint8c':\n          value = 1;\n          break;\n\n        default:\n          value = 1.1;\n          break;\n      }\n\n      for (i = 0; i < len; i += 1) {\n        arr.push(value);\n      }\n\n      return arr;\n    }\n\n    function createTypedArrayFactory(type, len) {\n      if (type === 'float32') {\n        return new Float32Array(len);\n      }\n\n      if (type === 'int16') {\n        return new Int16Array(len);\n      }\n\n      if (type === 'uint8c') {\n        return new Uint8ClampedArray(len);\n      }\n\n      return createRegularArray(type, len);\n    }\n\n    if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n      return createTypedArrayFactory;\n    }\n\n    return createRegularArray;\n  }();\n\n  function createSizedArray(len) {\n    return Array.apply(null, {\n      length: len\n    });\n  }\n\n  function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n  var subframeEnabled = true;\n  var expressionsPlugin = null;\n  var expressionsInterfaces = null;\n  var idPrefix$1 = '';\n  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n  var _shouldRoundValues = false;\n  var bmPow = Math.pow;\n  var bmSqrt = Math.sqrt;\n  var bmFloor = Math.floor;\n  var bmMax = Math.max;\n  var bmMin = Math.min;\n  var BMMath = {};\n\n  (function () {\n    var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n    var i;\n    var len = propertyNames.length;\n\n    for (i = 0; i < len; i += 1) {\n      BMMath[propertyNames[i]] = Math[propertyNames[i]];\n    }\n  })();\n\n  function ProjectInterface$1() {\n    return {};\n  }\n\n  BMMath.random = Math.random;\n\n  BMMath.abs = function (val) {\n    var tOfVal = _typeof$6(val);\n\n    if (tOfVal === 'object' && val.length) {\n      var absArr = createSizedArray(val.length);\n      var i;\n      var len = val.length;\n\n      for (i = 0; i < len; i += 1) {\n        absArr[i] = Math.abs(val[i]);\n      }\n\n      return absArr;\n    }\n\n    return Math.abs(val);\n  };\n\n  var defaultCurveSegments = 150;\n  var degToRads = Math.PI / 180;\n  var roundCorner = 0.5519;\n\n  function roundValues(flag) {\n    _shouldRoundValues = !!flag;\n  }\n\n  function bmRnd(value) {\n    if (_shouldRoundValues) {\n      return Math.round(value);\n    }\n\n    return value;\n  }\n\n  function styleDiv(element) {\n    element.style.position = 'absolute';\n    element.style.top = 0;\n    element.style.left = 0;\n    element.style.display = 'block';\n    element.style.transformOrigin = '0 0';\n    element.style.webkitTransformOrigin = '0 0';\n    element.style.backfaceVisibility = 'visible';\n    element.style.webkitBackfaceVisibility = 'visible';\n    element.style.transformStyle = 'preserve-3d';\n    element.style.webkitTransformStyle = 'preserve-3d';\n    element.style.mozTransformStyle = 'preserve-3d';\n  }\n\n  function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n    this.type = type;\n    this.currentTime = currentTime;\n    this.totalTime = totalTime;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMCompleteEvent(type, frameMultiplier) {\n    this.type = type;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n    this.type = type;\n    this.currentLoop = currentLoop;\n    this.totalLoops = totalLoops;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n    this.type = type;\n    this.firstFrame = firstFrame;\n    this.totalFrames = totalFrames;\n  }\n\n  function BMDestroyEvent(type, target) {\n    this.type = type;\n    this.target = target;\n  }\n\n  function BMRenderFrameErrorEvent(nativeError, currentTime) {\n    this.type = 'renderFrameError';\n    this.nativeError = nativeError;\n    this.currentTime = currentTime;\n  }\n\n  function BMConfigErrorEvent(nativeError) {\n    this.type = 'configError';\n    this.nativeError = nativeError;\n  }\n\n  function BMAnimationConfigErrorEvent(type, nativeError) {\n    this.type = type;\n    this.nativeError = nativeError;\n  }\n\n  var createElementID = function () {\n    var _count = 0;\n    return function createID() {\n      _count += 1;\n      return idPrefix$1 + '__lottie_element_' + _count;\n    };\n  }();\n\n  function HSVtoRGB(h, s, v) {\n    var r;\n    var g;\n    var b;\n    var i;\n    var f;\n    var p;\n    var q;\n    var t;\n    i = Math.floor(h * 6);\n    f = h * 6 - i;\n    p = v * (1 - s);\n    q = v * (1 - f * s);\n    t = v * (1 - (1 - f) * s);\n\n    switch (i % 6) {\n      case 0:\n        r = v;\n        g = t;\n        b = p;\n        break;\n\n      case 1:\n        r = q;\n        g = v;\n        b = p;\n        break;\n\n      case 2:\n        r = p;\n        g = v;\n        b = t;\n        break;\n\n      case 3:\n        r = p;\n        g = q;\n        b = v;\n        break;\n\n      case 4:\n        r = t;\n        g = p;\n        b = v;\n        break;\n\n      case 5:\n        r = v;\n        g = p;\n        b = q;\n        break;\n\n      default:\n        break;\n    }\n\n    return [r, g, b];\n  }\n\n  function RGBtoHSV(r, g, b) {\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var d = max - min;\n    var h;\n    var s = max === 0 ? 0 : d / max;\n    var v = max / 255;\n\n    switch (max) {\n      case min:\n        h = 0;\n        break;\n\n      case r:\n        h = g - b + d * (g < b ? 6 : 0);\n        h /= 6 * d;\n        break;\n\n      case g:\n        h = b - r + d * 2;\n        h /= 6 * d;\n        break;\n\n      case b:\n        h = r - g + d * 4;\n        h /= 6 * d;\n        break;\n\n      default:\n        break;\n    }\n\n    return [h, s, v];\n  }\n\n  function addSaturationToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[1] += offset;\n\n    if (hsv[1] > 1) {\n      hsv[1] = 1;\n    } else if (hsv[1] <= 0) {\n      hsv[1] = 0;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  function addBrightnessToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[2] += offset;\n\n    if (hsv[2] > 1) {\n      hsv[2] = 1;\n    } else if (hsv[2] < 0) {\n      hsv[2] = 0;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  function addHueToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[0] += offset / 360;\n\n    if (hsv[0] > 1) {\n      hsv[0] -= 1;\n    } else if (hsv[0] < 0) {\n      hsv[0] += 1;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  var rgbToHex = function () {\n    var colorMap = [];\n    var i;\n    var hex;\n\n    for (i = 0; i < 256; i += 1) {\n      hex = i.toString(16);\n      colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n    }\n\n    return function (r, g, b) {\n      if (r < 0) {\n        r = 0;\n      }\n\n      if (g < 0) {\n        g = 0;\n      }\n\n      if (b < 0) {\n        b = 0;\n      }\n\n      return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n    };\n  }();\n\n  var setSubframeEnabled = function setSubframeEnabled(flag) {\n    subframeEnabled = !!flag;\n  };\n\n  var getSubframeEnabled = function getSubframeEnabled() {\n    return subframeEnabled;\n  };\n\n  var setExpressionsPlugin = function setExpressionsPlugin(value) {\n    expressionsPlugin = value;\n  };\n\n  var getExpressionsPlugin = function getExpressionsPlugin() {\n    return expressionsPlugin;\n  };\n\n  var setExpressionInterfaces = function setExpressionInterfaces(value) {\n    expressionsInterfaces = value;\n  };\n\n  var getExpressionInterfaces = function getExpressionInterfaces() {\n    return expressionsInterfaces;\n  };\n\n  var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n    defaultCurveSegments = value;\n  };\n\n  var getDefaultCurveSegments = function getDefaultCurveSegments() {\n    return defaultCurveSegments;\n  };\n\n  var setIdPrefix = function setIdPrefix(value) {\n    idPrefix$1 = value;\n  };\n\n  var getIdPrefix = function getIdPrefix() {\n    return idPrefix$1;\n  };\n\n  function createNS(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElementNS(svgNS, type);\n  }\n\n  function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n  var dataManager = function () {\n    var _counterId = 1;\n    var processes = [];\n    var workerFn;\n    var workerInstance;\n    var workerProxy = {\n      onmessage: function onmessage() {},\n      postMessage: function postMessage(path) {\n        workerFn({\n          data: path\n        });\n      }\n    };\n    var _workerSelf = {\n      postMessage: function postMessage(data) {\n        workerProxy.onmessage({\n          data: data\n        });\n      }\n    };\n\n    function createWorker(fn) {\n      if (window.Worker && window.Blob && getWebWorker()) {\n        var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n          type: 'text/javascript'\n        }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n        var url = URL.createObjectURL(blob);\n        return new Worker(url);\n      }\n\n      workerFn = fn;\n      return workerProxy;\n    }\n\n    function setupWorker() {\n      if (!workerInstance) {\n        workerInstance = createWorker(function workerStart(e) {\n          function dataFunctionManager() {\n            function completeLayers(layers, comps) {\n              var layerData;\n              var i;\n              var len = layers.length;\n              var j;\n              var jLen;\n              var k;\n              var kLen;\n\n              for (i = 0; i < len; i += 1) {\n                layerData = layers[i];\n\n                if ('ks' in layerData && !layerData.completed) {\n                  layerData.completed = true;\n\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        convertPathsToAbsoluteValues(maskProps[j].pt.k);\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n                          }\n\n                          if (maskProps[j].pt.k[k].e) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  if (layerData.ty === 0) {\n                    layerData.layers = findCompLayers(layerData.refId, comps);\n                    completeLayers(layerData.layers, comps);\n                  } else if (layerData.ty === 4) {\n                    completeShapes(layerData.shapes);\n                  } else if (layerData.ty === 5) {\n                    completeText(layerData);\n                  }\n                }\n              }\n            }\n\n            function completeChars(chars, assets) {\n              if (chars) {\n                var i = 0;\n                var len = chars.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (chars[i].t === 1) {\n                    // var compData = findComp(chars[i].data.refId, assets);\n                    chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n                    // chars[i].data.op = 99999;\n                    // chars[i].data.st = 0;\n                    // chars[i].data.sr = 1;\n                    // chars[i].w = compData.w;\n                    // chars[i].data.ks = {\n                    //   a: { k: [0, 0, 0], a: 0 },\n                    //   p: { k: [0, -compData.h, 0], a: 0 },\n                    //   r: { k: 0, a: 0 },\n                    //   s: { k: [100, 100], a: 0 },\n                    //   o: { k: 100, a: 0 },\n                    // };\n\n                    completeLayers(chars[i].data.layers, assets);\n                  }\n                }\n              }\n            }\n\n            function findComp(id, comps) {\n              var i = 0;\n              var len = comps.length;\n\n              while (i < len) {\n                if (comps[i].id === id) {\n                  return comps[i];\n                }\n\n                i += 1;\n              }\n\n              return null;\n            }\n\n            function findCompLayers(id, comps) {\n              var comp = findComp(id, comps);\n\n              if (comp) {\n                if (!comp.layers.__used) {\n                  comp.layers.__used = true;\n                  return comp.layers;\n                }\n\n                return JSON.parse(JSON.stringify(comp.layers));\n              }\n\n              return null;\n            }\n\n            function completeShapes(arr) {\n              var i;\n              var len = arr.length;\n              var j;\n              var jLen;\n\n              for (i = len - 1; i >= 0; i -= 1) {\n                if (arr[i].ty === 'sh') {\n                  if (arr[i].ks.k.i) {\n                    convertPathsToAbsoluteValues(arr[i].ks.k);\n                  } else {\n                    jLen = arr[i].ks.k.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (arr[i].ks.k[j].s) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n                      }\n\n                      if (arr[i].ks.k[j].e) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n                      }\n                    }\n                  }\n                } else if (arr[i].ty === 'gr') {\n                  completeShapes(arr[i].it);\n                }\n              }\n            }\n\n            function convertPathsToAbsoluteValues(path) {\n              var i;\n              var len = path.i.length;\n\n              for (i = 0; i < len; i += 1) {\n                path.i[i][0] += path.v[i][0];\n                path.i[i][1] += path.v[i][1];\n                path.o[i][0] += path.v[i][0];\n                path.o[i][1] += path.v[i][1];\n              }\n            }\n\n            function checkVersion(minimum, animVersionString) {\n              var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n              if (minimum[0] > animVersion[0]) {\n                return true;\n              }\n\n              if (animVersion[0] > minimum[0]) {\n                return false;\n              }\n\n              if (minimum[1] > animVersion[1]) {\n                return true;\n              }\n\n              if (animVersion[1] > minimum[1]) {\n                return false;\n              }\n\n              if (minimum[2] > animVersion[2]) {\n                return true;\n              }\n\n              if (animVersion[2] > minimum[2]) {\n                return false;\n              }\n\n              return null;\n            }\n\n            var checkText = function () {\n              var minimumVersion = [4, 4, 14];\n\n              function updateTextLayer(textLayer) {\n                var documentData = textLayer.t.d;\n                textLayer.t.d = {\n                  k: [{\n                    s: documentData,\n                    t: 0\n                  }]\n                };\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkChars = function () {\n              var minimumVersion = [4, 7, 99];\n              return function (animationData) {\n                if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n                  var i;\n                  var len = animationData.chars.length;\n\n                  for (i = 0; i < len; i += 1) {\n                    var charData = animationData.chars[i];\n\n                    if (charData.data && charData.data.shapes) {\n                      completeShapes(charData.data.shapes);\n                      charData.data.ip = 0;\n                      charData.data.op = 99999;\n                      charData.data.st = 0;\n                      charData.data.sr = 1;\n                      charData.data.ks = {\n                        p: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        s: {\n                          k: [100, 100],\n                          a: 0\n                        },\n                        a: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        r: {\n                          k: 0,\n                          a: 0\n                        },\n                        o: {\n                          k: 100,\n                          a: 0\n                        }\n                      };\n\n                      if (!animationData.chars[i].t) {\n                        charData.data.shapes.push({\n                          ty: 'no'\n                        });\n                        charData.data.shapes[0].it.push({\n                          p: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          s: {\n                            k: [100, 100],\n                            a: 0\n                          },\n                          a: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          r: {\n                            k: 0,\n                            a: 0\n                          },\n                          o: {\n                            k: 100,\n                            a: 0\n                          },\n                          sk: {\n                            k: 0,\n                            a: 0\n                          },\n                          sa: {\n                            k: 0,\n                            a: 0\n                          },\n                          ty: 'tr'\n                        });\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkPathProperties = function () {\n              var minimumVersion = [5, 7, 15];\n\n              function updateTextLayer(textLayer) {\n                var pathData = textLayer.t.p;\n\n                if (typeof pathData.a === 'number') {\n                  pathData.a = {\n                    a: 0,\n                    k: pathData.a\n                  };\n                }\n\n                if (typeof pathData.p === 'number') {\n                  pathData.p = {\n                    a: 0,\n                    k: pathData.p\n                  };\n                }\n\n                if (typeof pathData.r === 'number') {\n                  pathData.r = {\n                    a: 0,\n                    k: pathData.r\n                  };\n                }\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkColors = function () {\n              var minimumVersion = [4, 1, 9];\n\n              function iterateShapes(shapes) {\n                var i;\n                var len = shapes.length;\n                var j;\n                var jLen;\n\n                for (i = 0; i < len; i += 1) {\n                  if (shapes[i].ty === 'gr') {\n                    iterateShapes(shapes[i].it);\n                  } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n                    if (shapes[i].c.k && shapes[i].c.k[0].i) {\n                      jLen = shapes[i].c.k.length;\n\n                      for (j = 0; j < jLen; j += 1) {\n                        if (shapes[i].c.k[j].s) {\n                          shapes[i].c.k[j].s[0] /= 255;\n                          shapes[i].c.k[j].s[1] /= 255;\n                          shapes[i].c.k[j].s[2] /= 255;\n                          shapes[i].c.k[j].s[3] /= 255;\n                        }\n\n                        if (shapes[i].c.k[j].e) {\n                          shapes[i].c.k[j].e[0] /= 255;\n                          shapes[i].c.k[j].e[1] /= 255;\n                          shapes[i].c.k[j].e[2] /= 255;\n                          shapes[i].c.k[j].e[3] /= 255;\n                        }\n                      }\n                    } else {\n                      shapes[i].c.k[0] /= 255;\n                      shapes[i].c.k[1] /= 255;\n                      shapes[i].c.k[2] /= 255;\n                      shapes[i].c.k[3] /= 255;\n                    }\n                  }\n                }\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 4) {\n                    iterateShapes(layers[i].shapes);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkShapes = function () {\n              var minimumVersion = [4, 4, 18];\n\n              function completeClosingShapes(arr) {\n                var i;\n                var len = arr.length;\n                var j;\n                var jLen;\n\n                for (i = len - 1; i >= 0; i -= 1) {\n                  if (arr[i].ty === 'sh') {\n                    if (arr[i].ks.k.i) {\n                      arr[i].ks.k.c = arr[i].closed;\n                    } else {\n                      jLen = arr[i].ks.k.length;\n\n                      for (j = 0; j < jLen; j += 1) {\n                        if (arr[i].ks.k[j].s) {\n                          arr[i].ks.k[j].s[0].c = arr[i].closed;\n                        }\n\n                        if (arr[i].ks.k[j].e) {\n                          arr[i].ks.k[j].e[0].c = arr[i].closed;\n                        }\n                      }\n                    }\n                  } else if (arr[i].ty === 'gr') {\n                    completeClosingShapes(arr[i].it);\n                  }\n                }\n              }\n\n              function iterateLayers(layers) {\n                var layerData;\n                var i;\n                var len = layers.length;\n                var j;\n                var jLen;\n                var k;\n                var kLen;\n\n                for (i = 0; i < len; i += 1) {\n                  layerData = layers[i];\n\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        maskProps[j].pt.k.c = maskProps[j].cl;\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n                          }\n\n                          if (maskProps[j].pt.k[k].e) {\n                            maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  if (layerData.ty === 4) {\n                    completeClosingShapes(layerData.shapes);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            function completeData(animationData) {\n              if (animationData.__complete) {\n                return;\n              }\n\n              checkColors(animationData);\n              checkText(animationData);\n              checkChars(animationData);\n              checkPathProperties(animationData);\n              checkShapes(animationData);\n              completeLayers(animationData.layers, animationData.assets);\n              completeChars(animationData.chars, animationData.assets);\n              animationData.__complete = true;\n            }\n\n            function completeText(data) {\n              if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n              }\n            }\n\n            var moduleOb = {};\n            moduleOb.completeData = completeData;\n            moduleOb.checkColors = checkColors;\n            moduleOb.checkChars = checkChars;\n            moduleOb.checkPathProperties = checkPathProperties;\n            moduleOb.checkShapes = checkShapes;\n            moduleOb.completeLayers = completeLayers;\n            return moduleOb;\n          }\n\n          if (!_workerSelf.dataManager) {\n            _workerSelf.dataManager = dataFunctionManager();\n          }\n\n          if (!_workerSelf.assetLoader) {\n            _workerSelf.assetLoader = function () {\n              function formatResponse(xhr) {\n                // using typeof doubles the time of execution of this method,\n                // so if available, it's better to use the header to validate the type\n                var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n                if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n                  return xhr.response;\n                }\n\n                if (xhr.response && _typeof$5(xhr.response) === 'object') {\n                  return xhr.response;\n                }\n\n                if (xhr.response && typeof xhr.response === 'string') {\n                  return JSON.parse(xhr.response);\n                }\n\n                if (xhr.responseText) {\n                  return JSON.parse(xhr.responseText);\n                }\n\n                return null;\n              }\n\n              function loadAsset(path, fullPath, callback, errorCallback) {\n                var response;\n                var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n                try {\n                  // This crashes on Android WebView prior to KitKat\n                  xhr.responseType = 'json';\n                } catch (err) {} // eslint-disable-line no-empty\n\n\n                xhr.onreadystatechange = function () {\n                  if (xhr.readyState === 4) {\n                    if (xhr.status === 200) {\n                      response = formatResponse(xhr);\n                      callback(response);\n                    } else {\n                      try {\n                        response = formatResponse(xhr);\n                        callback(response);\n                      } catch (err) {\n                        if (errorCallback) {\n                          errorCallback(err);\n                        }\n                      }\n                    }\n                  }\n                };\n\n                try {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), path, true);\n                } catch (error) {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n                }\n\n                xhr.send();\n              }\n\n              return {\n                load: loadAsset\n              };\n            }();\n          }\n\n          if (e.data.type === 'loadAnimation') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.dataManager.completeData(data);\n\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          } else if (e.data.type === 'complete') {\n            var animation = e.data.animation;\n\n            _workerSelf.dataManager.completeData(animation);\n\n            _workerSelf.postMessage({\n              id: e.data.id,\n              payload: animation,\n              status: 'success'\n            });\n          } else if (e.data.type === 'loadData') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          }\n        });\n\n        workerInstance.onmessage = function (event) {\n          var data = event.data;\n          var id = data.id;\n          var process = processes[id];\n          processes[id] = null;\n\n          if (data.status === 'success') {\n            process.onComplete(data.payload);\n          } else if (process.onError) {\n            process.onError();\n          }\n        };\n      }\n    }\n\n    function createProcess(onComplete, onError) {\n      _counterId += 1;\n      var id = 'processId_' + _counterId;\n      processes[id] = {\n        onComplete: onComplete,\n        onError: onError\n      };\n      return id;\n    }\n\n    function loadAnimation(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadAnimation',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n\n    function loadData(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadData',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n\n    function completeAnimation(anim, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'complete',\n        animation: anim,\n        id: processId\n      });\n    }\n\n    return {\n      loadAnimation: loadAnimation,\n      loadData: loadData,\n      completeAnimation: completeAnimation\n    };\n  }();\n\n  var ImagePreloader = function () {\n    var proxyImage = function () {\n      var canvas = createTag('canvas');\n      canvas.width = 1;\n      canvas.height = 1;\n      var ctx = canvas.getContext('2d');\n      ctx.fillStyle = 'rgba(0,0,0,0)';\n      ctx.fillRect(0, 0, 1, 1);\n      return canvas;\n    }();\n\n    function imageLoaded() {\n      this.loadedAssets += 1;\n\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n\n    function footageLoaded() {\n      this.loadedFootagesCount += 1;\n\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n\n    function getAssetsPath(assetData, assetsPath, originalPath) {\n      var path = '';\n\n      if (assetData.e) {\n        path = assetData.p;\n      } else if (assetsPath) {\n        var imagePath = assetData.p;\n\n        if (imagePath.indexOf('images/') !== -1) {\n          imagePath = imagePath.split('/')[1];\n        }\n\n        path = assetsPath + imagePath;\n      } else {\n        path = originalPath;\n        path += assetData.u ? assetData.u : '';\n        path += assetData.p;\n      }\n\n      return path;\n    }\n\n    function testImageLoaded(img) {\n      var _count = 0;\n      var intervalId = setInterval(function () {\n        var box = img.getBBox();\n\n        if (box.width || _count > 500) {\n          this._imageLoaded();\n\n          clearInterval(intervalId);\n        }\n\n        _count += 1;\n      }.bind(this), 50);\n    }\n\n    function createImageData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createNS('image');\n\n      if (isSafari) {\n        this.testImageLoaded(img);\n      } else {\n        img.addEventListener('load', this._imageLoaded, false);\n      }\n\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n\n        this._imageLoaded();\n      }.bind(this), false);\n      img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n      if (this._elementHelper.append) {\n        this._elementHelper.append(img);\n      } else {\n        this._elementHelper.appendChild(img);\n      }\n\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n\n    function createImgData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createTag('img');\n      img.crossOrigin = 'anonymous';\n      img.addEventListener('load', this._imageLoaded, false);\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n\n        this._imageLoaded();\n      }.bind(this), false);\n      img.src = path;\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n\n    function createFootageData(data) {\n      var ob = {\n        assetData: data\n      };\n      var path = getAssetsPath(data, this.assetsPath, this.path);\n      dataManager.loadData(path, function (footageData) {\n        ob.img = footageData;\n\n        this._footageLoaded();\n      }.bind(this), function () {\n        ob.img = {};\n\n        this._footageLoaded();\n      }.bind(this));\n      return ob;\n    }\n\n    function loadAssets(assets, cb) {\n      this.imagesLoadedCb = cb;\n      var i;\n      var len = assets.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (!assets[i].layers) {\n          if (!assets[i].t || assets[i].t === 'seq') {\n            this.totalImages += 1;\n            this.images.push(this._createImageData(assets[i]));\n          } else if (assets[i].t === 3) {\n            this.totalFootages += 1;\n            this.images.push(this.createFootageData(assets[i]));\n          }\n        }\n      }\n    }\n\n    function setPath(path) {\n      this.path = path || '';\n    }\n\n    function setAssetsPath(path) {\n      this.assetsPath = path || '';\n    }\n\n    function getAsset(assetData) {\n      var i = 0;\n      var len = this.images.length;\n\n      while (i < len) {\n        if (this.images[i].assetData === assetData) {\n          return this.images[i].img;\n        }\n\n        i += 1;\n      }\n\n      return null;\n    }\n\n    function destroy() {\n      this.imagesLoadedCb = null;\n      this.images.length = 0;\n    }\n\n    function loadedImages() {\n      return this.totalImages === this.loadedAssets;\n    }\n\n    function loadedFootages() {\n      return this.totalFootages === this.loadedFootagesCount;\n    }\n\n    function setCacheType(type, elementHelper) {\n      if (type === 'svg') {\n        this._elementHelper = elementHelper;\n        this._createImageData = this.createImageData.bind(this);\n      } else {\n        this._createImageData = this.createImgData.bind(this);\n      }\n    }\n\n    function ImagePreloaderFactory() {\n      this._imageLoaded = imageLoaded.bind(this);\n      this._footageLoaded = footageLoaded.bind(this);\n      this.testImageLoaded = testImageLoaded.bind(this);\n      this.createFootageData = createFootageData.bind(this);\n      this.assetsPath = '';\n      this.path = '';\n      this.totalImages = 0;\n      this.totalFootages = 0;\n      this.loadedAssets = 0;\n      this.loadedFootagesCount = 0;\n      this.imagesLoadedCb = null;\n      this.images = [];\n    }\n\n    ImagePreloaderFactory.prototype = {\n      loadAssets: loadAssets,\n      setAssetsPath: setAssetsPath,\n      setPath: setPath,\n      loadedImages: loadedImages,\n      loadedFootages: loadedFootages,\n      destroy: destroy,\n      getAsset: getAsset,\n      createImgData: createImgData,\n      createImageData: createImageData,\n      imageLoaded: imageLoaded,\n      footageLoaded: footageLoaded,\n      setCacheType: setCacheType\n    };\n    return ImagePreloaderFactory;\n  }();\n\n  function BaseEvent() {}\n\n  BaseEvent.prototype = {\n    triggerEvent: function triggerEvent(eventName, args) {\n      if (this._cbs[eventName]) {\n        var callbacks = this._cbs[eventName];\n\n        for (var i = 0; i < callbacks.length; i += 1) {\n          callbacks[i](args);\n        }\n      }\n    },\n    addEventListener: function addEventListener(eventName, callback) {\n      if (!this._cbs[eventName]) {\n        this._cbs[eventName] = [];\n      }\n\n      this._cbs[eventName].push(callback);\n\n      return function () {\n        this.removeEventListener(eventName, callback);\n      }.bind(this);\n    },\n    removeEventListener: function removeEventListener(eventName, callback) {\n      if (!callback) {\n        this._cbs[eventName] = null;\n      } else if (this._cbs[eventName]) {\n        var i = 0;\n        var len = this._cbs[eventName].length;\n\n        while (i < len) {\n          if (this._cbs[eventName][i] === callback) {\n            this._cbs[eventName].splice(i, 1);\n\n            i -= 1;\n            len -= 1;\n          }\n\n          i += 1;\n        }\n\n        if (!this._cbs[eventName].length) {\n          this._cbs[eventName] = null;\n        }\n      }\n    }\n  };\n\n  var markerParser = function () {\n    function parsePayloadLines(payload) {\n      var lines = payload.split('\\r\\n');\n      var keys = {};\n      var line;\n      var keysCount = 0;\n\n      for (var i = 0; i < lines.length; i += 1) {\n        line = lines[i].split(':');\n\n        if (line.length === 2) {\n          keys[line[0]] = line[1].trim();\n          keysCount += 1;\n        }\n      }\n\n      if (keysCount === 0) {\n        throw new Error();\n      }\n\n      return keys;\n    }\n\n    return function (_markers) {\n      var markers = [];\n\n      for (var i = 0; i < _markers.length; i += 1) {\n        var _marker = _markers[i];\n        var markerData = {\n          time: _marker.tm,\n          duration: _marker.dr\n        };\n\n        try {\n          markerData.payload = JSON.parse(_markers[i].cm);\n        } catch (_) {\n          try {\n            markerData.payload = parsePayloadLines(_markers[i].cm);\n          } catch (__) {\n            markerData.payload = {\n              name: _markers[i].cm\n            };\n          }\n        }\n\n        markers.push(markerData);\n      }\n\n      return markers;\n    };\n  }();\n\n  var ProjectInterface = function () {\n    function registerComposition(comp) {\n      this.compositions.push(comp);\n    }\n\n    return function () {\n      function _thisProjectFunction(name) {\n        var i = 0;\n        var len = this.compositions.length;\n\n        while (i < len) {\n          if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n            if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n              this.compositions[i].prepareFrame(this.currentFrame);\n            }\n\n            return this.compositions[i].compInterface;\n          }\n\n          i += 1;\n        }\n\n        return null;\n      }\n\n      _thisProjectFunction.compositions = [];\n      _thisProjectFunction.currentFrame = 0;\n      _thisProjectFunction.registerComposition = registerComposition;\n      return _thisProjectFunction;\n    };\n  }();\n\n  var renderers = {};\n\n  var registerRenderer = function registerRenderer(key, value) {\n    renderers[key] = value;\n  };\n\n  function getRenderer(key) {\n    return renderers[key];\n  }\n\n  function getRegisteredRenderer() {\n    // Returns canvas by default for compatibility\n    if (renderers.canvas) {\n      return 'canvas';\n    } // Returns any renderer that is registered\n\n\n    for (var key in renderers) {\n      if (renderers[key]) {\n        return key;\n      }\n    }\n\n    return '';\n  }\n\n  function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n  var AnimationItem = function AnimationItem() {\n    this._cbs = [];\n    this.name = '';\n    this.path = '';\n    this.isLoaded = false;\n    this.currentFrame = 0;\n    this.currentRawFrame = 0;\n    this.firstFrame = 0;\n    this.totalFrames = 0;\n    this.frameRate = 0;\n    this.frameMult = 0;\n    this.playSpeed = 1;\n    this.playDirection = 1;\n    this.playCount = 0;\n    this.animationData = {};\n    this.assets = [];\n    this.isPaused = true;\n    this.autoplay = false;\n    this.loop = true;\n    this.renderer = null;\n    this.animationID = createElementID();\n    this.assetsPath = '';\n    this.timeCompleted = 0;\n    this.segmentPos = 0;\n    this.isSubframeEnabled = getSubframeEnabled();\n    this.segments = [];\n    this._idle = true;\n    this._completedLoop = false;\n    this.projectInterface = ProjectInterface();\n    this.imagePreloader = new ImagePreloader();\n    this.audioController = audioControllerFactory();\n    this.markers = [];\n    this.configAnimation = this.configAnimation.bind(this);\n    this.onSetupError = this.onSetupError.bind(this);\n    this.onSegmentComplete = this.onSegmentComplete.bind(this);\n    this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n    this.expressionsPlugin = getExpressionsPlugin();\n  };\n\n  extendPrototype([BaseEvent], AnimationItem);\n\n  AnimationItem.prototype.setParams = function (params) {\n    if (params.wrapper || params.container) {\n      this.wrapper = params.wrapper || params.container;\n    }\n\n    var animType = 'svg';\n\n    if (params.animType) {\n      animType = params.animType;\n    } else if (params.renderer) {\n      animType = params.renderer;\n    }\n\n    var RendererClass = getRenderer(animType);\n    this.renderer = new RendererClass(this, params.rendererSettings);\n    this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n    this.renderer.setProjectInterface(this.projectInterface);\n    this.animType = animType;\n\n    if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n      this.loop = true;\n    } else if (params.loop === false) {\n      this.loop = false;\n    } else {\n      this.loop = parseInt(params.loop, 10);\n    }\n\n    this.autoplay = 'autoplay' in params ? params.autoplay : true;\n    this.name = params.name ? params.name : '';\n    this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n    this.assetsPath = params.assetsPath;\n    this.initialSegment = params.initialSegment;\n\n    if (params.audioFactory) {\n      this.audioController.setAudioFactory(params.audioFactory);\n    }\n\n    if (params.animationData) {\n      this.setupAnimation(params.animationData);\n    } else if (params.path) {\n      if (params.path.lastIndexOf('\\\\') !== -1) {\n        this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n      } else {\n        this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n      }\n\n      this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n      this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n      dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n    }\n  };\n\n  AnimationItem.prototype.onSetupError = function () {\n    this.trigger('data_failed');\n  };\n\n  AnimationItem.prototype.setupAnimation = function (data) {\n    dataManager.completeAnimation(data, this.configAnimation);\n  };\n\n  AnimationItem.prototype.setData = function (wrapper, animationData) {\n    if (animationData) {\n      if (_typeof$4(animationData) !== 'object') {\n        animationData = JSON.parse(animationData);\n      }\n    }\n\n    var params = {\n      wrapper: wrapper,\n      animationData: animationData\n    };\n    var wrapperAttributes = wrapper.attributes;\n    params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n    params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n    var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n    if (loop === 'false') {\n      params.loop = false;\n    } else if (loop === 'true') {\n      params.loop = true;\n    } else if (loop !== '') {\n      params.loop = parseInt(loop, 10);\n    }\n\n    var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n    params.autoplay = autoplay !== 'false';\n    params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n    var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n    if (prerender === 'false') {\n      params.prerender = false;\n    }\n\n    if (!params.path) {\n      this.trigger('destroy');\n    } else {\n      this.setParams(params);\n    }\n  };\n\n  AnimationItem.prototype.includeLayers = function (data) {\n    if (data.op > this.animationData.op) {\n      this.animationData.op = data.op;\n      this.totalFrames = Math.floor(data.op - this.animationData.ip);\n    }\n\n    var layers = this.animationData.layers;\n    var i;\n    var len = layers.length;\n    var newLayers = data.layers;\n    var j;\n    var jLen = newLayers.length;\n\n    for (j = 0; j < jLen; j += 1) {\n      i = 0;\n\n      while (i < len) {\n        if (layers[i].id === newLayers[j].id) {\n          layers[i] = newLayers[j];\n          break;\n        }\n\n        i += 1;\n      }\n    }\n\n    if (data.chars || data.fonts) {\n      this.renderer.globalData.fontManager.addChars(data.chars);\n      this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n    }\n\n    if (data.assets) {\n      len = data.assets.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.animationData.assets.push(data.assets[i]);\n      }\n    }\n\n    this.animationData.__complete = false;\n    dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n  };\n\n  AnimationItem.prototype.onSegmentComplete = function (data) {\n    this.animationData = data;\n    var expressionsPlugin = getExpressionsPlugin();\n\n    if (expressionsPlugin) {\n      expressionsPlugin.initExpressions(this);\n    }\n\n    this.loadNextSegment();\n  };\n\n  AnimationItem.prototype.loadNextSegment = function () {\n    var segments = this.animationData.segments;\n\n    if (!segments || segments.length === 0 || !this.autoloadSegments) {\n      this.trigger('data_ready');\n      this.timeCompleted = this.totalFrames;\n      return;\n    }\n\n    var segment = segments.shift();\n    this.timeCompleted = segment.time * this.frameRate;\n    var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n    this.segmentPos += 1;\n    dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n      this.trigger('data_failed');\n    }.bind(this));\n  };\n\n  AnimationItem.prototype.loadSegments = function () {\n    var segments = this.animationData.segments;\n\n    if (!segments) {\n      this.timeCompleted = this.totalFrames;\n    }\n\n    this.loadNextSegment();\n  };\n\n  AnimationItem.prototype.imagesLoaded = function () {\n    this.trigger('loaded_images');\n    this.checkLoaded();\n  };\n\n  AnimationItem.prototype.preloadImages = function () {\n    this.imagePreloader.setAssetsPath(this.assetsPath);\n    this.imagePreloader.setPath(this.path);\n    this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n  };\n\n  AnimationItem.prototype.configAnimation = function (animData) {\n    if (!this.renderer) {\n      return;\n    }\n\n    try {\n      this.animationData = animData;\n\n      if (this.initialSegment) {\n        this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n        this.firstFrame = Math.round(this.initialSegment[0]);\n      } else {\n        this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n        this.firstFrame = Math.round(this.animationData.ip);\n      }\n\n      this.renderer.configAnimation(animData);\n\n      if (!animData.assets) {\n        animData.assets = [];\n      }\n\n      this.assets = this.animationData.assets;\n      this.frameRate = this.animationData.fr;\n      this.frameMult = this.animationData.fr / 1000;\n      this.renderer.searchExtraCompositions(animData.assets);\n      this.markers = markerParser(animData.markers || []);\n      this.trigger('config_ready');\n      this.preloadImages();\n      this.loadSegments();\n      this.updaFrameModifier();\n      this.waitForFontsLoaded();\n\n      if (this.isPaused) {\n        this.audioController.pause();\n      }\n    } catch (error) {\n      this.triggerConfigError(error);\n    }\n  };\n\n  AnimationItem.prototype.waitForFontsLoaded = function () {\n    if (!this.renderer) {\n      return;\n    }\n\n    if (this.renderer.globalData.fontManager.isLoaded) {\n      this.checkLoaded();\n    } else {\n      setTimeout(this.waitForFontsLoaded.bind(this), 20);\n    }\n  };\n\n  AnimationItem.prototype.checkLoaded = function () {\n    if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n      this.isLoaded = true;\n      var expressionsPlugin = getExpressionsPlugin();\n\n      if (expressionsPlugin) {\n        expressionsPlugin.initExpressions(this);\n      }\n\n      this.renderer.initItems();\n      setTimeout(function () {\n        this.trigger('DOMLoaded');\n      }.bind(this), 0);\n      this.gotoFrame();\n\n      if (this.autoplay) {\n        this.play();\n      }\n    }\n  };\n\n  AnimationItem.prototype.resize = function (width, height) {\n    // Adding this validation for backwards compatibility in case an event object was being passed down\n    var _width = typeof width === 'number' ? width : undefined;\n\n    var _height = typeof height === 'number' ? height : undefined;\n\n    this.renderer.updateContainerSize(_width, _height);\n  };\n\n  AnimationItem.prototype.setSubframe = function (flag) {\n    this.isSubframeEnabled = !!flag;\n  };\n\n  AnimationItem.prototype.gotoFrame = function () {\n    this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n    if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n      this.currentFrame = this.timeCompleted;\n    }\n\n    this.trigger('enterFrame');\n    this.renderFrame();\n    this.trigger('drawnFrame');\n  };\n\n  AnimationItem.prototype.renderFrame = function () {\n    if (this.isLoaded === false || !this.renderer) {\n      return;\n    }\n\n    try {\n      if (this.expressionsPlugin) {\n        this.expressionsPlugin.resetFrame();\n      }\n\n      this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n    } catch (error) {\n      this.triggerRenderFrameError(error);\n    }\n  };\n\n  AnimationItem.prototype.play = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === true) {\n      this.isPaused = false;\n      this.trigger('_play');\n      this.audioController.resume();\n\n      if (this._idle) {\n        this._idle = false;\n        this.trigger('_active');\n      }\n    }\n  };\n\n  AnimationItem.prototype.pause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === false) {\n      this.isPaused = true;\n      this.trigger('_pause');\n      this._idle = true;\n      this.trigger('_idle');\n      this.audioController.pause();\n    }\n  };\n\n  AnimationItem.prototype.togglePause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === true) {\n      this.play();\n    } else {\n      this.pause();\n    }\n  };\n\n  AnimationItem.prototype.stop = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.pause();\n    this.playCount = 0;\n    this._completedLoop = false;\n    this.setCurrentRawFrameValue(0);\n  };\n\n  AnimationItem.prototype.getMarkerData = function (markerName) {\n    var marker;\n\n    for (var i = 0; i < this.markers.length; i += 1) {\n      marker = this.markers[i];\n\n      if (marker.payload && marker.payload.name === markerName) {\n        return marker;\n      }\n    }\n\n    return null;\n  };\n\n  AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    var numValue = Number(value);\n\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n\n      if (marker) {\n        this.goToAndStop(marker.time, true);\n      }\n    } else if (isFrame) {\n      this.setCurrentRawFrameValue(value);\n    } else {\n      this.setCurrentRawFrameValue(value * this.frameModifier);\n    }\n\n    this.pause();\n  };\n\n  AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    var numValue = Number(value);\n\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n\n      if (marker) {\n        if (!marker.duration) {\n          this.goToAndStop(marker.time, true);\n        } else {\n          this.playSegments([marker.time, marker.time + marker.duration], true);\n        }\n      }\n    } else {\n      this.goToAndStop(numValue, isFrame, name);\n    }\n\n    this.play();\n  };\n\n  AnimationItem.prototype.advanceTime = function (value) {\n    if (this.isPaused === true || this.isLoaded === false) {\n      return;\n    }\n\n    var nextValue = this.currentRawFrame + value * this.frameModifier;\n    var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n    // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n    if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n      if (!this.loop || this.playCount === this.loop) {\n        if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n          _isComplete = true;\n          nextValue = this.totalFrames - 1;\n        }\n      } else if (nextValue >= this.totalFrames) {\n        this.playCount += 1;\n\n        if (!this.checkSegments(nextValue % this.totalFrames)) {\n          this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n          this._completedLoop = true;\n          this.trigger('loopComplete');\n        }\n      } else {\n        this.setCurrentRawFrameValue(nextValue);\n      }\n    } else if (nextValue < 0) {\n      if (!this.checkSegments(nextValue % this.totalFrames)) {\n        if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n          // eslint-disable-line no-plusplus\n          this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n          if (!this._completedLoop) {\n            this._completedLoop = true;\n          } else {\n            this.trigger('loopComplete');\n          }\n        } else {\n          _isComplete = true;\n          nextValue = 0;\n        }\n      }\n    } else {\n      this.setCurrentRawFrameValue(nextValue);\n    }\n\n    if (_isComplete) {\n      this.setCurrentRawFrameValue(nextValue);\n      this.pause();\n      this.trigger('complete');\n    }\n  };\n\n  AnimationItem.prototype.adjustSegment = function (arr, offset) {\n    this.playCount = 0;\n\n    if (arr[1] < arr[0]) {\n      if (this.frameModifier > 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(-1);\n        }\n      }\n\n      this.totalFrames = arr[0] - arr[1];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[1];\n      this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n    } else if (arr[1] > arr[0]) {\n      if (this.frameModifier < 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(1);\n        }\n      }\n\n      this.totalFrames = arr[1] - arr[0];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[0];\n      this.setCurrentRawFrameValue(0.001 + offset);\n    }\n\n    this.trigger('segmentStart');\n  };\n\n  AnimationItem.prototype.setSegment = function (init, end) {\n    var pendingFrame = -1;\n\n    if (this.isPaused) {\n      if (this.currentRawFrame + this.firstFrame < init) {\n        pendingFrame = init;\n      } else if (this.currentRawFrame + this.firstFrame > end) {\n        pendingFrame = end - init;\n      }\n    }\n\n    this.firstFrame = init;\n    this.totalFrames = end - init;\n    this.timeCompleted = this.totalFrames;\n\n    if (pendingFrame !== -1) {\n      this.goToAndStop(pendingFrame, true);\n    }\n  };\n\n  AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n    if (forceFlag) {\n      this.segments.length = 0;\n    }\n\n    if (_typeof$4(arr[0]) === 'object') {\n      var i;\n      var len = arr.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.segments.push(arr[i]);\n      }\n    } else {\n      this.segments.push(arr);\n    }\n\n    if (this.segments.length && forceFlag) {\n      this.adjustSegment(this.segments.shift(), 0);\n    }\n\n    if (this.isPaused) {\n      this.play();\n    }\n  };\n\n  AnimationItem.prototype.resetSegments = function (forceFlag) {\n    this.segments.length = 0;\n    this.segments.push([this.animationData.ip, this.animationData.op]);\n\n    if (forceFlag) {\n      this.checkSegments(0);\n    }\n  };\n\n  AnimationItem.prototype.checkSegments = function (offset) {\n    if (this.segments.length) {\n      this.adjustSegment(this.segments.shift(), offset);\n      return true;\n    }\n\n    return false;\n  };\n\n  AnimationItem.prototype.destroy = function (name) {\n    if (name && this.name !== name || !this.renderer) {\n      return;\n    }\n\n    this.renderer.destroy();\n    this.imagePreloader.destroy();\n    this.trigger('destroy');\n    this._cbs = null;\n    this.onEnterFrame = null;\n    this.onLoopComplete = null;\n    this.onComplete = null;\n    this.onSegmentStart = null;\n    this.onDestroy = null;\n    this.renderer = null;\n    this.expressionsPlugin = null;\n    this.imagePreloader = null;\n    this.projectInterface = null;\n  };\n\n  AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n    this.currentRawFrame = value;\n    this.gotoFrame();\n  };\n\n  AnimationItem.prototype.setSpeed = function (val) {\n    this.playSpeed = val;\n    this.updaFrameModifier();\n  };\n\n  AnimationItem.prototype.setDirection = function (val) {\n    this.playDirection = val < 0 ? -1 : 1;\n    this.updaFrameModifier();\n  };\n\n  AnimationItem.prototype.setLoop = function (isLooping) {\n    this.loop = isLooping;\n  };\n\n  AnimationItem.prototype.setVolume = function (val, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.setVolume(val);\n  };\n\n  AnimationItem.prototype.getVolume = function () {\n    return this.audioController.getVolume();\n  };\n\n  AnimationItem.prototype.mute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.mute();\n  };\n\n  AnimationItem.prototype.unmute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.unmute();\n  };\n\n  AnimationItem.prototype.updaFrameModifier = function () {\n    this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n    this.audioController.setRate(this.playSpeed * this.playDirection);\n  };\n\n  AnimationItem.prototype.getPath = function () {\n    return this.path;\n  };\n\n  AnimationItem.prototype.getAssetsPath = function (assetData) {\n    var path = '';\n\n    if (assetData.e) {\n      path = assetData.p;\n    } else if (this.assetsPath) {\n      var imagePath = assetData.p;\n\n      if (imagePath.indexOf('images/') !== -1) {\n        imagePath = imagePath.split('/')[1];\n      }\n\n      path = this.assetsPath + imagePath;\n    } else {\n      path = this.path;\n      path += assetData.u ? assetData.u : '';\n      path += assetData.p;\n    }\n\n    return path;\n  };\n\n  AnimationItem.prototype.getAssetData = function (id) {\n    var i = 0;\n    var len = this.assets.length;\n\n    while (i < len) {\n      if (id === this.assets[i].id) {\n        return this.assets[i];\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  AnimationItem.prototype.hide = function () {\n    this.renderer.hide();\n  };\n\n  AnimationItem.prototype.show = function () {\n    this.renderer.show();\n  };\n\n  AnimationItem.prototype.getDuration = function (isFrame) {\n    return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n  };\n\n  AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n    try {\n      var element = this.renderer.getElementByPath(path);\n      element.updateDocumentData(documentData, index);\n    } catch (error) {// TODO: decide how to handle catch case\n    }\n  };\n\n  AnimationItem.prototype.trigger = function (name) {\n    if (this._cbs && this._cbs[name]) {\n      switch (name) {\n        case 'enterFrame':\n          this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n          break;\n\n        case 'drawnFrame':\n          this.drawnFrameEvent.currentTime = this.currentFrame;\n          this.drawnFrameEvent.totalTime = this.totalFrames;\n          this.drawnFrameEvent.direction = this.frameModifier;\n          this.triggerEvent(name, this.drawnFrameEvent);\n          break;\n\n        case 'loopComplete':\n          this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n          break;\n\n        case 'complete':\n          this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n          break;\n\n        case 'segmentStart':\n          this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n          break;\n\n        case 'destroy':\n          this.triggerEvent(name, new BMDestroyEvent(name, this));\n          break;\n\n        default:\n          this.triggerEvent(name);\n      }\n    }\n\n    if (name === 'enterFrame' && this.onEnterFrame) {\n      this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n    }\n\n    if (name === 'loopComplete' && this.onLoopComplete) {\n      this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n    }\n\n    if (name === 'complete' && this.onComplete) {\n      this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n    }\n\n    if (name === 'segmentStart' && this.onSegmentStart) {\n      this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n    }\n\n    if (name === 'destroy' && this.onDestroy) {\n      this.onDestroy.call(this, new BMDestroyEvent(name, this));\n    }\n  };\n\n  AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n    var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n\n  AnimationItem.prototype.triggerConfigError = function (nativeError) {\n    var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n\n  var animationManager = function () {\n    var moduleOb = {};\n    var registeredAnimations = [];\n    var initTime = 0;\n    var len = 0;\n    var playingAnimationsNum = 0;\n    var _stopped = true;\n    var _isFrozen = false;\n\n    function removeElement(ev) {\n      var i = 0;\n      var animItem = ev.target;\n\n      while (i < len) {\n        if (registeredAnimations[i].animation === animItem) {\n          registeredAnimations.splice(i, 1);\n          i -= 1;\n          len -= 1;\n\n          if (!animItem.isPaused) {\n            subtractPlayingCount();\n          }\n        }\n\n        i += 1;\n      }\n    }\n\n    function registerAnimation(element, animationData) {\n      if (!element) {\n        return null;\n      }\n\n      var i = 0;\n\n      while (i < len) {\n        if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n          return registeredAnimations[i].animation;\n        }\n\n        i += 1;\n      }\n\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, element);\n      animItem.setData(element, animationData);\n      return animItem;\n    }\n\n    function getRegisteredAnimations() {\n      var i;\n      var lenAnims = registeredAnimations.length;\n      var animations = [];\n\n      for (i = 0; i < lenAnims; i += 1) {\n        animations.push(registeredAnimations[i].animation);\n      }\n\n      return animations;\n    }\n\n    function addPlayingCount() {\n      playingAnimationsNum += 1;\n      activate();\n    }\n\n    function subtractPlayingCount() {\n      playingAnimationsNum -= 1;\n    }\n\n    function setupAnimation(animItem, element) {\n      animItem.addEventListener('destroy', removeElement);\n      animItem.addEventListener('_active', addPlayingCount);\n      animItem.addEventListener('_idle', subtractPlayingCount);\n      registeredAnimations.push({\n        elem: element,\n        animation: animItem\n      });\n      len += 1;\n    }\n\n    function loadAnimation(params) {\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, null);\n      animItem.setParams(params);\n      return animItem;\n    }\n\n    function setSpeed(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setSpeed(val, animation);\n      }\n    }\n\n    function setDirection(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setDirection(val, animation);\n      }\n    }\n\n    function play(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.play(animation);\n      }\n    }\n\n    function resume(nowTime) {\n      var elapsedTime = nowTime - initTime;\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.advanceTime(elapsedTime);\n      }\n\n      initTime = nowTime;\n\n      if (playingAnimationsNum && !_isFrozen) {\n        window.requestAnimationFrame(resume);\n      } else {\n        _stopped = true;\n      }\n    }\n\n    function first(nowTime) {\n      initTime = nowTime;\n      window.requestAnimationFrame(resume);\n    }\n\n    function pause(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.pause(animation);\n      }\n    }\n\n    function goToAndStop(value, isFrame, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n      }\n    }\n\n    function stop(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.stop(animation);\n      }\n    }\n\n    function togglePause(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.togglePause(animation);\n      }\n    }\n\n    function destroy(animation) {\n      var i;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        registeredAnimations[i].animation.destroy(animation);\n      }\n    }\n\n    function searchAnimations(animationData, standalone, renderer) {\n      var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n      var i;\n      var lenAnims = animElements.length;\n\n      for (i = 0; i < lenAnims; i += 1) {\n        if (renderer) {\n          animElements[i].setAttribute('data-bm-type', renderer);\n        }\n\n        registerAnimation(animElements[i], animationData);\n      }\n\n      if (standalone && lenAnims === 0) {\n        if (!renderer) {\n          renderer = 'svg';\n        }\n\n        var body = document.getElementsByTagName('body')[0];\n        body.innerText = '';\n        var div = createTag('div');\n        div.style.width = '100%';\n        div.style.height = '100%';\n        div.setAttribute('data-bm-type', renderer);\n        body.appendChild(div);\n        registerAnimation(div, animationData);\n      }\n    }\n\n    function resize() {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.resize();\n      }\n    }\n\n    function activate() {\n      if (!_isFrozen && playingAnimationsNum) {\n        if (_stopped) {\n          window.requestAnimationFrame(first);\n          _stopped = false;\n        }\n      }\n    }\n\n    function freeze() {\n      _isFrozen = true;\n    }\n\n    function unfreeze() {\n      _isFrozen = false;\n      activate();\n    }\n\n    function setVolume(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setVolume(val, animation);\n      }\n    }\n\n    function mute(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.mute(animation);\n      }\n    }\n\n    function unmute(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.unmute(animation);\n      }\n    }\n\n    moduleOb.registerAnimation = registerAnimation;\n    moduleOb.loadAnimation = loadAnimation;\n    moduleOb.setSpeed = setSpeed;\n    moduleOb.setDirection = setDirection;\n    moduleOb.play = play;\n    moduleOb.pause = pause;\n    moduleOb.stop = stop;\n    moduleOb.togglePause = togglePause;\n    moduleOb.searchAnimations = searchAnimations;\n    moduleOb.resize = resize; // moduleOb.start = start;\n\n    moduleOb.goToAndStop = goToAndStop;\n    moduleOb.destroy = destroy;\n    moduleOb.freeze = freeze;\n    moduleOb.unfreeze = unfreeze;\n    moduleOb.setVolume = setVolume;\n    moduleOb.mute = mute;\n    moduleOb.unmute = unmute;\n    moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n    return moduleOb;\n  }();\n\n  /* eslint-disable */\n  var BezierFactory = function () {\n    /**\r\n       * BezierEasing - use bezier curve for transition easing function\r\n       * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n       *\r\n       * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n       * Usage:\r\n       * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n       * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n       *\r\n       */\n    var ob = {};\n    ob.getBezierEasing = getBezierEasing;\n    var beziers = {};\n\n    function getBezierEasing(a, b, c, d, nm) {\n      var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n      if (beziers[str]) {\n        return beziers[str];\n      }\n\n      var bezEasing = new BezierEasing([a, b, c, d]);\n      beziers[str] = bezEasing;\n      return bezEasing;\n    } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n    var NEWTON_ITERATIONS = 4;\n    var NEWTON_MIN_SLOPE = 0.001;\n    var SUBDIVISION_PRECISION = 0.0000001;\n    var SUBDIVISION_MAX_ITERATIONS = 10;\n    var kSplineTableSize = 11;\n    var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n    var float32ArraySupported = typeof Float32Array === 'function';\n\n    function A(aA1, aA2) {\n      return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n    }\n\n    function B(aA1, aA2) {\n      return 3.0 * aA2 - 6.0 * aA1;\n    }\n\n    function C(aA1) {\n      return 3.0 * aA1;\n    } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n    function calcBezier(aT, aA1, aA2) {\n      return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n    } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n    function getSlope(aT, aA1, aA2) {\n      return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n    }\n\n    function binarySubdivide(aX, aA, aB, mX1, mX2) {\n      var currentX,\n          currentT,\n          i = 0;\n\n      do {\n        currentT = aA + (aB - aA) / 2.0;\n        currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n        if (currentX > 0.0) {\n          aB = currentT;\n        } else {\n          aA = currentT;\n        }\n      } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n      return currentT;\n    }\n\n    function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n      for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n        var currentSlope = getSlope(aGuessT, mX1, mX2);\n        if (currentSlope === 0.0) return aGuessT;\n        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n        aGuessT -= currentX / currentSlope;\n      }\n\n      return aGuessT;\n    }\n    /**\r\n       * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n       */\n\n\n    function BezierEasing(points) {\n      this._p = points;\n      this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n      this._precomputed = false;\n      this.get = this.get.bind(this);\n    }\n\n    BezierEasing.prototype = {\n      get: function get(x) {\n        var mX1 = this._p[0],\n            mY1 = this._p[1],\n            mX2 = this._p[2],\n            mY2 = this._p[3];\n        if (!this._precomputed) this._precompute();\n        if (mX1 === mY1 && mX2 === mY2) return x; // linear\n        // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n        if (x === 0) return 0;\n        if (x === 1) return 1;\n        return calcBezier(this._getTForX(x), mY1, mY2);\n      },\n      // Private part\n      _precompute: function _precompute() {\n        var mX1 = this._p[0],\n            mY1 = this._p[1],\n            mX2 = this._p[2],\n            mY2 = this._p[3];\n        this._precomputed = true;\n\n        if (mX1 !== mY1 || mX2 !== mY2) {\n          this._calcSampleValues();\n        }\n      },\n      _calcSampleValues: function _calcSampleValues() {\n        var mX1 = this._p[0],\n            mX2 = this._p[2];\n\n        for (var i = 0; i < kSplineTableSize; ++i) {\n          this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n        }\n      },\n\n      /**\r\n           * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n           */\n      _getTForX: function _getTForX(aX) {\n        var mX1 = this._p[0],\n            mX2 = this._p[2],\n            mSampleValues = this._mSampleValues;\n        var intervalStart = 0.0;\n        var currentSample = 1;\n        var lastSample = kSplineTableSize - 1;\n\n        for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n          intervalStart += kSampleStepSize;\n        }\n\n        --currentSample; // Interpolate to provide an initial guess for t\n\n        var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n        var guessForT = intervalStart + dist * kSampleStepSize;\n        var initialSlope = getSlope(guessForT, mX1, mX2);\n\n        if (initialSlope >= NEWTON_MIN_SLOPE) {\n          return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n        }\n\n        if (initialSlope === 0.0) {\n          return guessForT;\n        }\n\n        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n      }\n    };\n    return ob;\n  }();\n\n  var pooling = function () {\n    function _double(arr) {\n      return arr.concat(createSizedArray(arr.length));\n    }\n\n    return {\n      \"double\": _double\n    };\n  }();\n\n  var poolFactory = function () {\n    return function (initialLength, _create, _release) {\n      var _length = 0;\n      var _maxLength = initialLength;\n      var pool = createSizedArray(_maxLength);\n      var ob = {\n        newElement: newElement,\n        release: release\n      };\n\n      function newElement() {\n        var element;\n\n        if (_length) {\n          _length -= 1;\n          element = pool[_length];\n        } else {\n          element = _create();\n        }\n\n        return element;\n      }\n\n      function release(element) {\n        if (_length === _maxLength) {\n          pool = pooling[\"double\"](pool);\n          _maxLength *= 2;\n        }\n\n        if (_release) {\n          _release(element);\n        }\n\n        pool[_length] = element;\n        _length += 1;\n      }\n\n      return ob;\n    };\n  }();\n\n  var bezierLengthPool = function () {\n    function create() {\n      return {\n        addedLength: 0,\n        percents: createTypedArray('float32', getDefaultCurveSegments()),\n        lengths: createTypedArray('float32', getDefaultCurveSegments())\n      };\n    }\n\n    return poolFactory(8, create);\n  }();\n\n  var segmentsLengthPool = function () {\n    function create() {\n      return {\n        lengths: [],\n        totalLength: 0\n      };\n    }\n\n    function release(element) {\n      var i;\n      var len = element.lengths.length;\n\n      for (i = 0; i < len; i += 1) {\n        bezierLengthPool.release(element.lengths[i]);\n      }\n\n      element.lengths.length = 0;\n    }\n\n    return poolFactory(8, create, release);\n  }();\n\n  function bezFunction() {\n    var math = Math;\n\n    function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n      var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n      return det1 > -0.001 && det1 < 0.001;\n    }\n\n    function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n      if (z1 === 0 && z2 === 0 && z3 === 0) {\n        return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n      }\n\n      var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n      var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n      var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n      var diffDist;\n\n      if (dist1 > dist2) {\n        if (dist1 > dist3) {\n          diffDist = dist1 - dist2 - dist3;\n        } else {\n          diffDist = dist3 - dist2 - dist1;\n        }\n      } else if (dist3 > dist2) {\n        diffDist = dist3 - dist2 - dist1;\n      } else {\n        diffDist = dist2 - dist1 - dist3;\n      }\n\n      return diffDist > -0.0001 && diffDist < 0.0001;\n    }\n\n    var getBezierLength = function () {\n      return function (pt1, pt2, pt3, pt4) {\n        var curveSegments = getDefaultCurveSegments();\n        var k;\n        var i;\n        var len;\n        var ptCoord;\n        var perc;\n        var addedLength = 0;\n        var ptDistance;\n        var point = [];\n        var lastPoint = [];\n        var lengthData = bezierLengthPool.newElement();\n        len = pt3.length;\n\n        for (k = 0; k < curveSegments; k += 1) {\n          perc = k / (curveSegments - 1);\n          ptDistance = 0;\n\n          for (i = 0; i < len; i += 1) {\n            ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n            point[i] = ptCoord;\n\n            if (lastPoint[i] !== null) {\n              ptDistance += bmPow(point[i] - lastPoint[i], 2);\n            }\n\n            lastPoint[i] = point[i];\n          }\n\n          if (ptDistance) {\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n          }\n\n          lengthData.percents[k] = perc;\n          lengthData.lengths[k] = addedLength;\n        }\n\n        lengthData.addedLength = addedLength;\n        return lengthData;\n      };\n    }();\n\n    function getSegmentsLength(shapeData) {\n      var segmentsLength = segmentsLengthPool.newElement();\n      var closed = shapeData.c;\n      var pathV = shapeData.v;\n      var pathO = shapeData.o;\n      var pathI = shapeData.i;\n      var i;\n      var len = shapeData._length;\n      var lengths = segmentsLength.lengths;\n      var totalLength = 0;\n\n      for (i = 0; i < len - 1; i += 1) {\n        lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n        totalLength += lengths[i].addedLength;\n      }\n\n      if (closed && len) {\n        lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n        totalLength += lengths[i].addedLength;\n      }\n\n      segmentsLength.totalLength = totalLength;\n      return segmentsLength;\n    }\n\n    function BezierData(length) {\n      this.segmentLength = 0;\n      this.points = new Array(length);\n    }\n\n    function PointData(partial, point) {\n      this.partialLength = partial;\n      this.point = point;\n    }\n\n    var buildBezierData = function () {\n      var storedData = {};\n      return function (pt1, pt2, pt3, pt4) {\n        var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n        if (!storedData[bezierName]) {\n          var curveSegments = getDefaultCurveSegments();\n          var k;\n          var i;\n          var len;\n          var ptCoord;\n          var perc;\n          var addedLength = 0;\n          var ptDistance;\n          var point;\n          var lastPoint = null;\n\n          if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n            curveSegments = 2;\n          }\n\n          var bezierData = new BezierData(curveSegments);\n          len = pt3.length;\n\n          for (k = 0; k < curveSegments; k += 1) {\n            point = createSizedArray(len);\n            perc = k / (curveSegments - 1);\n            ptDistance = 0;\n\n            for (i = 0; i < len; i += 1) {\n              ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n              point[i] = ptCoord;\n\n              if (lastPoint !== null) {\n                ptDistance += bmPow(point[i] - lastPoint[i], 2);\n              }\n            }\n\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n            bezierData.points[k] = new PointData(ptDistance, point);\n            lastPoint = point;\n          }\n\n          bezierData.segmentLength = addedLength;\n          storedData[bezierName] = bezierData;\n        }\n\n        return storedData[bezierName];\n      };\n    }();\n\n    function getDistancePerc(perc, bezierData) {\n      var percents = bezierData.percents;\n      var lengths = bezierData.lengths;\n      var len = percents.length;\n      var initPos = bmFloor((len - 1) * perc);\n      var lengthPos = perc * bezierData.addedLength;\n      var lPerc = 0;\n\n      if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n        return percents[initPos];\n      }\n\n      var dir = lengths[initPos] > lengthPos ? -1 : 1;\n      var flag = true;\n\n      while (flag) {\n        if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n          lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n          flag = false;\n        } else {\n          initPos += dir;\n        }\n\n        if (initPos < 0 || initPos >= len - 1) {\n          // FIX for TypedArrays that don't store floating point values with enough accuracy\n          if (initPos === len - 1) {\n            return percents[initPos];\n          }\n\n          flag = false;\n        }\n      }\n\n      return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n    }\n\n    function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n      var t1 = getDistancePerc(percent, bezierData);\n      var u1 = 1 - t1;\n      var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n      var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n      return [ptX, ptY];\n    }\n\n    var bezierSegmentPoints = createTypedArray('float32', 8);\n\n    function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n      if (startPerc < 0) {\n        startPerc = 0;\n      } else if (startPerc > 1) {\n        startPerc = 1;\n      }\n\n      var t0 = getDistancePerc(startPerc, bezierData);\n      endPerc = endPerc > 1 ? 1 : endPerc;\n      var t1 = getDistancePerc(endPerc, bezierData);\n      var i;\n      var len = pt1.length;\n      var u0 = 1 - t0;\n      var u1 = 1 - t1;\n      var u0u0u0 = u0 * u0 * u0;\n      var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n      var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n      var t0t0t0 = t0 * t0 * t0; //\n\n      var u0u0u1 = u0 * u0 * u1;\n      var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n      var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n      var t0t0t1 = t0 * t0 * t1; //\n\n      var u0u1u1 = u0 * u1 * u1;\n      var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n      var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n      var t0t1t1 = t0 * t1 * t1; //\n\n      var u1u1u1 = u1 * u1 * u1;\n      var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n      var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n      var t1t1t1 = t1 * t1 * t1;\n\n      for (i = 0; i < len; i += 1) {\n        bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n      }\n\n      return bezierSegmentPoints;\n    }\n\n    return {\n      getSegmentsLength: getSegmentsLength,\n      getNewSegment: getNewSegment,\n      getPointInSegment: getPointInSegment,\n      buildBezierData: buildBezierData,\n      pointOnLine2D: pointOnLine2D,\n      pointOnLine3D: pointOnLine3D\n    };\n  }\n\n  var bez = bezFunction();\n\n  var initFrame = initialDefaultFrame;\n  var mathAbs = Math.abs;\n\n  function interpolateValue(frameNum, caching) {\n    var offsetTime = this.offsetTime;\n    var newValue;\n\n    if (this.propType === 'multidimensional') {\n      newValue = createTypedArray('float32', this.pv.length);\n    }\n\n    var iterationIndex = caching.lastIndex;\n    var i = iterationIndex;\n    var len = this.keyframes.length - 1;\n    var flag = true;\n    var keyData;\n    var nextKeyData;\n    var keyframeMetadata;\n\n    while (flag) {\n      keyData = this.keyframes[i];\n      nextKeyData = this.keyframes[i + 1];\n\n      if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n        if (keyData.h) {\n          keyData = nextKeyData;\n        }\n\n        iterationIndex = 0;\n        break;\n      }\n\n      if (nextKeyData.t - offsetTime > frameNum) {\n        iterationIndex = i;\n        break;\n      }\n\n      if (i < len - 1) {\n        i += 1;\n      } else {\n        iterationIndex = 0;\n        flag = false;\n      }\n    }\n\n    keyframeMetadata = this.keyframesMetadata[i] || {};\n    var k;\n    var kLen;\n    var perc;\n    var jLen;\n    var j;\n    var fnc;\n    var nextKeyTime = nextKeyData.t - offsetTime;\n    var keyTime = keyData.t - offsetTime;\n    var endValue;\n\n    if (keyData.to) {\n      if (!keyframeMetadata.bezierData) {\n        keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n      }\n\n      var bezierData = keyframeMetadata.bezierData;\n\n      if (frameNum >= nextKeyTime || frameNum < keyTime) {\n        var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n        kLen = bezierData.points[ind].point.length;\n\n        for (k = 0; k < kLen; k += 1) {\n          newValue[k] = bezierData.points[ind].point[k];\n        } // caching._lastKeyframeIndex = -1;\n\n      } else {\n        if (keyframeMetadata.__fnct) {\n          fnc = keyframeMetadata.__fnct;\n        } else {\n          fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n          keyframeMetadata.__fnct = fnc;\n        }\n\n        perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n        var distanceInLine = bezierData.segmentLength * perc;\n        var segmentPerc;\n        var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n        j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n        flag = true;\n        jLen = bezierData.points.length;\n\n        while (flag) {\n          addedLength += bezierData.points[j].partialLength;\n\n          if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n            kLen = bezierData.points[j].point.length;\n\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k];\n            }\n\n            break;\n          } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n            segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n            kLen = bezierData.points[j].point.length;\n\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n            }\n\n            break;\n          }\n\n          if (j < jLen - 1) {\n            j += 1;\n          } else {\n            flag = false;\n          }\n        }\n\n        caching._lastPoint = j;\n        caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n        caching._lastKeyframeIndex = i;\n      }\n    } else {\n      var outX;\n      var outY;\n      var inX;\n      var inY;\n      var keyValue;\n      len = keyData.s.length;\n      endValue = nextKeyData.s || keyData.e;\n\n      if (this.sh && keyData.h !== 1) {\n        if (frameNum >= nextKeyTime) {\n          newValue[0] = endValue[0];\n          newValue[1] = endValue[1];\n          newValue[2] = endValue[2];\n        } else if (frameNum <= keyTime) {\n          newValue[0] = keyData.s[0];\n          newValue[1] = keyData.s[1];\n          newValue[2] = keyData.s[2];\n        } else {\n          var quatStart = createQuaternion(keyData.s);\n          var quatEnd = createQuaternion(endValue);\n          var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n          quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n        }\n      } else {\n        for (i = 0; i < len; i += 1) {\n          if (keyData.h !== 1) {\n            if (frameNum >= nextKeyTime) {\n              perc = 1;\n            } else if (frameNum < keyTime) {\n              perc = 0;\n            } else {\n              if (keyData.o.x.constructor === Array) {\n                if (!keyframeMetadata.__fnct) {\n                  keyframeMetadata.__fnct = [];\n                }\n\n                if (!keyframeMetadata.__fnct[i]) {\n                  outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n                  outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n                  inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n                  inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n                  fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                  keyframeMetadata.__fnct[i] = fnc;\n                } else {\n                  fnc = keyframeMetadata.__fnct[i];\n                }\n              } else if (!keyframeMetadata.__fnct) {\n                outX = keyData.o.x;\n                outY = keyData.o.y;\n                inX = keyData.i.x;\n                inY = keyData.i.y;\n                fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                keyData.keyframeMetadata = fnc;\n              } else {\n                fnc = keyframeMetadata.__fnct;\n              }\n\n              perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n            }\n          }\n\n          endValue = nextKeyData.s || keyData.e;\n          keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n          if (this.propType === 'multidimensional') {\n            newValue[i] = keyValue;\n          } else {\n            newValue = keyValue;\n          }\n        }\n      }\n    }\n\n    caching.lastIndex = iterationIndex;\n    return newValue;\n  } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n  function slerp(a, b, t) {\n    var out = [];\n    var ax = a[0];\n    var ay = a[1];\n    var az = a[2];\n    var aw = a[3];\n    var bx = b[0];\n    var by = b[1];\n    var bz = b[2];\n    var bw = b[3];\n    var omega;\n    var cosom;\n    var sinom;\n    var scale0;\n    var scale1;\n    cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n    if (cosom < 0.0) {\n      cosom = -cosom;\n      bx = -bx;\n      by = -by;\n      bz = -bz;\n      bw = -bw;\n    }\n\n    if (1.0 - cosom > 0.000001) {\n      omega = Math.acos(cosom);\n      sinom = Math.sin(omega);\n      scale0 = Math.sin((1.0 - t) * omega) / sinom;\n      scale1 = Math.sin(t * omega) / sinom;\n    } else {\n      scale0 = 1.0 - t;\n      scale1 = t;\n    }\n\n    out[0] = scale0 * ax + scale1 * bx;\n    out[1] = scale0 * ay + scale1 * by;\n    out[2] = scale0 * az + scale1 * bz;\n    out[3] = scale0 * aw + scale1 * bw;\n    return out;\n  }\n\n  function quaternionToEuler(out, quat) {\n    var qx = quat[0];\n    var qy = quat[1];\n    var qz = quat[2];\n    var qw = quat[3];\n    var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n    var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n    var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n    out[0] = heading / degToRads;\n    out[1] = attitude / degToRads;\n    out[2] = bank / degToRads;\n  }\n\n  function createQuaternion(values) {\n    var heading = values[0] * degToRads;\n    var attitude = values[1] * degToRads;\n    var bank = values[2] * degToRads;\n    var c1 = Math.cos(heading / 2);\n    var c2 = Math.cos(attitude / 2);\n    var c3 = Math.cos(bank / 2);\n    var s1 = Math.sin(heading / 2);\n    var s2 = Math.sin(attitude / 2);\n    var s3 = Math.sin(bank / 2);\n    var w = c1 * c2 * c3 - s1 * s2 * s3;\n    var x = s1 * s2 * c3 + c1 * c2 * s3;\n    var y = s1 * c2 * c3 + c1 * s2 * s3;\n    var z = c1 * s2 * c3 - s1 * c2 * s3;\n    return [x, y, z, w];\n  }\n\n  function getValueAtCurrentTime() {\n    var frameNum = this.comp.renderedFrame - this.offsetTime;\n    var initTime = this.keyframes[0].t - this.offsetTime;\n    var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n    if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n      if (this._caching.lastFrame >= frameNum) {\n        this._caching._lastKeyframeIndex = -1;\n        this._caching.lastIndex = 0;\n      }\n\n      var renderResult = this.interpolateValue(frameNum, this._caching);\n      this.pv = renderResult;\n    }\n\n    this._caching.lastFrame = frameNum;\n    return this.pv;\n  }\n\n  function setVValue(val) {\n    var multipliedValue;\n\n    if (this.propType === 'unidimensional') {\n      multipliedValue = val * this.mult;\n\n      if (mathAbs(this.v - multipliedValue) > 0.00001) {\n        this.v = multipliedValue;\n        this._mdf = true;\n      }\n    } else {\n      var i = 0;\n      var len = this.v.length;\n\n      while (i < len) {\n        multipliedValue = val[i] * this.mult;\n\n        if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n          this.v[i] = multipliedValue;\n          this._mdf = true;\n        }\n\n        i += 1;\n      }\n    }\n  }\n\n  function processEffectsSequence() {\n    if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n      return;\n    }\n\n    if (this.lock) {\n      this.setVValue(this.pv);\n      return;\n    }\n\n    this.lock = true;\n    this._mdf = this._isFirstFrame;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = this.kf ? this.pv : this.data.k;\n\n    for (i = 0; i < len; i += 1) {\n      finalValue = this.effectsSequence[i](finalValue);\n    }\n\n    this.setVValue(finalValue);\n    this._isFirstFrame = false;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  }\n\n  function addEffect(effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.container.addDynamicProperty(this);\n  }\n\n  function ValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this.v = mult ? data.k * mult : data.k;\n    this.pv = data.k;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.vel = 0;\n    this.effectsSequence = [];\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n\n  function MultiDimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.frameId = -1;\n    var i;\n    var len = data.k.length;\n    this.v = createTypedArray('float32', len);\n    this.pv = createTypedArray('float32', len);\n    this.vel = createTypedArray('float32', len);\n\n    for (i = 0; i < len; i += 1) {\n      this.v[i] = data.k[i] * this.mult;\n      this.pv[i] = data.k[i];\n    }\n\n    this._isFirstFrame = true;\n    this.effectsSequence = [];\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n\n  function KeyframedValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.frameId = -1;\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: 0,\n      _lastKeyframeIndex: -1\n    };\n    this.k = true;\n    this.kf = true;\n    this.data = data;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.v = initFrame;\n    this.pv = initFrame;\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.addEffect = addEffect;\n  }\n\n  function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    var i;\n    var len = data.k.length;\n    var s;\n    var e;\n    var to;\n    var ti;\n\n    for (i = 0; i < len - 1; i += 1) {\n      if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n        s = data.k[i].s;\n        e = data.k[i + 1].s;\n        to = data.k[i].to;\n        ti = data.k[i].ti;\n\n        if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n          data.k[i].to = null;\n          data.k[i].ti = null;\n        }\n\n        if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n          if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n            data.k[i].to = null;\n            data.k[i].ti = null;\n          }\n        }\n      }\n    }\n\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.data = data;\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.k = true;\n    this.kf = true;\n    this._isFirstFrame = true;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.frameId = -1;\n    var arrLen = data.k[0].s.length;\n    this.v = createTypedArray('float32', arrLen);\n    this.pv = createTypedArray('float32', arrLen);\n\n    for (i = 0; i < arrLen; i += 1) {\n      this.v[i] = initFrame;\n      this.pv[i] = initFrame;\n    }\n\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: createTypedArray('float32', arrLen)\n    };\n    this.addEffect = addEffect;\n  }\n\n  var PropertyFactory = function () {\n    function getProp(elem, data, type, mult, container) {\n      if (data.sid) {\n        data = elem.globalData.slotManager.getProp(data);\n      }\n\n      var p;\n\n      if (!data.k.length) {\n        p = new ValueProperty(elem, data, mult, container);\n      } else if (typeof data.k[0] === 'number') {\n        p = new MultiDimensionalProperty(elem, data, mult, container);\n      } else {\n        switch (type) {\n          case 0:\n            p = new KeyframedValueProperty(elem, data, mult, container);\n            break;\n\n          case 1:\n            p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n            break;\n\n          default:\n            break;\n        }\n      }\n\n      if (p.effectsSequence.length) {\n        container.addDynamicProperty(p);\n      }\n\n      return p;\n    }\n\n    var ob = {\n      getProp: getProp\n    };\n    return ob;\n  }();\n\n  function DynamicPropertyContainer() {}\n\n  DynamicPropertyContainer.prototype = {\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n        this.container.addDynamicProperty(this);\n        this._isAnimated = true;\n      }\n    },\n    iterateDynamicProperties: function iterateDynamicProperties() {\n      this._mdf = false;\n      var i;\n      var len = this.dynamicProperties.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.dynamicProperties[i].getValue();\n\n        if (this.dynamicProperties[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    },\n    initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n      this.container = container;\n      this.dynamicProperties = [];\n      this._mdf = false;\n      this._isAnimated = false;\n    }\n  };\n\n  var pointPool = function () {\n    function create() {\n      return createTypedArray('float32', 2);\n    }\n\n    return poolFactory(8, create);\n  }();\n\n  function ShapePath() {\n    this.c = false;\n    this._length = 0;\n    this._maxLength = 8;\n    this.v = createSizedArray(this._maxLength);\n    this.o = createSizedArray(this._maxLength);\n    this.i = createSizedArray(this._maxLength);\n  }\n\n  ShapePath.prototype.setPathData = function (closed, len) {\n    this.c = closed;\n    this.setLength(len);\n    var i = 0;\n\n    while (i < len) {\n      this.v[i] = pointPool.newElement();\n      this.o[i] = pointPool.newElement();\n      this.i[i] = pointPool.newElement();\n      i += 1;\n    }\n  };\n\n  ShapePath.prototype.setLength = function (len) {\n    while (this._maxLength < len) {\n      this.doubleArrayLength();\n    }\n\n    this._length = len;\n  };\n\n  ShapePath.prototype.doubleArrayLength = function () {\n    this.v = this.v.concat(createSizedArray(this._maxLength));\n    this.i = this.i.concat(createSizedArray(this._maxLength));\n    this.o = this.o.concat(createSizedArray(this._maxLength));\n    this._maxLength *= 2;\n  };\n\n  ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n    var arr;\n    this._length = Math.max(this._length, pos + 1);\n\n    if (this._length >= this._maxLength) {\n      this.doubleArrayLength();\n    }\n\n    switch (type) {\n      case 'v':\n        arr = this.v;\n        break;\n\n      case 'i':\n        arr = this.i;\n        break;\n\n      case 'o':\n        arr = this.o;\n        break;\n\n      default:\n        arr = [];\n        break;\n    }\n\n    if (!arr[pos] || arr[pos] && !replace) {\n      arr[pos] = pointPool.newElement();\n    }\n\n    arr[pos][0] = x;\n    arr[pos][1] = y;\n  };\n\n  ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n    this.setXYAt(vX, vY, 'v', pos, replace);\n    this.setXYAt(oX, oY, 'o', pos, replace);\n    this.setXYAt(iX, iY, 'i', pos, replace);\n  };\n\n  ShapePath.prototype.reverse = function () {\n    var newPath = new ShapePath();\n    newPath.setPathData(this.c, this._length);\n    var vertices = this.v;\n    var outPoints = this.o;\n    var inPoints = this.i;\n    var init = 0;\n\n    if (this.c) {\n      newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n      init = 1;\n    }\n\n    var cnt = this._length - 1;\n    var len = this._length;\n    var i;\n\n    for (i = init; i < len; i += 1) {\n      newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n      cnt -= 1;\n    }\n\n    return newPath;\n  };\n\n  ShapePath.prototype.length = function () {\n    return this._length;\n  };\n\n  var shapePool = function () {\n    function create() {\n      return new ShapePath();\n    }\n\n    function release(shapePath) {\n      var len = shapePath._length;\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        pointPool.release(shapePath.v[i]);\n        pointPool.release(shapePath.i[i]);\n        pointPool.release(shapePath.o[i]);\n        shapePath.v[i] = null;\n        shapePath.i[i] = null;\n        shapePath.o[i] = null;\n      }\n\n      shapePath._length = 0;\n      shapePath.c = false;\n    }\n\n    function clone(shape) {\n      var cloned = factory.newElement();\n      var i;\n      var len = shape._length === undefined ? shape.v.length : shape._length;\n      cloned.setLength(len);\n      cloned.c = shape.c;\n\n      for (i = 0; i < len; i += 1) {\n        cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n      }\n\n      return cloned;\n    }\n\n    var factory = poolFactory(4, create, release);\n    factory.clone = clone;\n    return factory;\n  }();\n\n  function ShapeCollection() {\n    this._length = 0;\n    this._maxLength = 4;\n    this.shapes = createSizedArray(this._maxLength);\n  }\n\n  ShapeCollection.prototype.addShape = function (shapeData) {\n    if (this._length === this._maxLength) {\n      this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n      this._maxLength *= 2;\n    }\n\n    this.shapes[this._length] = shapeData;\n    this._length += 1;\n  };\n\n  ShapeCollection.prototype.releaseShapes = function () {\n    var i;\n\n    for (i = 0; i < this._length; i += 1) {\n      shapePool.release(this.shapes[i]);\n    }\n\n    this._length = 0;\n  };\n\n  var shapeCollectionPool = function () {\n    var ob = {\n      newShapeCollection: newShapeCollection,\n      release: release\n    };\n    var _length = 0;\n    var _maxLength = 4;\n    var pool = createSizedArray(_maxLength);\n\n    function newShapeCollection() {\n      var shapeCollection;\n\n      if (_length) {\n        _length -= 1;\n        shapeCollection = pool[_length];\n      } else {\n        shapeCollection = new ShapeCollection();\n      }\n\n      return shapeCollection;\n    }\n\n    function release(shapeCollection) {\n      var i;\n      var len = shapeCollection._length;\n\n      for (i = 0; i < len; i += 1) {\n        shapePool.release(shapeCollection.shapes[i]);\n      }\n\n      shapeCollection._length = 0;\n\n      if (_length === _maxLength) {\n        pool = pooling[\"double\"](pool);\n        _maxLength *= 2;\n      }\n\n      pool[_length] = shapeCollection;\n      _length += 1;\n    }\n\n    return ob;\n  }();\n\n  var ShapePropertyFactory = function () {\n    var initFrame = -999999;\n\n    function interpolateShape(frameNum, previousValue, caching) {\n      var iterationIndex = caching.lastIndex;\n      var keyPropS;\n      var keyPropE;\n      var isHold;\n      var j;\n      var k;\n      var jLen;\n      var kLen;\n      var perc;\n      var vertexValue;\n      var kf = this.keyframes;\n\n      if (frameNum < kf[0].t - this.offsetTime) {\n        keyPropS = kf[0].s[0];\n        isHold = true;\n        iterationIndex = 0;\n      } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n        keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n        /* if(kf[kf.length - 1].s){\r\n                  keyPropS = kf[kf.length - 1].s[0];\r\n              }else{\r\n                  keyPropS = kf[kf.length - 2].e[0];\r\n              } */\n\n        isHold = true;\n      } else {\n        var i = iterationIndex;\n        var len = kf.length - 1;\n        var flag = true;\n        var keyData;\n        var nextKeyData;\n        var keyframeMetadata;\n\n        while (flag) {\n          keyData = kf[i];\n          nextKeyData = kf[i + 1];\n\n          if (nextKeyData.t - this.offsetTime > frameNum) {\n            break;\n          }\n\n          if (i < len - 1) {\n            i += 1;\n          } else {\n            flag = false;\n          }\n        }\n\n        keyframeMetadata = this.keyframesMetadata[i] || {};\n        isHold = keyData.h === 1;\n        iterationIndex = i;\n\n        if (!isHold) {\n          if (frameNum >= nextKeyData.t - this.offsetTime) {\n            perc = 1;\n          } else if (frameNum < keyData.t - this.offsetTime) {\n            perc = 0;\n          } else {\n            var fnc;\n\n            if (keyframeMetadata.__fnct) {\n              fnc = keyframeMetadata.__fnct;\n            } else {\n              fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n              keyframeMetadata.__fnct = fnc;\n            }\n\n            perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n          }\n\n          keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n        }\n\n        keyPropS = keyData.s[0];\n      }\n\n      jLen = previousValue._length;\n      kLen = keyPropS.i[0].length;\n      caching.lastIndex = iterationIndex;\n\n      for (j = 0; j < jLen; j += 1) {\n        for (k = 0; k < kLen; k += 1) {\n          vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n          previousValue.i[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n          previousValue.o[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n          previousValue.v[j][k] = vertexValue;\n        }\n      }\n    }\n\n    function interpolateShapeCurrentTime() {\n      var frameNum = this.comp.renderedFrame - this.offsetTime;\n      var initTime = this.keyframes[0].t - this.offsetTime;\n      var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n      var lastFrame = this._caching.lastFrame;\n\n      if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n        /// /\n        this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n        this.interpolateShape(frameNum, this.pv, this._caching); /// /\n      }\n\n      this._caching.lastFrame = frameNum;\n      return this.pv;\n    }\n\n    function resetShape() {\n      this.paths = this.localShapeCollection;\n    }\n\n    function shapesEqual(shape1, shape2) {\n      if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n        return false;\n      }\n\n      var i;\n      var len = shape1._length;\n\n      for (i = 0; i < len; i += 1) {\n        if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    function setVValue(newPath) {\n      if (!shapesEqual(this.v, newPath)) {\n        this.v = shapePool.clone(newPath);\n        this.localShapeCollection.releaseShapes();\n        this.localShapeCollection.addShape(this.v);\n        this._mdf = true;\n        this.paths = this.localShapeCollection;\n      }\n    }\n\n    function processEffectsSequence() {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n\n      if (!this.effectsSequence.length) {\n        this._mdf = false;\n        return;\n      }\n\n      if (this.lock) {\n        this.setVValue(this.pv);\n        return;\n      }\n\n      this.lock = true;\n      this._mdf = false;\n      var finalValue;\n\n      if (this.kf) {\n        finalValue = this.pv;\n      } else if (this.data.ks) {\n        finalValue = this.data.ks.k;\n      } else {\n        finalValue = this.data.pt.k;\n      }\n\n      var i;\n      var len = this.effectsSequence.length;\n\n      for (i = 0; i < len; i += 1) {\n        finalValue = this.effectsSequence[i](finalValue);\n      }\n\n      this.setVValue(finalValue);\n      this.lock = false;\n      this.frameId = this.elem.globalData.frameId;\n    }\n\n    function ShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.container = elem;\n      this.elem = elem;\n      this.data = data;\n      this.k = false;\n      this.kf = false;\n      this._mdf = false;\n      var pathData = type === 3 ? data.pt.k : data.ks.k;\n      this.v = shapePool.clone(pathData);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.reset = resetShape;\n      this.effectsSequence = [];\n    }\n\n    function addEffect(effectFunction) {\n      this.effectsSequence.push(effectFunction);\n      this.container.addDynamicProperty(this);\n    }\n\n    ShapeProperty.prototype.interpolateShape = interpolateShape;\n    ShapeProperty.prototype.getValue = processEffectsSequence;\n    ShapeProperty.prototype.setVValue = setVValue;\n    ShapeProperty.prototype.addEffect = addEffect;\n\n    function KeyframedShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.elem = elem;\n      this.container = elem;\n      this.offsetTime = elem.data.st;\n      this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n      this.keyframesMetadata = [];\n      this.k = true;\n      this.kf = true;\n      var len = this.keyframes[0].s[0].i.length;\n      this.v = shapePool.newElement();\n      this.v.setPathData(this.keyframes[0].s[0].c, len);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.lastFrame = initFrame;\n      this.reset = resetShape;\n      this._caching = {\n        lastFrame: initFrame,\n        lastIndex: 0\n      };\n      this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n    }\n\n    KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n    KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n    KeyframedShapeProperty.prototype.setVValue = setVValue;\n    KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n    var EllShapeProperty = function () {\n      var cPoint = roundCorner;\n\n      function EllShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 4);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.paths = this.localShapeCollection;\n        this.localShapeCollection.addShape(this.v);\n        this.d = data.d;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertEllToPath();\n        }\n      }\n\n      EllShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertEllToPath();\n          }\n        },\n        convertEllToPath: function convertEllToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var s0 = this.s.v[0] / 2;\n          var s1 = this.s.v[1] / 2;\n\n          var _cw = this.d !== 3;\n\n          var _v = this.v;\n          _v.v[0][0] = p0;\n          _v.v[0][1] = p1 - s1;\n          _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.v[1][1] = p1;\n          _v.v[2][0] = p0;\n          _v.v[2][1] = p1 + s1;\n          _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.v[3][1] = p1;\n          _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.i[0][1] = p1 - s1;\n          _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.i[1][1] = p1 - s1 * cPoint;\n          _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.i[2][1] = p1 + s1;\n          _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.i[3][1] = p1 + s1 * cPoint;\n          _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.o[0][1] = p1 - s1;\n          _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.o[1][1] = p1 + s1 * cPoint;\n          _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.o[2][1] = p1 + s1;\n          _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.o[3][1] = p1 - s1 * cPoint;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n      return EllShapePropertyFactory;\n    }();\n\n    var StarShapeProperty = function () {\n      function StarShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 0);\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.data = data;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n\n        if (data.sy === 1) {\n          this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n          this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n          this.convertToPath = this.convertStarToPath;\n        } else {\n          this.convertToPath = this.convertPolygonToPath;\n        }\n\n        this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n        this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n        this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertToPath();\n        }\n      }\n\n      StarShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertToPath();\n          }\n        },\n        convertStarToPath: function convertStarToPath() {\n          var numPts = Math.floor(this.pt.v) * 2;\n          var angle = Math.PI * 2 / numPts;\n          /* this.v.v.length = numPts;\r\n                  this.v.i.length = numPts;\r\n                  this.v.o.length = numPts; */\n\n          var longFlag = true;\n          var longRad = this.or.v;\n          var shortRad = this.ir.v;\n          var longRound = this.os.v;\n          var shortRound = this.is.v;\n          var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n          var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n          var i;\n          var rad;\n          var roundness;\n          var perimSegment;\n          var currentAng = -Math.PI / 2;\n          currentAng += this.r.v;\n          var dir = this.data.d === 3 ? -1 : 1;\n          this.v._length = 0;\n\n          for (i = 0; i < numPts; i += 1) {\n            rad = longFlag ? longRad : shortRad;\n            roundness = longFlag ? longRound : shortRound;\n            perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n            /* this.v.v[i] = [x,y];\r\n                      this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n                      this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n                      this.v._length = numPts; */\n\n            longFlag = !longFlag;\n            currentAng += angle * dir;\n          }\n        },\n        convertPolygonToPath: function convertPolygonToPath() {\n          var numPts = Math.floor(this.pt.v);\n          var angle = Math.PI * 2 / numPts;\n          var rad = this.or.v;\n          var roundness = this.os.v;\n          var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n          var i;\n          var currentAng = -Math.PI * 0.5;\n          var dir = this.data.d === 3 ? -1 : 1;\n          currentAng += this.r.v;\n          this.v._length = 0;\n\n          for (i = 0; i < numPts; i += 1) {\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n            currentAng += angle * dir;\n          }\n\n          this.paths.length = 0;\n          this.paths[0] = this.v;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n      return StarShapePropertyFactory;\n    }();\n\n    var RectShapeProperty = function () {\n      function RectShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.c = true;\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertRectToPath();\n        }\n      }\n\n      RectShapePropertyFactory.prototype = {\n        convertRectToPath: function convertRectToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var v0 = this.s.v[0] / 2;\n          var v1 = this.s.v[1] / 2;\n          var round = bmMin(v0, v1, this.r.v);\n          var cPoint = round * (1 - roundCorner);\n          this.v._length = 0;\n\n          if (this.d === 2 || this.d === 1) {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n            this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n            }\n          } else {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n            }\n          }\n        },\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertRectToPath();\n          }\n        },\n        reset: resetShape\n      };\n      extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n      return RectShapePropertyFactory;\n    }();\n\n    function getShapeProp(elem, data, type) {\n      var prop;\n\n      if (type === 3 || type === 4) {\n        var dataProp = type === 3 ? data.pt : data.ks;\n        var keys = dataProp.k;\n\n        if (keys.length) {\n          prop = new KeyframedShapeProperty(elem, data, type);\n        } else {\n          prop = new ShapeProperty(elem, data, type);\n        }\n      } else if (type === 5) {\n        prop = new RectShapeProperty(elem, data);\n      } else if (type === 6) {\n        prop = new EllShapeProperty(elem, data);\n      } else if (type === 7) {\n        prop = new StarShapeProperty(elem, data);\n      }\n\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n\n      return prop;\n    }\n\n    function getConstructorFunction() {\n      return ShapeProperty;\n    }\n\n    function getKeyframedConstructorFunction() {\n      return KeyframedShapeProperty;\n    }\n\n    var ob = {};\n    ob.getShapeProp = getShapeProp;\n    ob.getConstructorFunction = getConstructorFunction;\n    ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n    return ob;\n  }();\n\n  /*!\r\n   Transformation Matrix v2.0\r\n   (c) Epistemex 2014-2015\r\n   www.epistemex.com\r\n   By Ken Fyrstenberg\r\n   Contributions by leeoniya.\r\n   License: MIT, header required.\r\n   */\n\n  /**\r\n   * 2D transformation matrix object initialized with identity matrix.\r\n   *\r\n   * The matrix can synchronize a canvas context by supplying the context\r\n   * as an argument, or later apply current absolute transform to an\r\n   * existing context.\r\n   *\r\n   * All values are handled as floating point values.\r\n   *\r\n   * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n   * @prop {number} a - scale x\r\n   * @prop {number} b - shear y\r\n   * @prop {number} c - shear x\r\n   * @prop {number} d - scale y\r\n   * @prop {number} e - translate x\r\n   * @prop {number} f - translate y\r\n   * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n   * @constructor\r\n   */\n\n  var Matrix = function () {\n    var _cos = Math.cos;\n    var _sin = Math.sin;\n    var _tan = Math.tan;\n    var _rnd = Math.round;\n\n    function reset() {\n      this.props[0] = 1;\n      this.props[1] = 0;\n      this.props[2] = 0;\n      this.props[3] = 0;\n      this.props[4] = 0;\n      this.props[5] = 1;\n      this.props[6] = 0;\n      this.props[7] = 0;\n      this.props[8] = 0;\n      this.props[9] = 0;\n      this.props[10] = 1;\n      this.props[11] = 0;\n      this.props[12] = 0;\n      this.props[13] = 0;\n      this.props[14] = 0;\n      this.props[15] = 1;\n      return this;\n    }\n\n    function rotate(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n\n    function rotateX(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n    }\n\n    function rotateY(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n    }\n\n    function rotateZ(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n\n    function shear(sx, sy) {\n      return this._t(1, sy, sx, 1, 0, 0);\n    }\n\n    function skew(ax, ay) {\n      return this.shear(_tan(ax), _tan(ay));\n    }\n\n    function skewFromAxis(ax, angle) {\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n    }\n\n    function scale(sx, sy, sz) {\n      if (!sz && sz !== 0) {\n        sz = 1;\n      }\n\n      if (sx === 1 && sy === 1 && sz === 1) {\n        return this;\n      }\n\n      return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n    }\n\n    function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n      this.props[0] = a;\n      this.props[1] = b;\n      this.props[2] = c;\n      this.props[3] = d;\n      this.props[4] = e;\n      this.props[5] = f;\n      this.props[6] = g;\n      this.props[7] = h;\n      this.props[8] = i;\n      this.props[9] = j;\n      this.props[10] = k;\n      this.props[11] = l;\n      this.props[12] = m;\n      this.props[13] = n;\n      this.props[14] = o;\n      this.props[15] = p;\n      return this;\n    }\n\n    function translate(tx, ty, tz) {\n      tz = tz || 0;\n\n      if (tx !== 0 || ty !== 0 || tz !== 0) {\n        return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n      }\n\n      return this;\n    }\n\n    function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n      var _p = this.props;\n\n      if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n        // NOTE: commenting this condition because TurboFan deoptimizes code when present\n        // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n        _p[12] = _p[12] * a2 + _p[15] * m2;\n        _p[13] = _p[13] * f2 + _p[15] * n2;\n        _p[14] = _p[14] * k2 + _p[15] * o2;\n        _p[15] *= p2; // }\n\n        this._identityCalculated = false;\n        return this;\n      }\n\n      var a1 = _p[0];\n      var b1 = _p[1];\n      var c1 = _p[2];\n      var d1 = _p[3];\n      var e1 = _p[4];\n      var f1 = _p[5];\n      var g1 = _p[6];\n      var h1 = _p[7];\n      var i1 = _p[8];\n      var j1 = _p[9];\n      var k1 = _p[10];\n      var l1 = _p[11];\n      var m1 = _p[12];\n      var n1 = _p[13];\n      var o1 = _p[14];\n      var p1 = _p[15];\n      /* matrix order (canvas compatible):\r\n           * ace\r\n           * bdf\r\n           * 001\r\n           */\n\n      _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n      _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n      _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n      _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n      _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n      _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n      _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n      _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n      _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n      _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n      _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n      _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n      _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n      _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n      _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n      _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n      this._identityCalculated = false;\n      return this;\n    }\n\n    function multiply(matrix) {\n      var matrixProps = matrix.props;\n      return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n    }\n\n    function isIdentity() {\n      if (!this._identityCalculated) {\n        this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n        this._identityCalculated = true;\n      }\n\n      return this._identity;\n    }\n\n    function equals(matr) {\n      var i = 0;\n\n      while (i < 16) {\n        if (matr.props[i] !== this.props[i]) {\n          return false;\n        }\n\n        i += 1;\n      }\n\n      return true;\n    }\n\n    function clone(matr) {\n      var i;\n\n      for (i = 0; i < 16; i += 1) {\n        matr.props[i] = this.props[i];\n      }\n\n      return matr;\n    }\n\n    function cloneFromProps(props) {\n      var i;\n\n      for (i = 0; i < 16; i += 1) {\n        this.props[i] = props[i];\n      }\n    }\n\n    function applyToPoint(x, y, z) {\n      return {\n        x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n        y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n        z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n      };\n      /* return {\r\n           x: x * me.a + y * me.c + me.e,\r\n           y: x * me.b + y * me.d + me.f\r\n           }; */\n    }\n\n    function applyToX(x, y, z) {\n      return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n    }\n\n    function applyToY(x, y, z) {\n      return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n    }\n\n    function applyToZ(x, y, z) {\n      return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n    }\n\n    function getInverseMatrix() {\n      var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n      var a = this.props[5] / determinant;\n      var b = -this.props[1] / determinant;\n      var c = -this.props[4] / determinant;\n      var d = this.props[0] / determinant;\n      var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n      var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n      var inverseMatrix = new Matrix();\n      inverseMatrix.props[0] = a;\n      inverseMatrix.props[1] = b;\n      inverseMatrix.props[4] = c;\n      inverseMatrix.props[5] = d;\n      inverseMatrix.props[12] = e;\n      inverseMatrix.props[13] = f;\n      return inverseMatrix;\n    }\n\n    function inversePoint(pt) {\n      var inverseMatrix = this.getInverseMatrix();\n      return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n    }\n\n    function inversePoints(pts) {\n      var i;\n      var len = pts.length;\n      var retPts = [];\n\n      for (i = 0; i < len; i += 1) {\n        retPts[i] = inversePoint(pts[i]);\n      }\n\n      return retPts;\n    }\n\n    function applyToTriplePoints(pt1, pt2, pt3) {\n      var arr = createTypedArray('float32', 6);\n\n      if (this.isIdentity()) {\n        arr[0] = pt1[0];\n        arr[1] = pt1[1];\n        arr[2] = pt2[0];\n        arr[3] = pt2[1];\n        arr[4] = pt3[0];\n        arr[5] = pt3[1];\n      } else {\n        var p0 = this.props[0];\n        var p1 = this.props[1];\n        var p4 = this.props[4];\n        var p5 = this.props[5];\n        var p12 = this.props[12];\n        var p13 = this.props[13];\n        arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n        arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n        arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n        arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n        arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n        arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n      }\n\n      return arr;\n    }\n\n    function applyToPointArray(x, y, z) {\n      var arr;\n\n      if (this.isIdentity()) {\n        arr = [x, y, z];\n      } else {\n        arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n      }\n\n      return arr;\n    }\n\n    function applyToPointStringified(x, y) {\n      if (this.isIdentity()) {\n        return x + ',' + y;\n      }\n\n      var _p = this.props;\n      return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n    }\n\n    function toCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\n      var i = 0;\n      var props = this.props;\n      var cssValue = 'matrix3d(';\n      var v = 10000;\n\n      while (i < 16) {\n        cssValue += _rnd(props[i] * v) / v;\n        cssValue += i === 15 ? ')' : ',';\n        i += 1;\n      }\n\n      return cssValue;\n    }\n\n    function roundMatrixProperty(val) {\n      var v = 10000;\n\n      if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n        return _rnd(val * v) / v;\n      }\n\n      return val;\n    }\n\n    function to2dCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\n      var props = this.props;\n\n      var _a = roundMatrixProperty(props[0]);\n\n      var _b = roundMatrixProperty(props[1]);\n\n      var _c = roundMatrixProperty(props[4]);\n\n      var _d = roundMatrixProperty(props[5]);\n\n      var _e = roundMatrixProperty(props[12]);\n\n      var _f = roundMatrixProperty(props[13]);\n\n      return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n    }\n\n    return function () {\n      this.reset = reset;\n      this.rotate = rotate;\n      this.rotateX = rotateX;\n      this.rotateY = rotateY;\n      this.rotateZ = rotateZ;\n      this.skew = skew;\n      this.skewFromAxis = skewFromAxis;\n      this.shear = shear;\n      this.scale = scale;\n      this.setTransform = setTransform;\n      this.translate = translate;\n      this.transform = transform;\n      this.multiply = multiply;\n      this.applyToPoint = applyToPoint;\n      this.applyToX = applyToX;\n      this.applyToY = applyToY;\n      this.applyToZ = applyToZ;\n      this.applyToPointArray = applyToPointArray;\n      this.applyToTriplePoints = applyToTriplePoints;\n      this.applyToPointStringified = applyToPointStringified;\n      this.toCSS = toCSS;\n      this.to2dCSS = to2dCSS;\n      this.clone = clone;\n      this.cloneFromProps = cloneFromProps;\n      this.equals = equals;\n      this.inversePoints = inversePoints;\n      this.inversePoint = inversePoint;\n      this.getInverseMatrix = getInverseMatrix;\n      this._t = this.transform;\n      this.isIdentity = isIdentity;\n      this._identity = true;\n      this._identityCalculated = false;\n      this.props = createTypedArray('float32', 16);\n      this.reset();\n    };\n  }();\n\n  function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n  var lottie = {};\n  var standalone = '__[STANDALONE]__';\n  var animationData = '__[ANIMATIONDATA]__';\n  var renderer = '';\n\n  function setLocation(href) {\n    setLocationHref(href);\n  }\n\n  function searchAnimations() {\n    if (standalone === true) {\n      animationManager.searchAnimations(animationData, standalone, renderer);\n    } else {\n      animationManager.searchAnimations();\n    }\n  }\n\n  function setSubframeRendering(flag) {\n    setSubframeEnabled(flag);\n  }\n\n  function setPrefix(prefix) {\n    setIdPrefix(prefix);\n  }\n\n  function loadAnimation(params) {\n    if (standalone === true) {\n      params.animationData = JSON.parse(animationData);\n    }\n\n    return animationManager.loadAnimation(params);\n  }\n\n  function setQuality(value) {\n    if (typeof value === 'string') {\n      switch (value) {\n        case 'high':\n          setDefaultCurveSegments(200);\n          break;\n\n        default:\n        case 'medium':\n          setDefaultCurveSegments(50);\n          break;\n\n        case 'low':\n          setDefaultCurveSegments(10);\n          break;\n      }\n    } else if (!isNaN(value) && value > 1) {\n      setDefaultCurveSegments(value);\n    }\n\n    if (getDefaultCurveSegments() >= 50) {\n      roundValues(false);\n    } else {\n      roundValues(true);\n    }\n  }\n\n  function inBrowser() {\n    return typeof navigator !== 'undefined';\n  }\n\n  function installPlugin(type, plugin) {\n    if (type === 'expressions') {\n      setExpressionsPlugin(plugin);\n    }\n  }\n\n  function getFactory(name) {\n    switch (name) {\n      case 'propertyFactory':\n        return PropertyFactory;\n\n      case 'shapePropertyFactory':\n        return ShapePropertyFactory;\n\n      case 'matrix':\n        return Matrix;\n\n      default:\n        return null;\n    }\n  }\n\n  lottie.play = animationManager.play;\n  lottie.pause = animationManager.pause;\n  lottie.setLocationHref = setLocation;\n  lottie.togglePause = animationManager.togglePause;\n  lottie.setSpeed = animationManager.setSpeed;\n  lottie.setDirection = animationManager.setDirection;\n  lottie.stop = animationManager.stop;\n  lottie.searchAnimations = searchAnimations;\n  lottie.registerAnimation = animationManager.registerAnimation;\n  lottie.loadAnimation = loadAnimation;\n  lottie.setSubframeRendering = setSubframeRendering;\n  lottie.resize = animationManager.resize; // lottie.start = start;\n\n  lottie.goToAndStop = animationManager.goToAndStop;\n  lottie.destroy = animationManager.destroy;\n  lottie.setQuality = setQuality;\n  lottie.inBrowser = inBrowser;\n  lottie.installPlugin = installPlugin;\n  lottie.freeze = animationManager.freeze;\n  lottie.unfreeze = animationManager.unfreeze;\n  lottie.setVolume = animationManager.setVolume;\n  lottie.mute = animationManager.mute;\n  lottie.unmute = animationManager.unmute;\n  lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n  lottie.useWebWorker = setWebWorker;\n  lottie.setIDPrefix = setPrefix;\n  lottie.__getFactory = getFactory;\n  lottie.version = '5.12.2';\n\n  function checkReady() {\n    if (document.readyState === 'complete') {\n      clearInterval(readyStateCheckInterval);\n      searchAnimations();\n    }\n  }\n\n  function getQueryVariable(variable) {\n    var vars = queryString.split('&');\n\n    for (var i = 0; i < vars.length; i += 1) {\n      var pair = vars[i].split('=');\n\n      if (decodeURIComponent(pair[0]) == variable) {\n        // eslint-disable-line eqeqeq\n        return decodeURIComponent(pair[1]);\n      }\n    }\n\n    return null;\n  }\n\n  var queryString = '';\n\n  if (standalone) {\n    var scripts = document.getElementsByTagName('script');\n    var index = scripts.length - 1;\n    var myScript = scripts[index] || {\n      src: ''\n    };\n    queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n    renderer = getQueryVariable('renderer');\n  }\n\n  var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n  try {\n    if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n    ) {\n      window.bodymovin = lottie;\n    }\n  } catch (err) {//\n  }\n\n  var ShapeModifiers = function () {\n    var ob = {};\n    var modifiers = {};\n    ob.registerModifier = registerModifier;\n    ob.getModifier = getModifier;\n\n    function registerModifier(nm, factory) {\n      if (!modifiers[nm]) {\n        modifiers[nm] = factory;\n      }\n    }\n\n    function getModifier(nm, elem, data) {\n      return new modifiers[nm](elem, data);\n    }\n\n    return ob;\n  }();\n\n  function ShapeModifier() {}\n\n  ShapeModifier.prototype.initModifierProperties = function () {};\n\n  ShapeModifier.prototype.addShapeToModifier = function () {};\n\n  ShapeModifier.prototype.addShape = function (data) {\n    if (!this.closed) {\n      // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n      data.sh.container.addDynamicProperty(data.sh);\n      var shapeData = {\n        shape: data.sh,\n        data: data,\n        localShapeCollection: shapeCollectionPool.newShapeCollection()\n      };\n      this.shapes.push(shapeData);\n      this.addShapeToModifier(shapeData);\n\n      if (this._isAnimated) {\n        data.setAsAnimated();\n      }\n    }\n  };\n\n  ShapeModifier.prototype.init = function (elem, data) {\n    this.shapes = [];\n    this.elem = elem;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, data);\n    this.frameId = initialDefaultFrame;\n    this.closed = false;\n    this.k = false;\n\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n\n  ShapeModifier.prototype.processKeys = function () {\n    if (this.elem.globalData.frameId === this.frameId) {\n      return;\n    }\n\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n\n  extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n  function TrimModifier() {}\n\n  extendPrototype([ShapeModifier], TrimModifier);\n\n  TrimModifier.prototype.initModifierProperties = function (elem, data) {\n    this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n    this.sValue = 0;\n    this.eValue = 0;\n    this.getValue = this.processKeys;\n    this.m = data.m;\n    this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n  };\n\n  TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n    shapeData.pathsData = [];\n  };\n\n  TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n    var segments = [];\n\n    if (e <= 1) {\n      segments.push({\n        s: s,\n        e: e\n      });\n    } else if (s >= 1) {\n      segments.push({\n        s: s - 1,\n        e: e - 1\n      });\n    } else {\n      segments.push({\n        s: s,\n        e: 1\n      });\n      segments.push({\n        s: 0,\n        e: e - 1\n      });\n    }\n\n    var shapeSegments = [];\n    var i;\n    var len = segments.length;\n    var segmentOb;\n\n    for (i = 0; i < len; i += 1) {\n      segmentOb = segments[i];\n\n      if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n        var shapeS;\n        var shapeE;\n\n        if (segmentOb.s * totalModifierLength <= addedLength) {\n          shapeS = 0;\n        } else {\n          shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n        }\n\n        if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n          shapeE = 1;\n        } else {\n          shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n        }\n\n        shapeSegments.push([shapeS, shapeE]);\n      }\n    }\n\n    if (!shapeSegments.length) {\n      shapeSegments.push([0, 0]);\n    }\n\n    return shapeSegments;\n  };\n\n  TrimModifier.prototype.releasePathsData = function (pathsData) {\n    var i;\n    var len = pathsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      segmentsLengthPool.release(pathsData[i]);\n    }\n\n    pathsData.length = 0;\n    return pathsData;\n  };\n\n  TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n    var s;\n    var e;\n\n    if (this._mdf || _isFirstFrame) {\n      var o = this.o.v % 360 / 360;\n\n      if (o < 0) {\n        o += 1;\n      }\n\n      if (this.s.v > 1) {\n        s = 1 + o;\n      } else if (this.s.v < 0) {\n        s = 0 + o;\n      } else {\n        s = this.s.v + o;\n      }\n\n      if (this.e.v > 1) {\n        e = 1 + o;\n      } else if (this.e.v < 0) {\n        e = 0 + o;\n      } else {\n        e = this.e.v + o;\n      }\n\n      if (s > e) {\n        var _s = s;\n        s = e;\n        e = _s;\n      }\n\n      s = Math.round(s * 10000) * 0.0001;\n      e = Math.round(e * 10000) * 0.0001;\n      this.sValue = s;\n      this.eValue = e;\n    } else {\n      s = this.sValue;\n      e = this.eValue;\n    }\n\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var pathsData;\n    var pathData;\n    var totalShapeLength;\n    var totalModifierLength = 0;\n\n    if (e === s) {\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].localShapeCollection.releaseShapes();\n        this.shapes[i].shape._mdf = true;\n        this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n        if (this._mdf) {\n          this.shapes[i].pathsData.length = 0;\n        }\n      }\n    } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n      var segments = [];\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n        if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n          shapeData.shape.paths = shapeData.localShapeCollection;\n        } else {\n          shapePaths = shapeData.shape.paths;\n          jLen = shapePaths._length;\n          totalShapeLength = 0;\n\n          if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n            totalShapeLength = shapeData.totalShapeLength;\n          } else {\n            pathsData = this.releasePathsData(shapeData.pathsData);\n\n            for (j = 0; j < jLen; j += 1) {\n              pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n              pathsData.push(pathData);\n              totalShapeLength += pathData.totalLength;\n            }\n\n            shapeData.totalShapeLength = totalShapeLength;\n            shapeData.pathsData = pathsData;\n          }\n\n          totalModifierLength += totalShapeLength;\n          shapeData.shape._mdf = true;\n        }\n      }\n\n      var shapeS = s;\n      var shapeE = e;\n      var addedLength = 0;\n      var edges;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        shapeData = this.shapes[i];\n\n        if (shapeData.shape._mdf) {\n          localShapeCollection = shapeData.localShapeCollection;\n          localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n          if (this.m === 2 && len > 1) {\n            edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n            addedLength += shapeData.totalShapeLength;\n          } else {\n            edges = [[shapeS, shapeE]];\n          }\n\n          jLen = edges.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            shapeS = edges[j][0];\n            shapeE = edges[j][1];\n            segments.length = 0;\n\n            if (shapeE <= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength * shapeE\n              });\n            } else if (shapeS >= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * (shapeS - 1),\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            } else {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength\n              });\n              segments.push({\n                s: 0,\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            }\n\n            var newShapesData = this.addShapes(shapeData, segments[0]);\n\n            if (segments[0].s !== segments[0].e) {\n              if (segments.length > 1) {\n                var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n                if (lastShapeInCollection.c) {\n                  var lastShape = newShapesData.pop();\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n                } else {\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1]);\n                }\n              }\n\n              this.addPaths(newShapesData, localShapeCollection);\n            }\n          }\n\n          shapeData.shape.paths = localShapeCollection;\n        }\n      }\n    } else if (this._mdf) {\n      for (i = 0; i < len; i += 1) {\n        // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n        // Don't remove this even if it's losing cached info.\n        this.shapes[i].pathsData.length = 0;\n        this.shapes[i].shape._mdf = true;\n      }\n    }\n  };\n\n  TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n    var i;\n    var len = newPaths.length;\n\n    for (i = 0; i < len; i += 1) {\n      localShapeCollection.addShape(newPaths[i]);\n    }\n  };\n\n  TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n    shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n    shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n    if (newShape) {\n      shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n    }\n\n    shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n  };\n\n  TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n    shapePath.setXYAt(points[1], points[5], 'o', pos);\n    shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n    if (newShape) {\n      shapePath.setXYAt(points[0], points[4], 'v', pos);\n    }\n\n    shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n  };\n\n  TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n    var pathsData = shapeData.pathsData;\n    var shapePaths = shapeData.shape.paths.shapes;\n    var i;\n    var len = shapeData.shape.paths._length;\n    var j;\n    var jLen;\n    var addedLength = 0;\n    var currentLengthData;\n    var segmentCount;\n    var lengths;\n    var segment;\n    var shapes = [];\n    var initPos;\n    var newShape = true;\n\n    if (!shapePath) {\n      shapePath = shapePool.newElement();\n      segmentCount = 0;\n      initPos = 0;\n    } else {\n      segmentCount = shapePath._length;\n      initPos = shapePath._length;\n    }\n\n    shapes.push(shapePath);\n\n    for (i = 0; i < len; i += 1) {\n      lengths = pathsData[i].lengths;\n      shapePath.c = shapePaths[i].c;\n      jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n      for (j = 1; j < jLen; j += 1) {\n        currentLengthData = lengths[j - 1];\n\n        if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n          addedLength += currentLengthData.addedLength;\n          shapePath.c = false;\n        } else if (addedLength > shapeSegment.e) {\n          shapePath.c = false;\n          break;\n        } else {\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n            newShape = false;\n            shapePath.c = false;\n          }\n\n          addedLength += currentLengthData.addedLength;\n          segmentCount += 1;\n        }\n      }\n\n      if (shapePaths[i].c && lengths.length) {\n        currentLengthData = lengths[j - 1];\n\n        if (addedLength <= shapeSegment.e) {\n          var segmentLength = lengths[j - 1].addedLength;\n\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n            newShape = false;\n            shapePath.c = false;\n          }\n        } else {\n          shapePath.c = false;\n        }\n\n        addedLength += currentLengthData.addedLength;\n        segmentCount += 1;\n      }\n\n      if (shapePath._length) {\n        shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n        shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n      }\n\n      if (addedLength > shapeSegment.e) {\n        break;\n      }\n\n      if (i < len - 1) {\n        shapePath = shapePool.newElement();\n        newShape = true;\n        shapes.push(shapePath);\n        segmentCount = 0;\n      }\n    }\n\n    return shapes;\n  };\n\n  function PuckerAndBloatModifier() {}\n\n  extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n  PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this._isAnimated = !!this.amount.effectsSequence.length;\n  };\n\n  PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n    var percent = amount / 100;\n    var centerPoint = [0, 0];\n    var pathLength = path._length;\n    var i = 0;\n\n    for (i = 0; i < pathLength; i += 1) {\n      centerPoint[0] += path.v[i][0];\n      centerPoint[1] += path.v[i][1];\n    }\n\n    centerPoint[0] /= pathLength;\n    centerPoint[1] /= pathLength;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n\n    for (i = 0; i < pathLength; i += 1) {\n      vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n      vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n      oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n      oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n      iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n      iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n      clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n    }\n\n    return clonedPath;\n  };\n\n  PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  var TransformPropertyFactory = function () {\n    var defaultVector = [0, 0];\n\n    function applyToMatrix(mat) {\n      var _mdf = this._mdf;\n      this.iterateDynamicProperties();\n      this._mdf = this._mdf || _mdf;\n\n      if (this.a) {\n        mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n      }\n\n      if (this.s) {\n        mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n      }\n\n      if (this.sk) {\n        mat.skewFromAxis(-this.sk.v, this.sa.v);\n      }\n\n      if (this.r) {\n        mat.rotate(-this.r.v);\n      } else {\n        mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n      }\n\n      if (this.data.p.s) {\n        if (this.data.p.z) {\n          mat.translate(this.px.v, this.py.v, -this.pz.v);\n        } else {\n          mat.translate(this.px.v, this.py.v, 0);\n        }\n      } else {\n        mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n      }\n    }\n\n    function processKeys(forceRender) {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n\n      if (this._isDirty) {\n        this.precalculateMatrix();\n        this._isDirty = false;\n      }\n\n      this.iterateDynamicProperties();\n\n      if (this._mdf || forceRender) {\n        var frameRate;\n        this.v.cloneFromProps(this.pre.props);\n\n        if (this.appliedTransformations < 1) {\n          this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        }\n\n        if (this.appliedTransformations < 2) {\n          this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        }\n\n        if (this.sk && this.appliedTransformations < 3) {\n          this.v.skewFromAxis(-this.sk.v, this.sa.v);\n        }\n\n        if (this.r && this.appliedTransformations < 4) {\n          this.v.rotate(-this.r.v);\n        } else if (!this.r && this.appliedTransformations < 4) {\n          this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        }\n\n        if (this.autoOriented) {\n          var v1;\n          var v2;\n          frameRate = this.elem.globalData.frameRate;\n\n          if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n            if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n              v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n              v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n            } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n              v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n              v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n            } else {\n              v1 = this.p.pv;\n              v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n            }\n          } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n            v1 = [];\n            v2 = [];\n            var px = this.px;\n            var py = this.py;\n\n            if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n              v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n              v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n              v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n              v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n            } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n              v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n              v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n              v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n              v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n            } else {\n              v1 = [px.pv, py.pv];\n              v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n              v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n            }\n          } else {\n            v2 = defaultVector;\n            v1 = v2;\n          }\n\n          this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n        }\n\n        if (this.data.p && this.data.p.s) {\n          if (this.data.p.z) {\n            this.v.translate(this.px.v, this.py.v, -this.pz.v);\n          } else {\n            this.v.translate(this.px.v, this.py.v, 0);\n          }\n        } else {\n          this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n        }\n      }\n\n      this.frameId = this.elem.globalData.frameId;\n    }\n\n    function precalculateMatrix() {\n      this.appliedTransformations = 0;\n      this.pre.reset();\n\n      if (!this.a.effectsSequence.length) {\n        this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        this.appliedTransformations = 1;\n      } else {\n        return;\n      }\n\n      if (!this.s.effectsSequence.length) {\n        this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        this.appliedTransformations = 2;\n      } else {\n        return;\n      }\n\n      if (this.sk) {\n        if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n          this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n          this.appliedTransformations = 3;\n        } else {\n          return;\n        }\n      }\n\n      if (this.r) {\n        if (!this.r.effectsSequence.length) {\n          this.pre.rotate(-this.r.v);\n          this.appliedTransformations = 4;\n        }\n      } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n        this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        this.appliedTransformations = 4;\n      }\n    }\n\n    function autoOrient() {//\n      // var prevP = this.getValueAtTime();\n    }\n\n    function addDynamicProperty(prop) {\n      this._addDynamicProperty(prop);\n\n      this.elem.addDynamicProperty(prop);\n      this._isDirty = true;\n    }\n\n    function TransformProperty(elem, data, container) {\n      this.elem = elem;\n      this.frameId = -1;\n      this.propType = 'transform';\n      this.data = data;\n      this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n      this.pre = new Matrix();\n      this.appliedTransformations = 0;\n      this.initDynamicPropertyContainer(container || elem);\n\n      if (data.p && data.p.s) {\n        this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n        this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n        if (data.p.z) {\n          this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n        }\n      } else {\n        this.p = PropertyFactory.getProp(elem, data.p || {\n          k: [0, 0, 0]\n        }, 1, 0, this);\n      }\n\n      if (data.rx) {\n        this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n        this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n        this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n        if (data.or.k[0].ti) {\n          var i;\n          var len = data.or.k.length;\n\n          for (i = 0; i < len; i += 1) {\n            data.or.k[i].to = null;\n            data.or.k[i].ti = null;\n          }\n        }\n\n        this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n        this.or.sh = true;\n      } else {\n        this.r = PropertyFactory.getProp(elem, data.r || {\n          k: 0\n        }, 0, degToRads, this);\n      }\n\n      if (data.sk) {\n        this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n        this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n      }\n\n      this.a = PropertyFactory.getProp(elem, data.a || {\n        k: [0, 0, 0]\n      }, 1, 0, this);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: [100, 100, 100]\n      }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n      if (data.o) {\n        this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n      } else {\n        this.o = {\n          _mdf: false,\n          v: 1\n        };\n      }\n\n      this._isDirty = true;\n\n      if (!this.dynamicProperties.length) {\n        this.getValue(true);\n      }\n    }\n\n    TransformProperty.prototype = {\n      applyToMatrix: applyToMatrix,\n      getValue: processKeys,\n      precalculateMatrix: precalculateMatrix,\n      autoOrient: autoOrient\n    };\n    extendPrototype([DynamicPropertyContainer], TransformProperty);\n    TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n    TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n    function getTransformProperty(elem, data, container) {\n      return new TransformProperty(elem, data, container);\n    }\n\n    return {\n      getTransformProperty: getTransformProperty\n    };\n  }();\n\n  function RepeaterModifier() {}\n\n  extendPrototype([ShapeModifier], RepeaterModifier);\n\n  RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n    this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n    this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n    this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n    this.data = data;\n\n    if (!this.dynamicProperties.length) {\n      this.getValue(true);\n    }\n\n    this._isAnimated = !!this.dynamicProperties.length;\n    this.pMatrix = new Matrix();\n    this.rMatrix = new Matrix();\n    this.sMatrix = new Matrix();\n    this.tMatrix = new Matrix();\n    this.matrix = new Matrix();\n  };\n\n  RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n    var dir = inv ? -1 : 1;\n    var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n    var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n    pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n    rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    rMatrix.rotate(-transform.r.v * dir * perc);\n    rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n    sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n    sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n  };\n\n  RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n    this.elem = elem;\n    this.arr = arr;\n    this.pos = pos;\n    this.elemsData = elemsData;\n    this._currentCopies = 0;\n    this._elements = [];\n    this._groups = [];\n    this.frameId = -1;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, arr[pos]);\n\n    while (pos > 0) {\n      pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n      this._elements.unshift(arr[pos]);\n    }\n\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n\n  RepeaterModifier.prototype.resetElements = function (elements) {\n    var i;\n    var len = elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      elements[i]._processed = false;\n\n      if (elements[i].ty === 'gr') {\n        this.resetElements(elements[i].it);\n      }\n    }\n  };\n\n  RepeaterModifier.prototype.cloneElements = function (elements) {\n    var newElements = JSON.parse(JSON.stringify(elements));\n    this.resetElements(newElements);\n    return newElements;\n  };\n\n  RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n    var i;\n    var len = elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      elements[i]._render = renderFlag;\n\n      if (elements[i].ty === 'gr') {\n        this.changeGroupRender(elements[i].it, renderFlag);\n      }\n    }\n  };\n\n  RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n    var items;\n    var itemsTransform;\n    var i;\n    var dir;\n    var cont;\n    var hasReloaded = false;\n\n    if (this._mdf || _isFirstFrame) {\n      var copies = Math.ceil(this.c.v);\n\n      if (this._groups.length < copies) {\n        while (this._groups.length < copies) {\n          var group = {\n            it: this.cloneElements(this._elements),\n            ty: 'gr'\n          };\n          group.it.push({\n            a: {\n              a: 0,\n              ix: 1,\n              k: [0, 0]\n            },\n            nm: 'Transform',\n            o: {\n              a: 0,\n              ix: 7,\n              k: 100\n            },\n            p: {\n              a: 0,\n              ix: 2,\n              k: [0, 0]\n            },\n            r: {\n              a: 1,\n              ix: 6,\n              k: [{\n                s: 0,\n                e: 0,\n                t: 0\n              }, {\n                s: 0,\n                e: 0,\n                t: 1\n              }]\n            },\n            s: {\n              a: 0,\n              ix: 3,\n              k: [100, 100]\n            },\n            sa: {\n              a: 0,\n              ix: 5,\n              k: 0\n            },\n            sk: {\n              a: 0,\n              ix: 4,\n              k: 0\n            },\n            ty: 'tr'\n          });\n          this.arr.splice(0, 0, group);\n\n          this._groups.splice(0, 0, group);\n\n          this._currentCopies += 1;\n        }\n\n        this.elem.reloadShapes();\n        hasReloaded = true;\n      }\n\n      cont = 0;\n      var renderFlag;\n\n      for (i = 0; i <= this._groups.length - 1; i += 1) {\n        renderFlag = cont < copies;\n        this._groups[i]._render = renderFlag;\n        this.changeGroupRender(this._groups[i].it, renderFlag);\n\n        if (!renderFlag) {\n          var elems = this.elemsData[i].it;\n          var transformData = elems[elems.length - 1];\n\n          if (transformData.transform.op.v !== 0) {\n            transformData.transform.op._mdf = true;\n            transformData.transform.op.v = 0;\n          } else {\n            transformData.transform.op._mdf = false;\n          }\n        }\n\n        cont += 1;\n      }\n\n      this._currentCopies = copies; /// /\n\n      var offset = this.o.v;\n      var offsetModulo = offset % 1;\n      var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n      var pProps = this.pMatrix.props;\n      var rProps = this.rMatrix.props;\n      var sProps = this.sMatrix.props;\n      this.pMatrix.reset();\n      this.rMatrix.reset();\n      this.sMatrix.reset();\n      this.tMatrix.reset();\n      this.matrix.reset();\n      var iteration = 0;\n\n      if (offset > 0) {\n        while (iteration < roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          iteration += 1;\n        }\n\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n          iteration += offsetModulo;\n        }\n      } else if (offset < 0) {\n        while (iteration > roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n          iteration -= 1;\n        }\n\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n          iteration -= offsetModulo;\n        }\n      }\n\n      i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n      dir = this.data.m === 1 ? 1 : -1;\n      cont = this._currentCopies;\n      var j;\n      var jLen;\n\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        jLen = itemsTransform.length;\n        items[items.length - 1].transform.mProps._mdf = true;\n        items[items.length - 1].transform.op._mdf = true;\n        items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n        if (iteration !== 0) {\n          if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n            this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          }\n\n          this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n          this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n          this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n\n          this.matrix.reset();\n        } else {\n          this.matrix.reset();\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n        }\n\n        iteration += 1;\n        cont -= 1;\n        i += dir;\n      }\n    } else {\n      cont = this._currentCopies;\n      i = 0;\n      dir = 1;\n\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        items[items.length - 1].transform.mProps._mdf = false;\n        items[items.length - 1].transform.op._mdf = false;\n        cont -= 1;\n        i += dir;\n      }\n    }\n\n    return hasReloaded;\n  };\n\n  RepeaterModifier.prototype.addShape = function () {};\n\n  function RoundCornersModifier() {}\n\n  extendPrototype([ShapeModifier], RoundCornersModifier);\n\n  RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this._isAnimated = !!this.rd.effectsSequence.length;\n  };\n\n  RoundCornersModifier.prototype.processPath = function (path, round) {\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var i;\n    var len = path._length;\n    var currentV;\n    var currentI;\n    var currentO;\n    var closerV;\n    var distance;\n    var newPosPerc;\n    var index = 0;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n\n    for (i = 0; i < len; i += 1) {\n      currentV = path.v[i];\n      currentO = path.o[i];\n      currentI = path.i[i];\n\n      if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n        if ((i === 0 || i === len - 1) && !path.c) {\n          clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n          /* clonedPath.v[index] = currentV;\r\n                  clonedPath.o[index] = currentO;\r\n                  clonedPath.i[index] = currentI; */\n\n          index += 1;\n        } else {\n          if (i === 0) {\n            closerV = path.v[len - 1];\n          } else {\n            closerV = path.v[i - 1];\n          }\n\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = iX;\n          iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n          vY = iY;\n          oX = vX - (vX - currentV[0]) * roundCorner;\n          oY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n\n          if (i === len - 1) {\n            closerV = path.v[0];\n          } else {\n            closerV = path.v[i + 1];\n          }\n\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = oX;\n          oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n          vY = oY;\n          iX = vX - (vX - currentV[0]) * roundCorner;\n          iY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n        }\n      } else {\n        clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n        index += 1;\n      }\n    }\n\n    return clonedPath;\n  };\n\n  RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var rd = this.rd.v;\n\n    if (rd !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function floatEqual(a, b) {\n    return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n  }\n\n  function floatZero(f) {\n    return Math.abs(f) <= 0.00001;\n  }\n\n  function lerp(p0, p1, amount) {\n    return p0 * (1 - amount) + p1 * amount;\n  }\n\n  function lerpPoint(p0, p1, amount) {\n    return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n  }\n\n  function quadRoots(a, b, c) {\n    // no root\n    if (a === 0) return [];\n    var s = b * b - 4 * a * c; // Complex roots\n\n    if (s < 0) return [];\n    var singleRoot = -b / (2 * a); // 1 root\n\n    if (s === 0) return [singleRoot];\n    var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n    return [singleRoot - delta, singleRoot + delta];\n  }\n\n  function polynomialCoefficients(p0, p1, p2, p3) {\n    return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n  }\n\n  function singlePoint(p) {\n    return new PolynomialBezier(p, p, p, p, false);\n  }\n\n  function PolynomialBezier(p0, p1, p2, p3, linearize) {\n    if (linearize && pointEqual(p0, p1)) {\n      p1 = lerpPoint(p0, p3, 1 / 3);\n    }\n\n    if (linearize && pointEqual(p2, p3)) {\n      p2 = lerpPoint(p0, p3, 2 / 3);\n    }\n\n    var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n    var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n    this.a = [coeffx[0], coeffy[0]];\n    this.b = [coeffx[1], coeffy[1]];\n    this.c = [coeffx[2], coeffy[2]];\n    this.d = [coeffx[3], coeffy[3]];\n    this.points = [p0, p1, p2, p3];\n  }\n\n  PolynomialBezier.prototype.point = function (t) {\n    return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n  };\n\n  PolynomialBezier.prototype.derivative = function (t) {\n    return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n  };\n\n  PolynomialBezier.prototype.tangentAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[1], p[0]);\n  };\n\n  PolynomialBezier.prototype.normalAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[0], p[1]);\n  };\n\n  PolynomialBezier.prototype.inflectionPoints = function () {\n    var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n    if (floatZero(denom)) return [];\n    var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n    var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n    if (square < 0) return [];\n    var root = Math.sqrt(square);\n\n    if (floatZero(root)) {\n      if (root > 0 && root < 1) return [tcusp];\n      return [];\n    }\n\n    return [tcusp - root, tcusp + root].filter(function (r) {\n      return r > 0 && r < 1;\n    });\n  };\n\n  PolynomialBezier.prototype.split = function (t) {\n    if (t <= 0) return [singlePoint(this.points[0]), this];\n    if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n    var p10 = lerpPoint(this.points[0], this.points[1], t);\n    var p11 = lerpPoint(this.points[1], this.points[2], t);\n    var p12 = lerpPoint(this.points[2], this.points[3], t);\n    var p20 = lerpPoint(p10, p11, t);\n    var p21 = lerpPoint(p11, p12, t);\n    var p3 = lerpPoint(p20, p21, t);\n    return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n  };\n\n  function extrema(bez, comp) {\n    var min = bez.points[0][comp];\n    var max = bez.points[bez.points.length - 1][comp];\n\n    if (min > max) {\n      var e = max;\n      max = min;\n      min = e;\n    } // Derivative roots to find min/max\n\n\n    var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n    for (var i = 0; i < f.length; i += 1) {\n      if (f[i] > 0 && f[i] < 1) {\n        var val = bez.point(f[i])[comp];\n        if (val < min) min = val;else if (val > max) max = val;\n      }\n    }\n\n    return {\n      min: min,\n      max: max\n    };\n  }\n\n  PolynomialBezier.prototype.bounds = function () {\n    return {\n      x: extrema(this, 0),\n      y: extrema(this, 1)\n    };\n  };\n\n  PolynomialBezier.prototype.boundingBox = function () {\n    var bounds = this.bounds();\n    return {\n      left: bounds.x.min,\n      right: bounds.x.max,\n      top: bounds.y.min,\n      bottom: bounds.y.max,\n      width: bounds.x.max - bounds.x.min,\n      height: bounds.y.max - bounds.y.min,\n      cx: (bounds.x.max + bounds.x.min) / 2,\n      cy: (bounds.y.max + bounds.y.min) / 2\n    };\n  };\n\n  function intersectData(bez, t1, t2) {\n    var box = bez.boundingBox();\n    return {\n      cx: box.cx,\n      cy: box.cy,\n      width: box.width,\n      height: box.height,\n      bez: bez,\n      t: (t1 + t2) / 2,\n      t1: t1,\n      t2: t2\n    };\n  }\n\n  function splitData(data) {\n    var split = data.bez.split(0.5);\n    return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n  }\n\n  function boxIntersect(b1, b2) {\n    return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n  }\n\n  function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n    if (!boxIntersect(d1, d2)) return;\n\n    if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n      intersections.push([d1.t, d2.t]);\n      return;\n    }\n\n    var d1s = splitData(d1);\n    var d2s = splitData(d2);\n    intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n  }\n\n  PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n    if (tolerance === undefined) tolerance = 2;\n    if (maxRecursion === undefined) maxRecursion = 7;\n    var intersections = [];\n    intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n    return intersections;\n  };\n\n  PolynomialBezier.shapeSegment = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n  };\n\n  PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n  };\n\n  function crossProduct(a, b) {\n    return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n  }\n\n  function lineIntersection(start1, end1, start2, end2) {\n    var v1 = [start1[0], start1[1], 1];\n    var v2 = [end1[0], end1[1], 1];\n    var v3 = [start2[0], start2[1], 1];\n    var v4 = [end2[0], end2[1], 1];\n    var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n    if (floatZero(r[2])) return null;\n    return [r[0] / r[2], r[1] / r[2]];\n  }\n\n  function polarOffset(p, angle, length) {\n    return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n  }\n\n  function pointDistance(p1, p2) {\n    return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n  }\n\n  function pointEqual(p1, p2) {\n    return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n  }\n\n  function ZigZagModifier() {}\n\n  extendPrototype([ShapeModifier], ZigZagModifier);\n\n  ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n    this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n    this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n  };\n\n  function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n    var angO = angle - Math.PI / 2;\n    var angI = angle + Math.PI / 2;\n    var px = point[0] + Math.cos(angle) * direction * amplitude;\n    var py = point[1] - Math.sin(angle) * direction * amplitude;\n    outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n  }\n\n  function getPerpendicularVector(pt1, pt2) {\n    var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n    var rot = -Math.PI * 0.5;\n    var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n    return rotatedVector;\n  }\n\n  function getProjectingAngle(path, cur) {\n    var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n    var nextIndex = (cur + 1) % path.length();\n    var prevPoint = path.v[prevIndex];\n    var nextPoint = path.v[nextIndex];\n    var pVector = getPerpendicularVector(prevPoint, nextPoint);\n    return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n  }\n\n  function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n    var angle = getProjectingAngle(path, cur);\n    var point = path.v[cur % path._length];\n    var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n    var nextPoint = path.v[(cur + 1) % path._length];\n    var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n    var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n    setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n  }\n\n  function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n    for (var i = 0; i < frequency; i += 1) {\n      var t = (i + 1) / (frequency + 1);\n      var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n      var angle = segment.normalAngle(t);\n      var point = segment.point(t);\n      setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n      direction = -direction;\n    }\n\n    return direction;\n  }\n\n  ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n    var count = path._length;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n\n    if (!path.c) {\n      count -= 1;\n    }\n\n    if (count === 0) return clonedPath;\n    var direction = -1;\n    var segment = PolynomialBezier.shapeSegment(path, 0);\n    zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n    for (var i = 0; i < count; i += 1) {\n      direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n      if (i === count - 1 && !path.c) {\n        segment = null;\n      } else {\n        segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n      }\n\n      zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n    }\n\n    return clonedPath;\n  };\n\n  ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amplitude = this.amplitude.v;\n    var frequency = Math.max(0, Math.round(this.frequency.v));\n    var pointType = this.pointsType.v;\n\n    if (amplitude !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function linearOffset(p1, p2, amount) {\n    var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n    return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n  }\n\n  function offsetSegment(segment, amount) {\n    var p0;\n    var p1a;\n    var p1b;\n    var p2b;\n    var p2a;\n    var p3;\n    var e;\n    e = linearOffset(segment.points[0], segment.points[1], amount);\n    p0 = e[0];\n    p1a = e[1];\n    e = linearOffset(segment.points[1], segment.points[2], amount);\n    p1b = e[0];\n    p2b = e[1];\n    e = linearOffset(segment.points[2], segment.points[3], amount);\n    p2a = e[0];\n    p3 = e[1];\n    var p1 = lineIntersection(p0, p1a, p1b, p2b);\n    if (p1 === null) p1 = p1a;\n    var p2 = lineIntersection(p2a, p3, p1b, p2b);\n    if (p2 === null) p2 = p2a;\n    return new PolynomialBezier(p0, p1, p2, p3);\n  }\n\n  function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n    var p0 = seg1.points[3];\n    var p1 = seg2.points[0]; // Bevel\n\n    if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n    if (pointEqual(p0, p1)) return p0; // Round\n\n    if (lineJoin === 2) {\n      var angleOut = -seg1.tangentAngle(1);\n      var angleIn = -seg2.tangentAngle(0) + Math.PI;\n      var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n      var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n      var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n      outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n      tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n      outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n      return p1;\n    } // Miter\n\n\n    var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n    var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n    var intersection = lineIntersection(t0, p0, p1, t1);\n\n    if (intersection && pointDistance(intersection, p0) < miterLimit) {\n      outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n      return intersection;\n    }\n\n    return p0;\n  }\n\n  function getIntersection(a, b) {\n    var intersect = a.intersections(b);\n    if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n    if (intersect.length) return intersect[0];\n    return null;\n  }\n\n  function pruneSegmentIntersection(a, b) {\n    var outa = a.slice();\n    var outb = b.slice();\n    var intersect = getIntersection(a[a.length - 1], b[0]);\n\n    if (intersect) {\n      outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n      outb[0] = b[0].split(intersect[1])[1];\n    }\n\n    if (a.length > 1 && b.length > 1) {\n      intersect = getIntersection(a[0], b[b.length - 1]);\n\n      if (intersect) {\n        return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n      }\n    }\n\n    return [outa, outb];\n  }\n\n  function pruneIntersections(segments) {\n    var e;\n\n    for (var i = 1; i < segments.length; i += 1) {\n      e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n      segments[i - 1] = e[0];\n      segments[i] = e[1];\n    }\n\n    if (segments.length > 1) {\n      e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n      segments[segments.length - 1] = e[0];\n      segments[0] = e[1];\n    }\n\n    return segments;\n  }\n\n  function offsetSegmentSplit(segment, amount) {\n    /*\r\n      We split each bezier segment into smaller pieces based\r\n      on inflection points, this ensures the control point\r\n      polygon is convex.\r\n        (A cubic bezier can have none, one, or two inflection points)\r\n    */\n    var flex = segment.inflectionPoints();\n    var left;\n    var right;\n    var split;\n    var mid;\n\n    if (flex.length === 0) {\n      return [offsetSegment(segment, amount)];\n    }\n\n    if (flex.length === 1 || floatEqual(flex[1], 1)) {\n      split = segment.split(flex[0]);\n      left = split[0];\n      right = split[1];\n      return [offsetSegment(left, amount), offsetSegment(right, amount)];\n    }\n\n    split = segment.split(flex[0]);\n    left = split[0];\n    var t = (flex[1] - flex[0]) / (1 - flex[0]);\n    split = split[1].split(t);\n    mid = split[0];\n    right = split[1];\n    return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n  }\n\n  function OffsetPathModifier() {}\n\n  extendPrototype([ShapeModifier], OffsetPathModifier);\n\n  OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n    this.lineJoin = data.lj;\n    this._isAnimated = this.amount.effectsSequence.length !== 0;\n  };\n\n  OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n    var outputBezier = shapePool.newElement();\n    outputBezier.c = inputBezier.c;\n    var count = inputBezier.length();\n\n    if (!inputBezier.c) {\n      count -= 1;\n    }\n\n    var i;\n    var j;\n    var segment;\n    var multiSegments = [];\n\n    for (i = 0; i < count; i += 1) {\n      segment = PolynomialBezier.shapeSegment(inputBezier, i);\n      multiSegments.push(offsetSegmentSplit(segment, amount));\n    }\n\n    if (!inputBezier.c) {\n      for (i = count - 1; i >= 0; i -= 1) {\n        segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n        multiSegments.push(offsetSegmentSplit(segment, amount));\n      }\n    }\n\n    multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n    var lastPoint = null;\n    var lastSeg = null;\n\n    for (i = 0; i < multiSegments.length; i += 1) {\n      var multiSegment = multiSegments[i];\n      if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n      lastSeg = multiSegment[multiSegment.length - 1];\n\n      for (j = 0; j < multiSegment.length; j += 1) {\n        segment = multiSegment[j];\n\n        if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n          outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n        } else {\n          outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n        }\n\n        outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n        lastPoint = segment.points[3];\n      }\n    }\n\n    if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n    return outputBezier;\n  };\n\n  OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n    var miterLimit = this.miterLimit.v;\n    var lineJoin = this.lineJoin;\n\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function getFontProperties(fontData) {\n    var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n    var fWeight = 'normal';\n    var fStyle = 'normal';\n    var len = styles.length;\n    var styleName;\n\n    for (var i = 0; i < len; i += 1) {\n      styleName = styles[i].toLowerCase();\n\n      switch (styleName) {\n        case 'italic':\n          fStyle = 'italic';\n          break;\n\n        case 'bold':\n          fWeight = '700';\n          break;\n\n        case 'black':\n          fWeight = '900';\n          break;\n\n        case 'medium':\n          fWeight = '500';\n          break;\n\n        case 'regular':\n        case 'normal':\n          fWeight = '400';\n          break;\n\n        case 'light':\n        case 'thin':\n          fWeight = '200';\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    return {\n      style: fStyle,\n      weight: fontData.fWeight || fWeight\n    };\n  }\n\n  var FontManager = function () {\n    var maxWaitingTime = 5000;\n    var emptyChar = {\n      w: 0,\n      size: 0,\n      shapes: [],\n      data: {\n        shapes: []\n      }\n    };\n    var combinedCharacters = []; // Hindi characters\n\n    combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n    var BLACK_FLAG_CODE_POINT = 127988;\n    var CANCEL_TAG_CODE_POINT = 917631;\n    var A_TAG_CODE_POINT = 917601;\n    var Z_TAG_CODE_POINT = 917626;\n    var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n    var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n    var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n    var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n    var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n    function trimFontOptions(font) {\n      var familyArray = font.split(',');\n      var i;\n      var len = familyArray.length;\n      var enabledFamilies = [];\n\n      for (i = 0; i < len; i += 1) {\n        if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n          enabledFamilies.push(familyArray[i]);\n        }\n      }\n\n      return enabledFamilies.join(',');\n    }\n\n    function setUpNode(font, family) {\n      var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n      parentNode.setAttribute('aria-hidden', true);\n      parentNode.style.fontFamily = family;\n      var node = createTag('span'); // Characters that vary significantly among different fonts\n\n      node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n      parentNode.style.position = 'absolute';\n      parentNode.style.left = '-10000px';\n      parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n      parentNode.style.fontSize = '300px'; // Reset any font properties\n\n      parentNode.style.fontVariant = 'normal';\n      parentNode.style.fontStyle = 'normal';\n      parentNode.style.fontWeight = 'normal';\n      parentNode.style.letterSpacing = '0';\n      parentNode.appendChild(node);\n      document.body.appendChild(parentNode); // Remember width with no applied web font\n\n      var width = node.offsetWidth;\n      node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n      return {\n        node: node,\n        w: width,\n        parent: parentNode\n      };\n    }\n\n    function checkLoadedFonts() {\n      var i;\n      var len = this.fonts.length;\n      var node;\n      var w;\n      var loadedCount = len;\n\n      for (i = 0; i < len; i += 1) {\n        if (this.fonts[i].loaded) {\n          loadedCount -= 1;\n        } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n          this.fonts[i].loaded = true;\n        } else {\n          node = this.fonts[i].monoCase.node;\n          w = this.fonts[i].monoCase.w;\n\n          if (node.offsetWidth !== w) {\n            loadedCount -= 1;\n            this.fonts[i].loaded = true;\n          } else {\n            node = this.fonts[i].sansCase.node;\n            w = this.fonts[i].sansCase.w;\n\n            if (node.offsetWidth !== w) {\n              loadedCount -= 1;\n              this.fonts[i].loaded = true;\n            }\n          }\n\n          if (this.fonts[i].loaded) {\n            this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n            this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n          }\n        }\n      }\n\n      if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n        setTimeout(this.checkLoadedFontsBinded, 20);\n      } else {\n        setTimeout(this.setIsLoadedBinded, 10);\n      }\n    }\n\n    function createHelper(fontData, def) {\n      var engine = document.body && def ? 'svg' : 'canvas';\n      var helper;\n      var fontProps = getFontProperties(fontData);\n\n      if (engine === 'svg') {\n        var tHelper = createNS('text');\n        tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n        tHelper.setAttribute('font-family', fontData.fFamily);\n        tHelper.setAttribute('font-style', fontProps.style);\n        tHelper.setAttribute('font-weight', fontProps.weight);\n        tHelper.textContent = '1';\n\n        if (fontData.fClass) {\n          tHelper.style.fontFamily = 'inherit';\n          tHelper.setAttribute('class', fontData.fClass);\n        } else {\n          tHelper.style.fontFamily = fontData.fFamily;\n        }\n\n        def.appendChild(tHelper);\n        helper = tHelper;\n      } else {\n        var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n        tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n        helper = tCanvasHelper;\n      }\n\n      function measure(text) {\n        if (engine === 'svg') {\n          helper.textContent = text;\n          return helper.getComputedTextLength();\n        }\n\n        return helper.measureText(text).width;\n      }\n\n      return {\n        measureText: measure\n      };\n    }\n\n    function addFonts(fontData, defs) {\n      if (!fontData) {\n        this.isLoaded = true;\n        return;\n      }\n\n      if (this.chars) {\n        this.isLoaded = true;\n        this.fonts = fontData.list;\n        return;\n      }\n\n      if (!document.body) {\n        this.isLoaded = true;\n        fontData.list.forEach(function (data) {\n          data.helper = createHelper(data);\n          data.cache = {};\n        });\n        this.fonts = fontData.list;\n        return;\n      }\n\n      var fontArr = fontData.list;\n      var i;\n      var len = fontArr.length;\n      var _pendingFonts = len;\n\n      for (i = 0; i < len; i += 1) {\n        var shouldLoadFont = true;\n        var loadedSelector;\n        var j;\n        fontArr[i].loaded = false;\n        fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n        fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n        if (!fontArr[i].fPath) {\n          fontArr[i].loaded = true;\n          _pendingFonts -= 1;\n        } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n          loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n          if (loadedSelector.length > 0) {\n            shouldLoadFont = false;\n          }\n\n          if (shouldLoadFont) {\n            var s = createTag('style');\n            s.setAttribute('f-forigin', fontArr[i].fOrigin);\n            s.setAttribute('f-origin', fontArr[i].origin);\n            s.setAttribute('f-family', fontArr[i].fFamily);\n            s.type = 'text/css';\n            s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n            defs.appendChild(s);\n          }\n        } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n          loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n\n          if (shouldLoadFont) {\n            var l = createTag('link');\n            l.setAttribute('f-forigin', fontArr[i].fOrigin);\n            l.setAttribute('f-origin', fontArr[i].origin);\n            l.type = 'text/css';\n            l.rel = 'stylesheet';\n            l.href = fontArr[i].fPath;\n            document.body.appendChild(l);\n          }\n        } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n          loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (fontArr[i].fPath === loadedSelector[j].src) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n\n          if (shouldLoadFont) {\n            var sc = createTag('link');\n            sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n            sc.setAttribute('f-origin', fontArr[i].origin);\n            sc.setAttribute('rel', 'stylesheet');\n            sc.setAttribute('href', fontArr[i].fPath);\n            defs.appendChild(sc);\n          }\n        }\n\n        fontArr[i].helper = createHelper(fontArr[i], defs);\n        fontArr[i].cache = {};\n        this.fonts.push(fontArr[i]);\n      }\n\n      if (_pendingFonts === 0) {\n        this.isLoaded = true;\n      } else {\n        // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n        // Adding this timeout seems to fix it\n        setTimeout(this.checkLoadedFonts.bind(this), 100);\n      }\n    }\n\n    function addChars(chars) {\n      if (!chars) {\n        return;\n      }\n\n      if (!this.chars) {\n        this.chars = [];\n      }\n\n      var i;\n      var len = chars.length;\n      var j;\n      var jLen = this.chars.length;\n      var found;\n\n      for (i = 0; i < len; i += 1) {\n        j = 0;\n        found = false;\n\n        while (j < jLen) {\n          if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n            found = true;\n          }\n\n          j += 1;\n        }\n\n        if (!found) {\n          this.chars.push(chars[i]);\n          jLen += 1;\n        }\n      }\n    }\n\n    function getCharData(_char, style, font) {\n      var i = 0;\n      var len = this.chars.length;\n\n      while (i < len) {\n        if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n          return this.chars[i];\n        }\n\n        i += 1;\n      }\n\n      if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n      && !this._warned) {\n        this._warned = true;\n        console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n      }\n\n      return emptyChar;\n    }\n\n    function measureText(_char2, fontName, size) {\n      var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n      // to avoid collisions between equal chars\n\n      var index = _char2;\n\n      if (!fontData.cache[index]) {\n        var tHelper = fontData.helper;\n\n        if (_char2 === ' ') {\n          var doubleSize = tHelper.measureText('|' + _char2 + '|');\n          var singleSize = tHelper.measureText('||');\n          fontData.cache[index] = (doubleSize - singleSize) / 100;\n        } else {\n          fontData.cache[index] = tHelper.measureText(_char2) / 100;\n        }\n      }\n\n      return fontData.cache[index] * size;\n    }\n\n    function getFontByName(name) {\n      var i = 0;\n      var len = this.fonts.length;\n\n      while (i < len) {\n        if (this.fonts[i].fName === name) {\n          return this.fonts[i];\n        }\n\n        i += 1;\n      }\n\n      return this.fonts[0];\n    }\n\n    function getCodePoint(string) {\n      var codePoint = 0;\n      var first = string.charCodeAt(0);\n\n      if (first >= 0xD800 && first <= 0xDBFF) {\n        var second = string.charCodeAt(1);\n\n        if (second >= 0xDC00 && second <= 0xDFFF) {\n          codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n        }\n      }\n\n      return codePoint;\n    } // Skin tone modifiers\n\n\n    function isModifier(firstCharCode, secondCharCode) {\n      var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n      return surrogateModifiers.indexOf(sum) !== -1;\n    }\n\n    function isZeroWidthJoiner(charCode) {\n      return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n    } // This codepoint may change the appearance of the preceding character.\n    // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n    // as a colorful image as compared to a monochrome text variant.\n\n\n    function isVariationSelector(charCode) {\n      return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n    } // The regional indicator symbols are a set of 26 alphabetic Unicode\n    /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n    // two-letter country codes in a way that allows optional special treatment.\n\n\n    function isRegionalCode(string) {\n      var codePoint = getCodePoint(string);\n\n      if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n        return true;\n      }\n\n      return false;\n    } // Some Emoji implementations represent combinations of\n    // two “regional indicator” letters as a single flag symbol.\n\n\n    function isFlagEmoji(string) {\n      return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n    }\n\n    function isCombinedCharacter(_char3) {\n      return combinedCharacters.indexOf(_char3) !== -1;\n    } // Regional flags start with a BLACK_FLAG_CODE_POINT\n    // folowed by 5 chars in the TAG range\n    // and end with a CANCEL_TAG_CODE_POINT\n\n\n    function isRegionalFlag(text, index) {\n      var codePoint = getCodePoint(text.substr(index, 2));\n\n      if (codePoint !== BLACK_FLAG_CODE_POINT) {\n        return false;\n      }\n\n      var count = 0;\n      index += 2;\n\n      while (count < 5) {\n        codePoint = getCodePoint(text.substr(index, 2));\n\n        if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n          return false;\n        }\n\n        count += 1;\n        index += 2;\n      }\n\n      return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n    }\n\n    function setIsLoaded() {\n      this.isLoaded = true;\n    }\n\n    var Font = function Font() {\n      this.fonts = [];\n      this.chars = null;\n      this.typekitLoaded = 0;\n      this.isLoaded = false;\n      this._warned = false;\n      this.initTime = Date.now();\n      this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n      this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n    };\n\n    Font.isModifier = isModifier;\n    Font.isZeroWidthJoiner = isZeroWidthJoiner;\n    Font.isFlagEmoji = isFlagEmoji;\n    Font.isRegionalCode = isRegionalCode;\n    Font.isCombinedCharacter = isCombinedCharacter;\n    Font.isRegionalFlag = isRegionalFlag;\n    Font.isVariationSelector = isVariationSelector;\n    Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n    var fontPrototype = {\n      addChars: addChars,\n      addFonts: addFonts,\n      getCharData: getCharData,\n      getFontByName: getFontByName,\n      measureText: measureText,\n      checkLoadedFonts: checkLoadedFonts,\n      setIsLoaded: setIsLoaded\n    };\n    Font.prototype = fontPrototype;\n    return Font;\n  }();\n\n  function SlotManager(animationData) {\n    this.animationData = animationData;\n  }\n\n  SlotManager.prototype.getProp = function (data) {\n    if (this.animationData.slots && this.animationData.slots[data.sid]) {\n      return Object.assign(data, this.animationData.slots[data.sid].p);\n    }\n\n    return data;\n  };\n\n  function slotFactory(animationData) {\n    return new SlotManager(animationData);\n  }\n\n  function RenderableElement() {}\n\n  RenderableElement.prototype = {\n    initRenderable: function initRenderable() {\n      // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n      this.isInRange = false; // layer's display state\n\n      this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n      this.isTransparent = false; // list of animated components\n\n      this.renderableComponents = [];\n    },\n    addRenderableComponent: function addRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) === -1) {\n        this.renderableComponents.push(component);\n      }\n    },\n    removeRenderableComponent: function removeRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) !== -1) {\n        this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n      }\n    },\n    prepareRenderableFrame: function prepareRenderableFrame(num) {\n      this.checkLayerLimits(num);\n    },\n    checkTransparency: function checkTransparency() {\n      if (this.finalTransform.mProp.o.v <= 0) {\n        if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n          this.isTransparent = true;\n          this.hide();\n        }\n      } else if (this.isTransparent) {\n        this.isTransparent = false;\n        this.show();\n      }\n    },\n\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       *\r\n       */\n    checkLayerLimits: function checkLayerLimits(num) {\n      if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n        if (this.isInRange !== true) {\n          this.globalData._mdf = true;\n          this._mdf = true;\n          this.isInRange = true;\n          this.show();\n        }\n      } else if (this.isInRange !== false) {\n        this.globalData._mdf = true;\n        this.isInRange = false;\n        this.hide();\n      }\n    },\n    renderRenderable: function renderRenderable() {\n      var i;\n      var len = this.renderableComponents.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.renderableComponents[i].renderFrame(this._isFirstFrame);\n      }\n      /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n          this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n    },\n    sourceRectAtTime: function sourceRectAtTime() {\n      return {\n        top: 0,\n        left: 0,\n        width: 100,\n        height: 100\n      };\n    },\n    getLayerSize: function getLayerSize() {\n      if (this.data.ty === 5) {\n        return {\n          w: this.data.textData.width,\n          h: this.data.textData.height\n        };\n      }\n\n      return {\n        w: this.data.width,\n        h: this.data.height\n      };\n    }\n  };\n\n  var getBlendMode = function () {\n    var blendModeEnums = {\n      0: 'source-over',\n      1: 'multiply',\n      2: 'screen',\n      3: 'overlay',\n      4: 'darken',\n      5: 'lighten',\n      6: 'color-dodge',\n      7: 'color-burn',\n      8: 'hard-light',\n      9: 'soft-light',\n      10: 'difference',\n      11: 'exclusion',\n      12: 'hue',\n      13: 'saturation',\n      14: 'color',\n      15: 'luminosity'\n    };\n    return function (mode) {\n      return blendModeEnums[mode] || '';\n    };\n  }();\n\n  function SliderEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function AngleEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function ColorEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n\n  function PointEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n\n  function LayerIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function MaskIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function CheckboxEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function NoValueEffect() {\n    this.p = {};\n  }\n\n  function EffectsManager(data, element) {\n    var effects = data.ef || [];\n    this.effectElements = [];\n    var i;\n    var len = effects.length;\n    var effectItem;\n\n    for (i = 0; i < len; i += 1) {\n      effectItem = new GroupEffect(effects[i], element);\n      this.effectElements.push(effectItem);\n    }\n  }\n\n  function GroupEffect(data, element) {\n    this.init(data, element);\n  }\n\n  extendPrototype([DynamicPropertyContainer], GroupEffect);\n  GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n  GroupEffect.prototype.init = function (data, element) {\n    this.data = data;\n    this.effectElements = [];\n    this.initDynamicPropertyContainer(element);\n    var i;\n    var len = this.data.ef.length;\n    var eff;\n    var effects = this.data.ef;\n\n    for (i = 0; i < len; i += 1) {\n      eff = null;\n\n      switch (effects[i].ty) {\n        case 0:\n          eff = new SliderEffect(effects[i], element, this);\n          break;\n\n        case 1:\n          eff = new AngleEffect(effects[i], element, this);\n          break;\n\n        case 2:\n          eff = new ColorEffect(effects[i], element, this);\n          break;\n\n        case 3:\n          eff = new PointEffect(effects[i], element, this);\n          break;\n\n        case 4:\n        case 7:\n          eff = new CheckboxEffect(effects[i], element, this);\n          break;\n\n        case 10:\n          eff = new LayerIndexEffect(effects[i], element, this);\n          break;\n\n        case 11:\n          eff = new MaskIndexEffect(effects[i], element, this);\n          break;\n\n        case 5:\n          eff = new EffectsManager(effects[i], element, this);\n          break;\n        // case 6:\n\n        default:\n          eff = new NoValueEffect(effects[i], element, this);\n          break;\n      }\n\n      if (eff) {\n        this.effectElements.push(eff);\n      }\n    }\n  };\n\n  function BaseElement() {}\n\n  BaseElement.prototype = {\n    checkMasks: function checkMasks() {\n      if (!this.data.hasMask) {\n        return false;\n      }\n\n      var i = 0;\n      var len = this.data.masksProperties.length;\n\n      while (i < len) {\n        if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n          return true;\n        }\n\n        i += 1;\n      }\n\n      return false;\n    },\n    initExpressions: function initExpressions() {\n      var expressionsInterfaces = getExpressionInterfaces();\n\n      if (!expressionsInterfaces) {\n        return;\n      }\n\n      var LayerExpressionInterface = expressionsInterfaces('layer');\n      var EffectsExpressionInterface = expressionsInterfaces('effects');\n      var ShapeExpressionInterface = expressionsInterfaces('shape');\n      var TextExpressionInterface = expressionsInterfaces('text');\n      var CompExpressionInterface = expressionsInterfaces('comp');\n      this.layerInterface = LayerExpressionInterface(this);\n\n      if (this.data.hasMask && this.maskManager) {\n        this.layerInterface.registerMaskInterface(this.maskManager);\n      }\n\n      var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n      this.layerInterface.registerEffectsInterface(effectsInterface);\n\n      if (this.data.ty === 0 || this.data.xt) {\n        this.compInterface = CompExpressionInterface(this);\n      } else if (this.data.ty === 4) {\n        this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n        this.layerInterface.content = this.layerInterface.shapeInterface;\n      } else if (this.data.ty === 5) {\n        this.layerInterface.textInterface = TextExpressionInterface(this);\n        this.layerInterface.text = this.layerInterface.textInterface;\n      }\n    },\n    setBlendMode: function setBlendMode() {\n      var blendModeValue = getBlendMode(this.data.bm);\n      var elem = this.baseElement || this.layerElement;\n      elem.style['mix-blend-mode'] = blendModeValue;\n    },\n    initBaseData: function initBaseData(data, globalData, comp) {\n      this.globalData = globalData;\n      this.comp = comp;\n      this.data = data;\n      this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n      if (!this.data.sr) {\n        this.data.sr = 1;\n      } // effects manager\n\n\n      this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n    },\n    getType: function getType() {\n      return this.type;\n    },\n    sourceRectAtTime: function sourceRectAtTime() {}\n  };\n\n  /**\r\n   * @file\r\n   * Handles element's layer frame update.\r\n   * Checks layer in point and out point\r\n   *\r\n   */\n  function FrameElement() {}\n\n  FrameElement.prototype = {\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       */\n    initFrame: function initFrame() {\n      // set to true when inpoint is rendered\n      this._isFirstFrame = false; // list of animated properties\n\n      this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n      this._mdf = false;\n    },\n\n    /**\r\n       * @function\r\n       * Calculates all dynamic values\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       * @param {boolean} isVisible\r\n       * if layers is currently in range\r\n       *\r\n       */\n    prepareProperties: function prepareProperties(num, isVisible) {\n      var i;\n      var len = this.dynamicProperties.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n          this.dynamicProperties[i].getValue();\n\n          if (this.dynamicProperties[i]._mdf) {\n            this.globalData._mdf = true;\n            this._mdf = true;\n          }\n        }\n      }\n    },\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n      }\n    }\n  };\n\n  function FootageElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.footageData = globalData.imageLoader.getAsset(this.assetData);\n    this.initBaseData(data, globalData, comp);\n  }\n\n  FootageElement.prototype.prepareFrame = function () {};\n\n  extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n  FootageElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  FootageElement.prototype.renderFrame = function () {};\n\n  FootageElement.prototype.destroy = function () {};\n\n  FootageElement.prototype.initExpressions = function () {\n    var expressionsInterfaces = getExpressionInterfaces();\n\n    if (!expressionsInterfaces) {\n      return;\n    }\n\n    var FootageInterface = expressionsInterfaces('footage');\n    this.layerInterface = FootageInterface(this);\n  };\n\n  FootageElement.prototype.getFootageData = function () {\n    return this.footageData;\n  };\n\n  function AudioElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initBaseData(data, globalData, comp);\n    this._isPlaying = false;\n    this._canPlay = false;\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.audio = this.globalData.audioController.createAudio(assetPath);\n    this._currentTime = 0;\n    this.globalData.audioController.addAudio(this);\n    this._volumeMultiplier = 1;\n    this._volume = 1;\n    this._previousVolume = null;\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n    this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n      k: [100]\n    }, 1, 0.01, this);\n  }\n\n  AudioElement.prototype.prepareFrame = function (num) {\n    this.prepareRenderableFrame(num, true);\n    this.prepareProperties(num, true);\n\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n      this._currentTime = timeRemapped;\n    } else {\n      this._currentTime = num / this.data.sr;\n    }\n\n    this._volume = this.lv.v[0];\n    var totalVolume = this._volume * this._volumeMultiplier;\n\n    if (this._previousVolume !== totalVolume) {\n      this._previousVolume = totalVolume;\n      this.audio.volume(totalVolume);\n    }\n  };\n\n  extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n  AudioElement.prototype.renderFrame = function () {\n    if (this.isInRange && this._canPlay) {\n      if (!this._isPlaying) {\n        this.audio.play();\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n        this._isPlaying = true;\n      } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n      }\n    }\n  };\n\n  AudioElement.prototype.show = function () {// this.audio.play()\n  };\n\n  AudioElement.prototype.hide = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n  };\n\n  AudioElement.prototype.pause = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n    this._canPlay = false;\n  };\n\n  AudioElement.prototype.resume = function () {\n    this._canPlay = true;\n  };\n\n  AudioElement.prototype.setRate = function (rateValue) {\n    this.audio.rate(rateValue);\n  };\n\n  AudioElement.prototype.volume = function (volumeValue) {\n    this._volumeMultiplier = volumeValue;\n    this._previousVolume = volumeValue * this._volume;\n    this.audio.volume(this._previousVolume);\n  };\n\n  AudioElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  AudioElement.prototype.destroy = function () {};\n\n  AudioElement.prototype.sourceRectAtTime = function () {};\n\n  AudioElement.prototype.initExpressions = function () {};\n\n  function BaseRenderer() {}\n\n  BaseRenderer.prototype.checkLayers = function (num) {\n    var i;\n    var len = this.layers.length;\n    var data;\n    this.completeLayers = true;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (!this.elements[i]) {\n        data = this.layers[i];\n\n        if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n          this.buildItem(i);\n        }\n      }\n\n      this.completeLayers = this.elements[i] ? this.completeLayers : false;\n    }\n\n    this.checkPendingElements();\n  };\n\n  BaseRenderer.prototype.createItem = function (layer) {\n    switch (layer.ty) {\n      case 2:\n        return this.createImage(layer);\n\n      case 0:\n        return this.createComp(layer);\n\n      case 1:\n        return this.createSolid(layer);\n\n      case 3:\n        return this.createNull(layer);\n\n      case 4:\n        return this.createShape(layer);\n\n      case 5:\n        return this.createText(layer);\n\n      case 6:\n        return this.createAudio(layer);\n\n      case 13:\n        return this.createCamera(layer);\n\n      case 15:\n        return this.createFootage(layer);\n\n      default:\n        return this.createNull(layer);\n    }\n  };\n\n  BaseRenderer.prototype.createCamera = function () {\n    throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n  };\n\n  BaseRenderer.prototype.createAudio = function (data) {\n    return new AudioElement(data, this.globalData, this);\n  };\n\n  BaseRenderer.prototype.createFootage = function (data) {\n    return new FootageElement(data, this.globalData, this);\n  };\n\n  BaseRenderer.prototype.buildAllItems = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.buildItem(i);\n    }\n\n    this.checkPendingElements();\n  };\n\n  BaseRenderer.prototype.includeLayers = function (newLayers) {\n    this.completeLayers = false;\n    var i;\n    var len = newLayers.length;\n    var j;\n    var jLen = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      j = 0;\n\n      while (j < jLen) {\n        if (this.layers[j].id === newLayers[i].id) {\n          this.layers[j] = newLayers[i];\n          break;\n        }\n\n        j += 1;\n      }\n    }\n  };\n\n  BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n    this.globalData.projectInterface = pInterface;\n  };\n\n  BaseRenderer.prototype.initItems = function () {\n    if (!this.globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n  };\n\n  BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n    var elements = this.elements;\n    var layers = this.layers;\n    var i = 0;\n    var len = layers.length;\n\n    while (i < len) {\n      if (layers[i].ind == parentName) {\n        // eslint-disable-line eqeqeq\n        if (!elements[i] || elements[i] === true) {\n          this.buildItem(i);\n          this.addPendingElement(element);\n        } else {\n          hierarchy.push(elements[i]);\n          elements[i].setAsParent();\n\n          if (layers[i].parent !== undefined) {\n            this.buildElementParenting(element, layers[i].parent, hierarchy);\n          } else {\n            element.setHierarchy(hierarchy);\n          }\n        }\n      }\n\n      i += 1;\n    }\n  };\n\n  BaseRenderer.prototype.addPendingElement = function (element) {\n    this.pendingElements.push(element);\n  };\n\n  BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i]);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n\n  BaseRenderer.prototype.getElementById = function (ind) {\n    var i;\n    var len = this.elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i].data.ind === ind) {\n        return this.elements[i];\n      }\n    }\n\n    return null;\n  };\n\n  BaseRenderer.prototype.getElementByPath = function (path) {\n    var pathValue = path.shift();\n    var element;\n\n    if (typeof pathValue === 'number') {\n      element = this.elements[pathValue];\n    } else {\n      var i;\n      var len = this.elements.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (this.elements[i].data.nm === pathValue) {\n          element = this.elements[i];\n          break;\n        }\n      }\n    }\n\n    if (path.length === 0) {\n      return element;\n    }\n\n    return element.getElementByPath(path);\n  };\n\n  BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n    this.globalData.fontManager = new FontManager();\n    this.globalData.slotManager = slotFactory(animData);\n    this.globalData.fontManager.addChars(animData.chars);\n    this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n    this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n    this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n    this.globalData.imageLoader = this.animationItem.imagePreloader;\n    this.globalData.audioController = this.animationItem.audioController;\n    this.globalData.frameId = 0;\n    this.globalData.frameRate = animData.fr;\n    this.globalData.nm = animData.nm;\n    this.globalData.compSize = {\n      w: animData.w,\n      h: animData.h\n    };\n  };\n\n  var effectTypes = {\n    TRANSFORM_EFFECT: 'transformEFfect'\n  };\n\n  function TransformElement() {}\n\n  TransformElement.prototype = {\n    initTransform: function initTransform() {\n      var mat = new Matrix();\n      this.finalTransform = {\n        mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n          o: 0\n        },\n        _matMdf: false,\n        _localMatMdf: false,\n        _opMdf: false,\n        mat: mat,\n        localMat: mat,\n        localOpacity: 1\n      };\n\n      if (this.data.ao) {\n        this.finalTransform.mProp.autoOriented = true;\n      } // TODO: check TYPE 11: Guided elements\n\n\n      if (this.data.ty !== 11) {// this.createElements();\n      }\n    },\n    renderTransform: function renderTransform() {\n      this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n      this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n      if (this.hierarchy) {\n        var mat;\n        var finalMat = this.finalTransform.mat;\n        var i = 0;\n        var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n        if (!this.finalTransform._matMdf) {\n          while (i < len) {\n            if (this.hierarchy[i].finalTransform.mProp._mdf) {\n              this.finalTransform._matMdf = true;\n              break;\n            }\n\n            i += 1;\n          }\n        }\n\n        if (this.finalTransform._matMdf) {\n          mat = this.finalTransform.mProp.v.props;\n          finalMat.cloneFromProps(mat);\n\n          for (i = 0; i < len; i += 1) {\n            finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n          }\n        }\n      }\n\n      if (this.finalTransform._matMdf) {\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n      }\n\n      if (this.finalTransform._opMdf) {\n        this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderLocalTransform: function renderLocalTransform() {\n      if (this.localTransforms) {\n        var i = 0;\n        var len = this.localTransforms.length;\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n        if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n          while (i < len) {\n            if (this.localTransforms[i]._mdf) {\n              this.finalTransform._localMatMdf = true;\n            }\n\n            if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n              this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n              this.finalTransform._opMdf = true;\n            }\n\n            i += 1;\n          }\n        }\n\n        if (this.finalTransform._localMatMdf) {\n          var localMat = this.finalTransform.localMat;\n          this.localTransforms[0].matrix.clone(localMat);\n\n          for (i = 1; i < len; i += 1) {\n            var lmat = this.localTransforms[i].matrix;\n            localMat.multiply(lmat);\n          }\n\n          localMat.multiply(this.finalTransform.mat);\n        }\n\n        if (this.finalTransform._opMdf) {\n          var localOp = this.finalTransform.localOpacity;\n\n          for (i = 0; i < len; i += 1) {\n            localOp *= this.localTransforms[i].opacity * 0.01;\n          }\n\n          this.finalTransform.localOpacity = localOp;\n        }\n      }\n    },\n    searchEffectTransforms: function searchEffectTransforms() {\n      if (this.renderableEffectsManager) {\n        var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n        if (transformEffects.length) {\n          this.localTransforms = [];\n          this.finalTransform.localMat = new Matrix();\n          var i = 0;\n          var len = transformEffects.length;\n\n          for (i = 0; i < len; i += 1) {\n            this.localTransforms.push(transformEffects[i]);\n          }\n        }\n      }\n    },\n    globalToLocal: function globalToLocal(pt) {\n      var transforms = [];\n      transforms.push(this.finalTransform);\n      var flag = true;\n      var comp = this.comp;\n\n      while (flag) {\n        if (comp.finalTransform) {\n          if (comp.data.hasMask) {\n            transforms.splice(0, 0, comp.finalTransform);\n          }\n\n          comp = comp.comp;\n        } else {\n          flag = false;\n        }\n      }\n\n      var i;\n      var len = transforms.length;\n      var ptNew;\n\n      for (i = 0; i < len; i += 1) {\n        ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n        pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n      }\n\n      return pt;\n    },\n    mHelper: new Matrix()\n  };\n\n  function MaskElement(data, element, globalData) {\n    this.data = data;\n    this.element = element;\n    this.globalData = globalData;\n    this.storedData = [];\n    this.masksProperties = this.data.masksProperties || [];\n    this.maskElement = null;\n    var defs = this.globalData.defs;\n    var i;\n    var len = this.masksProperties ? this.masksProperties.length : 0;\n    this.viewData = createSizedArray(len);\n    this.solidPath = '';\n    var path;\n    var properties = this.masksProperties;\n    var count = 0;\n    var currentMasks = [];\n    var j;\n    var jLen;\n    var layerId = createElementID();\n    var rect;\n    var expansor;\n    var feMorph;\n    var x;\n    var maskType = 'clipPath';\n    var maskRef = 'clip-path';\n\n    for (i = 0; i < len; i += 1) {\n      if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n        maskType = 'mask';\n        maskRef = 'mask';\n      }\n\n      if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n        rect = createNS('rect');\n        rect.setAttribute('fill', '#ffffff');\n        rect.setAttribute('width', this.element.comp.data.w || 0);\n        rect.setAttribute('height', this.element.comp.data.h || 0);\n        currentMasks.push(rect);\n      } else {\n        rect = null;\n      }\n\n      path = createNS('path');\n\n      if (properties[i].mode === 'n') {\n        // TODO move this to a factory or to a constructor\n        this.viewData[i] = {\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          elem: path,\n          lastPath: ''\n        };\n        defs.appendChild(path);\n      } else {\n        count += 1;\n        path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        path.setAttribute('clip-rule', 'nonzero');\n        var filterID;\n\n        if (properties[i].x.k !== 0) {\n          maskType = 'mask';\n          maskRef = 'mask';\n          x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n          filterID = createElementID();\n          expansor = createNS('filter');\n          expansor.setAttribute('id', filterID);\n          feMorph = createNS('feMorphology');\n          feMorph.setAttribute('operator', 'erode');\n          feMorph.setAttribute('in', 'SourceGraphic');\n          feMorph.setAttribute('radius', '0');\n          expansor.appendChild(feMorph);\n          defs.appendChild(expansor);\n          path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        } else {\n          feMorph = null;\n          x = null;\n        } // TODO move this to a factory or to a constructor\n\n\n        this.storedData[i] = {\n          elem: path,\n          x: x,\n          expan: feMorph,\n          lastPath: '',\n          lastOperator: '',\n          filterId: filterID,\n          lastRadius: 0\n        };\n\n        if (properties[i].mode === 'i') {\n          jLen = currentMasks.length;\n          var g = createNS('g');\n\n          for (j = 0; j < jLen; j += 1) {\n            g.appendChild(currentMasks[j]);\n          }\n\n          var mask = createNS('mask');\n          mask.setAttribute('mask-type', 'alpha');\n          mask.setAttribute('id', layerId + '_' + count);\n          mask.appendChild(path);\n          defs.appendChild(mask);\n          g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n          currentMasks.length = 0;\n          currentMasks.push(g);\n        } else {\n          currentMasks.push(path);\n        }\n\n        if (properties[i].inv && !this.solidPath) {\n          this.solidPath = this.createLayerSolidPath();\n        } // TODO move this to a factory or to a constructor\n\n\n        this.viewData[i] = {\n          elem: path,\n          lastPath: '',\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          invRect: rect\n        };\n\n        if (!this.viewData[i].prop.k) {\n          this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n        }\n      }\n    }\n\n    this.maskElement = createNS(maskType);\n    len = currentMasks.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.maskElement.appendChild(currentMasks[i]);\n    }\n\n    if (count > 0) {\n      this.maskElement.setAttribute('id', layerId);\n      this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n      defs.appendChild(this.maskElement);\n    }\n\n    if (this.viewData.length) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n\n  MaskElement.prototype.getMaskProperty = function (pos) {\n    return this.viewData[pos].prop;\n  };\n\n  MaskElement.prototype.renderFrame = function (isFirstFrame) {\n    var finalMat = this.element.finalTransform.mat;\n    var i;\n    var len = this.masksProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.viewData[i].prop._mdf || isFirstFrame) {\n        this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n      }\n\n      if (this.viewData[i].op._mdf || isFirstFrame) {\n        this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n      }\n\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n          this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n        }\n\n        if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n          var feMorph = this.storedData[i].expan;\n\n          if (this.storedData[i].x.v < 0) {\n            if (this.storedData[i].lastOperator !== 'erode') {\n              this.storedData[i].lastOperator = 'erode';\n              this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n            }\n\n            feMorph.setAttribute('radius', -this.storedData[i].x.v);\n          } else {\n            if (this.storedData[i].lastOperator !== 'dilate') {\n              this.storedData[i].lastOperator = 'dilate';\n              this.storedData[i].elem.setAttribute('filter', null);\n            }\n\n            this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n          }\n        }\n      }\n    }\n  };\n\n  MaskElement.prototype.getMaskelement = function () {\n    return this.maskElement;\n  };\n\n  MaskElement.prototype.createLayerSolidPath = function () {\n    var path = 'M0,0 ';\n    path += ' h' + this.globalData.compSize.w;\n    path += ' v' + this.globalData.compSize.h;\n    path += ' h-' + this.globalData.compSize.w;\n    path += ' v-' + this.globalData.compSize.h + ' ';\n    return path;\n  };\n\n  MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n    var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    var i;\n    var len;\n    len = pathNodes._length;\n\n    for (i = 1; i < len; i += 1) {\n      // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n    } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n    if (pathNodes.c && len > 1) {\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    } // pathNodes.__renderedString = pathString;\n\n\n    if (viewData.lastPath !== pathString) {\n      var pathShapeValue = '';\n\n      if (viewData.elem) {\n        if (pathNodes.c) {\n          pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n        }\n\n        viewData.elem.setAttribute('d', pathShapeValue);\n      }\n\n      viewData.lastPath = pathString;\n    }\n  };\n\n  MaskElement.prototype.destroy = function () {\n    this.element = null;\n    this.globalData = null;\n    this.maskElement = null;\n    this.data = null;\n    this.masksProperties = null;\n  };\n\n  var filtersFactory = function () {\n    var ob = {};\n    ob.createFilter = createFilter;\n    ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n    function createFilter(filId, skipCoordinates) {\n      var fil = createNS('filter');\n      fil.setAttribute('id', filId);\n\n      if (skipCoordinates !== true) {\n        fil.setAttribute('filterUnits', 'objectBoundingBox');\n        fil.setAttribute('x', '0%');\n        fil.setAttribute('y', '0%');\n        fil.setAttribute('width', '100%');\n        fil.setAttribute('height', '100%');\n      }\n\n      return fil;\n    }\n\n    function createAlphaToLuminanceFilter() {\n      var feColorMatrix = createNS('feColorMatrix');\n      feColorMatrix.setAttribute('type', 'matrix');\n      feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n      feColorMatrix.setAttribute('values', '0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1');\n      return feColorMatrix;\n    }\n\n    return ob;\n  }();\n\n  var featureSupport = function () {\n    var ob = {\n      maskType: true,\n      svgLumaHidden: true,\n      offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n    };\n\n    if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n      ob.maskType = false;\n    }\n\n    if (/firefox/i.test(navigator.userAgent)) {\n      ob.svgLumaHidden = false;\n    }\n\n    return ob;\n  }();\n\n  var registeredEffects$1 = {};\n  var idPrefix = 'filter_result_';\n\n  function SVGEffects(elem) {\n    var i;\n    var source = 'SourceGraphic';\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    var filId = createElementID();\n    var fil = filtersFactory.createFilter(filId, true);\n    var count = 0;\n    this.filters = [];\n    var filterManager;\n\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n\n      if (registeredEffects$1[type]) {\n        var Effect = registeredEffects$1[type].effect;\n        filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n        source = idPrefix + count;\n\n        if (registeredEffects$1[type].countsAsEffect) {\n          count += 1;\n        }\n      }\n\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n\n    if (count) {\n      elem.globalData.defs.appendChild(fil);\n      elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n    }\n\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n\n  SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n\n  SVGEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n\n    return effects;\n  };\n\n  function registerEffect$1(id, effect, countsAsEffect) {\n    registeredEffects$1[id] = {\n      effect: effect,\n      countsAsEffect: countsAsEffect\n    };\n  }\n\n  function SVGBaseElement() {}\n\n  SVGBaseElement.prototype = {\n    initRendererElement: function initRendererElement() {\n      this.layerElement = createNS('g');\n    },\n    createContainerElements: function createContainerElements() {\n      this.matteElement = createNS('g');\n      this.transformedElement = this.layerElement;\n      this.maskedElement = this.layerElement;\n      this._sizeChanged = false;\n      var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n      if (this.data.td) {\n        this.matteMasks = {};\n        var gg = createNS('g');\n        gg.setAttribute('id', this.layerId);\n        gg.appendChild(this.layerElement);\n        layerElementParent = gg;\n        this.globalData.defs.appendChild(gg);\n      } else if (this.data.tt) {\n        this.matteElement.appendChild(this.layerElement);\n        layerElementParent = this.matteElement;\n        this.baseElement = this.matteElement;\n      } else {\n        this.baseElement = this.layerElement;\n      }\n\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n      if (this.data.ty === 0 && !this.data.hd) {\n        var cp = createNS('clipPath');\n        var pt = createNS('path');\n        pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n        var clipId = createElementID();\n        cp.setAttribute('id', clipId);\n        cp.appendChild(pt);\n        this.globalData.defs.appendChild(cp);\n\n        if (this.checkMasks()) {\n          var cpGroup = createNS('g');\n          cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n          cpGroup.appendChild(this.layerElement);\n          this.transformedElement = cpGroup;\n\n          if (layerElementParent) {\n            layerElementParent.appendChild(this.transformedElement);\n          } else {\n            this.baseElement = this.transformedElement;\n          }\n        } else {\n          this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n        }\n      }\n\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      if (this.finalTransform._localMatMdf) {\n        this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n      }\n\n      if (this.finalTransform._opMdf) {\n        this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n      }\n    },\n    destroyBaseElement: function destroyBaseElement() {\n      this.layerElement = null;\n      this.matteElement = null;\n      this.maskManager.destroy();\n    },\n    getBaseElement: function getBaseElement() {\n      if (this.data.hd) {\n        return null;\n      }\n\n      return this.baseElement;\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n      this.renderableEffectsManager = new SVGEffects(this);\n      this.searchEffectTransforms();\n    },\n    getMatte: function getMatte(matteType) {\n      // This should not be a common case. But for backward compatibility, we'll create the matte object.\n      // It solves animations that have two consecutive layers marked as matte masks.\n      // Which is an undefined behavior in AE.\n      if (!this.matteMasks) {\n        this.matteMasks = {};\n      }\n\n      if (!this.matteMasks[matteType]) {\n        var id = this.layerId + '_' + matteType;\n        var filId;\n        var fil;\n        var useElement;\n        var gg;\n\n        if (matteType === 1 || matteType === 3) {\n          var masker = createNS('mask');\n          masker.setAttribute('id', id);\n          masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          masker.appendChild(useElement);\n          this.globalData.defs.appendChild(masker);\n\n          if (!featureSupport.maskType && matteType === 1) {\n            masker.setAttribute('mask-type', 'luminance');\n            filId = createElementID();\n            fil = filtersFactory.createFilter(filId);\n            this.globalData.defs.appendChild(fil);\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            gg.appendChild(useElement);\n            masker.appendChild(gg);\n            gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          }\n        } else if (matteType === 2) {\n          var maskGroup = createNS('mask');\n          maskGroup.setAttribute('id', id);\n          maskGroup.setAttribute('mask-type', 'alpha');\n          var maskGrouper = createNS('g');\n          maskGroup.appendChild(maskGrouper);\n          filId = createElementID();\n          fil = filtersFactory.createFilter(filId); /// /\n\n          var feCTr = createNS('feComponentTransfer');\n          feCTr.setAttribute('in', 'SourceGraphic');\n          fil.appendChild(feCTr);\n          var feFunc = createNS('feFuncA');\n          feFunc.setAttribute('type', 'table');\n          feFunc.setAttribute('tableValues', '1.0 0.0');\n          feCTr.appendChild(feFunc); /// /\n\n          this.globalData.defs.appendChild(fil);\n          var alphaRect = createNS('rect');\n          alphaRect.setAttribute('width', this.comp.data.w);\n          alphaRect.setAttribute('height', this.comp.data.h);\n          alphaRect.setAttribute('x', '0');\n          alphaRect.setAttribute('y', '0');\n          alphaRect.setAttribute('fill', '#ffffff');\n          alphaRect.setAttribute('opacity', '0');\n          maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          maskGrouper.appendChild(alphaRect);\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          maskGrouper.appendChild(useElement);\n\n          if (!featureSupport.maskType) {\n            maskGroup.setAttribute('mask-type', 'luminance');\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            maskGrouper.appendChild(alphaRect);\n            gg.appendChild(this.layerElement);\n            maskGrouper.appendChild(gg);\n          }\n\n          this.globalData.defs.appendChild(maskGroup);\n        }\n\n        this.matteMasks[matteType] = id;\n      }\n\n      return this.matteMasks[matteType];\n    },\n    setMatte: function setMatte(id) {\n      if (!this.matteElement) {\n        return;\n      }\n\n      this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n    }\n  };\n\n  /**\r\n   * @file\r\n   * Handles AE's layer parenting property.\r\n   *\r\n   */\n  function HierarchyElement() {}\n\n  HierarchyElement.prototype = {\n    /**\r\n       * @function\r\n       * Initializes hierarchy properties\r\n       *\r\n       */\n    initHierarchy: function initHierarchy() {\n      // element's parent list\n      this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n      this._isParent = false;\n      this.checkParenting();\n    },\n\n    /**\r\n       * @function\r\n       * Sets layer's hierarchy.\r\n       * @param {array} hierarch\r\n       * layer's parent list\r\n       *\r\n       */\n    setHierarchy: function setHierarchy(hierarchy) {\n      this.hierarchy = hierarchy;\n    },\n\n    /**\r\n       * @function\r\n       * Sets layer as parent.\r\n       *\r\n       */\n    setAsParent: function setAsParent() {\n      this._isParent = true;\n    },\n\n    /**\r\n       * @function\r\n       * Searches layer's parenting chain\r\n       *\r\n       */\n    checkParenting: function checkParenting() {\n      if (this.data.parent !== undefined) {\n        this.comp.buildElementParenting(this, this.data.parent, []);\n      }\n    }\n  };\n\n  function RenderableDOMElement() {}\n\n  (function () {\n    var _prototype = {\n      initElement: function initElement(data, globalData, comp) {\n        this.initFrame();\n        this.initBaseData(data, globalData, comp);\n        this.initTransform(data, globalData, comp);\n        this.initHierarchy();\n        this.initRenderable();\n        this.initRendererElement();\n        this.createContainerElements();\n        this.createRenderableComponents();\n        this.createContent();\n        this.hide();\n      },\n      hide: function hide() {\n        // console.log('HIDE', this);\n        if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n          var elem = this.baseElement || this.layerElement;\n          elem.style.display = 'none';\n          this.hidden = true;\n        }\n      },\n      show: function show() {\n        // console.log('SHOW', this);\n        if (this.isInRange && !this.isTransparent) {\n          if (!this.data.hd) {\n            var elem = this.baseElement || this.layerElement;\n            elem.style.display = 'block';\n          }\n\n          this.hidden = false;\n          this._isFirstFrame = true;\n        }\n      },\n      renderFrame: function renderFrame() {\n        // If it is exported as hidden (data.hd === true) no need to render\n        // If it is not visible no need to render\n        if (this.data.hd || this.hidden) {\n          return;\n        }\n\n        this.renderTransform();\n        this.renderRenderable();\n        this.renderLocalTransform();\n        this.renderElement();\n        this.renderInnerContent();\n\n        if (this._isFirstFrame) {\n          this._isFirstFrame = false;\n        }\n      },\n      renderInnerContent: function renderInnerContent() {},\n      prepareFrame: function prepareFrame(num) {\n        this._mdf = false;\n        this.prepareRenderableFrame(num);\n        this.prepareProperties(num, this.isInRange);\n        this.checkTransparency();\n      },\n      destroy: function destroy() {\n        this.innerElem = null;\n        this.destroyBaseElement();\n      }\n    };\n    extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n  })();\n\n  function IImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n\n    if (this.assetData && this.assetData.sid) {\n      this.assetData = globalData.slotManager.getProp(this.assetData);\n    }\n\n    this.initElement(data, globalData, comp);\n    this.sourceRect = {\n      top: 0,\n      left: 0,\n      width: this.assetData.w,\n      height: this.assetData.h\n    };\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n  IImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.innerElem = createNS('image');\n    this.innerElem.setAttribute('width', this.assetData.w + 'px');\n    this.innerElem.setAttribute('height', this.assetData.h + 'px');\n    this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n    this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n    this.layerElement.appendChild(this.innerElem);\n  };\n\n  IImageElement.prototype.sourceRectAtTime = function () {\n    return this.sourceRect;\n  };\n\n  function ProcessedElement(element, position) {\n    this.elem = element;\n    this.pos = position;\n  }\n\n  function IShapeElement() {}\n\n  IShapeElement.prototype = {\n    addShapeToModifiers: function addShapeToModifiers(data) {\n      var i;\n      var len = this.shapeModifiers.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.shapeModifiers[i].addShape(data);\n      }\n    },\n    isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n      var i = 0;\n      var len = this.shapeModifiers.length;\n\n      while (i < len) {\n        if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n    renderModifiers: function renderModifiers() {\n      if (!this.shapeModifiers.length) {\n        return;\n      }\n\n      var i;\n      var len = this.shapes.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].sh.reset();\n      }\n\n      len = this.shapeModifiers.length;\n      var shouldBreakProcess;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n        // TODO: find a better solution for this\n\n        if (shouldBreakProcess) {\n          break;\n        }\n      }\n    },\n    searchProcessedElement: function searchProcessedElement(elem) {\n      var elements = this.processedElements;\n      var i = 0;\n      var len = elements.length;\n\n      while (i < len) {\n        if (elements[i].elem === elem) {\n          return elements[i].pos;\n        }\n\n        i += 1;\n      }\n\n      return 0;\n    },\n    addProcessedElement: function addProcessedElement(elem, pos) {\n      var elements = this.processedElements;\n      var i = elements.length;\n\n      while (i) {\n        i -= 1;\n\n        if (elements[i].elem === elem) {\n          elements[i].pos = pos;\n          return;\n        }\n      }\n\n      elements.push(new ProcessedElement(elem, pos));\n    },\n    prepareFrame: function prepareFrame(num) {\n      this.prepareRenderableFrame(num);\n      this.prepareProperties(num, this.isInRange);\n    }\n  };\n\n  var lineCapEnum = {\n    1: 'butt',\n    2: 'round',\n    3: 'square'\n  };\n  var lineJoinEnum = {\n    1: 'miter',\n    2: 'round',\n    3: 'bevel'\n  };\n\n  function SVGShapeData(transformers, level, shape) {\n    this.caches = [];\n    this.styles = [];\n    this.transformers = transformers;\n    this.lStr = '';\n    this.sh = shape;\n    this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n    // For now, since shapes add up with other shapes. They have to be calculated every time.\n    // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n    this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n    var i = 0;\n    var len = transformers.length;\n\n    while (i < len) {\n      if (transformers[i].mProps.dynamicProperties.length) {\n        this._isAnimated = true;\n        break;\n      }\n\n      i += 1;\n    }\n  }\n\n  SVGShapeData.prototype.setAsAnimated = function () {\n    this._isAnimated = true;\n  };\n\n  function SVGStyleData(data, level) {\n    this.data = data;\n    this.type = data.ty;\n    this.d = '';\n    this.lvl = level;\n    this._mdf = false;\n    this.closed = data.hd === true;\n    this.pElem = createNS('path');\n    this.msElem = null;\n  }\n\n  SVGStyleData.prototype.reset = function () {\n    this.d = '';\n    this._mdf = false;\n  };\n\n  function DashProperty(elem, data, renderer, container) {\n    this.elem = elem;\n    this.frameId = -1;\n    this.dataProps = createSizedArray(data.length);\n    this.renderer = renderer;\n    this.k = false;\n    this.dashStr = '';\n    this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n    this.dashoffset = createTypedArray('float32', 1);\n    this.initDynamicPropertyContainer(container);\n    var i;\n    var len = data.length || 0;\n    var prop;\n\n    for (i = 0; i < len; i += 1) {\n      prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n      this.k = prop.k || this.k;\n      this.dataProps[i] = {\n        n: data[i].n,\n        p: prop\n      };\n    }\n\n    if (!this.k) {\n      this.getValue(true);\n    }\n\n    this._isAnimated = this.k;\n  }\n\n  DashProperty.prototype.getValue = function (forceRender) {\n    if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n      return;\n    }\n\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n    this._mdf = this._mdf || forceRender;\n\n    if (this._mdf) {\n      var i = 0;\n      var len = this.dataProps.length;\n\n      if (this.renderer === 'svg') {\n        this.dashStr = '';\n      }\n\n      for (i = 0; i < len; i += 1) {\n        if (this.dataProps[i].n !== 'o') {\n          if (this.renderer === 'svg') {\n            this.dashStr += ' ' + this.dataProps[i].p.v;\n          } else {\n            this.dashArray[i] = this.dataProps[i].p.v;\n          }\n        } else {\n          this.dashoffset[0] = this.dataProps[i].p.v;\n        }\n      }\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], DashProperty);\n\n  function SVGStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n    this._isAnimated = !!this._isAnimated;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n  function SVGFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n  function SVGNoStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.style = styleOb;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n  function GradientProperty(elem, data, container) {\n    this.data = data;\n    this.c = createTypedArray('uint8c', data.p * 4);\n    var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n    this.o = createTypedArray('float32', cLength);\n    this._cmdf = false;\n    this._omdf = false;\n    this._collapsable = this.checkCollapsable();\n    this._hasOpacity = cLength;\n    this.initDynamicPropertyContainer(container);\n    this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n    this.k = this.prop.k;\n    this.getValue(true);\n  }\n\n  GradientProperty.prototype.comparePoints = function (values, points) {\n    var i = 0;\n    var len = this.o.length / 2;\n    var diff;\n\n    while (i < len) {\n      diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n      if (diff > 0.01) {\n        return false;\n      }\n\n      i += 1;\n    }\n\n    return true;\n  };\n\n  GradientProperty.prototype.checkCollapsable = function () {\n    if (this.o.length / 2 !== this.c.length / 4) {\n      return false;\n    }\n\n    if (this.data.k.k[0].s) {\n      var i = 0;\n      var len = this.data.k.k.length;\n\n      while (i < len) {\n        if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n          return false;\n        }\n\n        i += 1;\n      }\n    } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n      return false;\n    }\n\n    return true;\n  };\n\n  GradientProperty.prototype.getValue = function (forceRender) {\n    this.prop.getValue();\n    this._mdf = false;\n    this._cmdf = false;\n    this._omdf = false;\n\n    if (this.prop._mdf || forceRender) {\n      var i;\n      var len = this.data.p * 4;\n      var mult;\n      var val;\n\n      for (i = 0; i < len; i += 1) {\n        mult = i % 4 === 0 ? 100 : 255;\n        val = Math.round(this.prop.v[i] * mult);\n\n        if (this.c[i] !== val) {\n          this.c[i] = val;\n          this._cmdf = !forceRender;\n        }\n      }\n\n      if (this.o.length) {\n        len = this.prop.v.length;\n\n        for (i = this.data.p * 4; i < len; i += 1) {\n          mult = i % 2 === 0 ? 100 : 1;\n          val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n          if (this.o[i - this.data.p * 4] !== val) {\n            this.o[i - this.data.p * 4] = val;\n            this._omdf = !forceRender;\n          }\n        }\n      }\n\n      this._mdf = !forceRender;\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n  function SVGGradientFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.initGradientData(elem, data, styleOb);\n  }\n\n  SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n    this.h = PropertyFactory.getProp(elem, data.h || {\n      k: 0\n    }, 0, 0.01, this);\n    this.a = PropertyFactory.getProp(elem, data.a || {\n      k: 0\n    }, 0, degToRads, this);\n    this.g = new GradientProperty(elem, data.g, this);\n    this.style = styleOb;\n    this.stops = [];\n    this.setGradientData(styleOb.pElem, data);\n    this.setGradientOpacity(data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  };\n\n  SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n    var gradientId = createElementID();\n    var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n    gfill.setAttribute('id', gradientId);\n    gfill.setAttribute('spreadMethod', 'pad');\n    gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n    var stops = [];\n    var stop;\n    var j;\n    var jLen;\n    jLen = data.g.p * 4;\n\n    for (j = 0; j < jLen; j += 4) {\n      stop = createNS('stop');\n      gfill.appendChild(stop);\n      stops.push(stop);\n    }\n\n    pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n    this.gf = gfill;\n    this.cst = stops;\n  };\n\n  SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n    if (this.g._hasOpacity && !this.g._collapsable) {\n      var stop;\n      var j;\n      var jLen;\n      var mask = createNS('mask');\n      var maskElement = createNS('path');\n      mask.appendChild(maskElement);\n      var opacityId = createElementID();\n      var maskId = createElementID();\n      mask.setAttribute('id', maskId);\n      var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n      opFill.setAttribute('id', opacityId);\n      opFill.setAttribute('spreadMethod', 'pad');\n      opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n      jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n      var stops = this.stops;\n\n      for (j = data.g.p * 4; j < jLen; j += 2) {\n        stop = createNS('stop');\n        stop.setAttribute('stop-color', 'rgb(255,255,255)');\n        opFill.appendChild(stop);\n        stops.push(stop);\n      }\n\n      maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n      if (data.ty === 'gs') {\n        maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n        maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n        if (data.lj === 1) {\n          maskElement.setAttribute('stroke-miterlimit', data.ml);\n        }\n      }\n\n      this.of = opFill;\n      this.ms = mask;\n      this.ost = stops;\n      this.maskId = maskId;\n      styleOb.msElem = maskElement;\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n  function SVGGradientStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.initGradientData(elem, data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  }\n\n  extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n  function ShapeGroupData() {\n    this.it = [];\n    this.prevViewData = [];\n    this.gr = createNS('g');\n  }\n\n  function SVGTransformData(mProps, op, container) {\n    this.transform = {\n      mProps: mProps,\n      op: op,\n      container: container\n    };\n    this.elements = [];\n    this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n  }\n\n  var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n    if (length === 0) {\n      return '';\n    }\n\n    var _o = pathNodes.o;\n    var _i = pathNodes.i;\n    var _v = pathNodes.v;\n    var i;\n    var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n    for (i = 1; i < length; i += 1) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n    }\n\n    if (closed && length) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n      shapeString += 'z';\n    }\n\n    return shapeString;\n  };\n\n  var SVGElementsRenderer = function () {\n    var _identityMatrix = new Matrix();\n\n    var _matrixHelper = new Matrix();\n\n    var ob = {\n      createRenderFunction: createRenderFunction\n    };\n\n    function createRenderFunction(data) {\n      switch (data.ty) {\n        case 'fl':\n          return renderFill;\n\n        case 'gf':\n          return renderGradient;\n\n        case 'gs':\n          return renderGradientStroke;\n\n        case 'st':\n          return renderStroke;\n\n        case 'sh':\n        case 'el':\n        case 'rc':\n        case 'sr':\n          return renderPath;\n\n        case 'tr':\n          return renderContentTransform;\n\n        case 'no':\n          return renderNoop;\n\n        default:\n          return null;\n      }\n    }\n\n    function renderContentTransform(styleData, itemData, isFirstFrame) {\n      if (isFirstFrame || itemData.transform.op._mdf) {\n        itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n      }\n\n      if (isFirstFrame || itemData.transform.mProps._mdf) {\n        itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n      }\n    }\n\n    function renderNoop() {}\n\n    function renderPath(styleData, itemData, isFirstFrame) {\n      var j;\n      var jLen;\n      var pathStringTransformed;\n      var redraw;\n      var pathNodes;\n      var l;\n      var lLen = itemData.styles.length;\n      var lvl = itemData.lvl;\n      var paths;\n      var mat;\n      var iterations;\n      var k;\n\n      for (l = 0; l < lLen; l += 1) {\n        redraw = itemData.sh._mdf || isFirstFrame;\n\n        if (itemData.styles[l].lvl < lvl) {\n          mat = _matrixHelper.reset();\n          iterations = lvl - itemData.styles[l].lvl;\n          k = itemData.transformers.length - 1;\n\n          while (!redraw && iterations > 0) {\n            redraw = itemData.transformers[k].mProps._mdf || redraw;\n            iterations -= 1;\n            k -= 1;\n          }\n\n          if (redraw) {\n            iterations = lvl - itemData.styles[l].lvl;\n            k = itemData.transformers.length - 1;\n\n            while (iterations > 0) {\n              mat.multiply(itemData.transformers[k].mProps.v);\n              iterations -= 1;\n              k -= 1;\n            }\n          }\n        } else {\n          mat = _identityMatrix;\n        }\n\n        paths = itemData.sh.paths;\n        jLen = paths._length;\n\n        if (redraw) {\n          pathStringTransformed = '';\n\n          for (j = 0; j < jLen; j += 1) {\n            pathNodes = paths.shapes[j];\n\n            if (pathNodes && pathNodes._length) {\n              pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n            }\n          }\n\n          itemData.caches[l] = pathStringTransformed;\n        } else {\n          pathStringTransformed = itemData.caches[l];\n        }\n\n        itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n        itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n      }\n    }\n\n    function renderFill(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n\n      if (itemData.c._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n      }\n    }\n\n    function renderGradientStroke(styleData, itemData, isFirstFrame) {\n      renderGradient(styleData, itemData, isFirstFrame);\n      renderStroke(styleData, itemData, isFirstFrame);\n    }\n\n    function renderGradient(styleData, itemData, isFirstFrame) {\n      var gfill = itemData.gf;\n      var hasOpacity = itemData.g._hasOpacity;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n\n      if (itemData.o._mdf || isFirstFrame) {\n        var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n        itemData.style.pElem.setAttribute(attr, itemData.o.v);\n      }\n\n      if (itemData.s._mdf || isFirstFrame) {\n        var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n        var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n        gfill.setAttribute(attr1, pt1[0]);\n        gfill.setAttribute(attr2, pt1[1]);\n\n        if (hasOpacity && !itemData.g._collapsable) {\n          itemData.of.setAttribute(attr1, pt1[0]);\n          itemData.of.setAttribute(attr2, pt1[1]);\n        }\n      }\n\n      var stops;\n      var i;\n      var len;\n      var stop;\n\n      if (itemData.g._cmdf || isFirstFrame) {\n        stops = itemData.cst;\n        var cValues = itemData.g.c;\n        len = stops.length;\n\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n          stop.setAttribute('offset', cValues[i * 4] + '%');\n          stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n        }\n      }\n\n      if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n        var oValues = itemData.g.o;\n\n        if (itemData.g._collapsable) {\n          stops = itemData.cst;\n        } else {\n          stops = itemData.ost;\n        }\n\n        len = stops.length;\n\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n\n          if (!itemData.g._collapsable) {\n            stop.setAttribute('offset', oValues[i * 2] + '%');\n          }\n\n          stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n        }\n      }\n\n      if (styleData.t === 1) {\n        if (itemData.e._mdf || isFirstFrame) {\n          gfill.setAttribute('x2', pt2[0]);\n          gfill.setAttribute('y2', pt2[1]);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('x2', pt2[0]);\n            itemData.of.setAttribute('y2', pt2[1]);\n          }\n        }\n      } else {\n        var rad;\n\n        if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n          rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          gfill.setAttribute('r', rad);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('r', rad);\n          }\n        }\n\n        if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n          if (!rad) {\n            rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          }\n\n          var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n          var percent = itemData.h.v;\n\n          if (percent >= 1) {\n            percent = 0.99;\n          } else if (percent <= -1) {\n            percent = -0.99;\n          }\n\n          var dist = rad * percent;\n          var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n          var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n          gfill.setAttribute('fx', x);\n          gfill.setAttribute('fy', y);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('fx', x);\n            itemData.of.setAttribute('fy', y);\n          }\n        } // gfill.setAttribute('fy','200');\n\n      }\n    }\n\n    function renderStroke(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n      var d = itemData.d;\n\n      if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n        styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n        styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n      }\n\n      if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n        styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n      }\n\n      if (itemData.w._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n        if (styleElem.msElem) {\n          styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n        }\n      }\n    }\n\n    return ob;\n  }();\n\n  function SVGShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = []; // Full shape data\n\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n    this.stylesList = []; // List of modifiers that will be applied to shapes\n\n    this.shapeModifiers = []; // List of items in shape tree\n\n    this.itemsData = []; // List of items in previous shape tree\n\n    this.processedElements = []; // List of animated components\n\n    this.animatedContents = [];\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n\n    this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n  SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n  SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n  SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n  SVGShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n  };\n  /*\r\n  This method searches for multiple shapes that affect a single element and one of them is animated\r\n  */\n\n\n  SVGShapeElement.prototype.filterUniqueShapes = function () {\n    var i;\n    var len = this.shapes.length;\n    var shape;\n    var j;\n    var jLen = this.stylesList.length;\n    var style;\n    var tempShapes = [];\n    var areAnimated = false;\n\n    for (j = 0; j < jLen; j += 1) {\n      style = this.stylesList[j];\n      areAnimated = false;\n      tempShapes.length = 0;\n\n      for (i = 0; i < len; i += 1) {\n        shape = this.shapes[i];\n\n        if (shape.styles.indexOf(style) !== -1) {\n          tempShapes.push(shape);\n          areAnimated = shape._isAnimated || areAnimated;\n        }\n      }\n\n      if (tempShapes.length > 1 && areAnimated) {\n        this.setShapesAsAnimated(tempShapes);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n    var i;\n    var len = shapes.length;\n\n    for (i = 0; i < len; i += 1) {\n      shapes[i].setAsAnimated();\n    }\n  };\n\n  SVGShapeElement.prototype.createStyleElement = function (data, level) {\n    // TODO: prevent drawing of hidden styles\n    var elementData;\n    var styleOb = new SVGStyleData(data, level);\n    var pathElement = styleOb.pElem;\n\n    if (data.ty === 'st') {\n      elementData = new SVGStrokeStyleData(this, data, styleOb);\n    } else if (data.ty === 'fl') {\n      elementData = new SVGFillStyleData(this, data, styleOb);\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n      elementData = new GradientConstructor(this, data, styleOb);\n      this.globalData.defs.appendChild(elementData.gf);\n\n      if (elementData.maskId) {\n        this.globalData.defs.appendChild(elementData.ms);\n        this.globalData.defs.appendChild(elementData.of);\n        pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n      }\n    } else if (data.ty === 'no') {\n      elementData = new SVGNoStyleData(this, data, styleOb);\n    }\n\n    if (data.ty === 'st' || data.ty === 'gs') {\n      pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n      pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n      pathElement.setAttribute('fill-opacity', '0');\n\n      if (data.lj === 1) {\n        pathElement.setAttribute('stroke-miterlimit', data.ml);\n      }\n    }\n\n    if (data.r === 2) {\n      pathElement.setAttribute('fill-rule', 'evenodd');\n    }\n\n    if (data.ln) {\n      pathElement.setAttribute('id', data.ln);\n    }\n\n    if (data.cl) {\n      pathElement.setAttribute('class', data.cl);\n    }\n\n    if (data.bm) {\n      pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n\n    this.stylesList.push(styleOb);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createGroupElement = function (data) {\n    var elementData = new ShapeGroupData();\n\n    if (data.ln) {\n      elementData.gr.setAttribute('id', data.ln);\n    }\n\n    if (data.cl) {\n      elementData.gr.setAttribute('class', data.cl);\n    }\n\n    if (data.bm) {\n      elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createTransformElement = function (data, container) {\n    var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n    var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n    var ty = 4;\n\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n\n    var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n    var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n    var i = 0;\n    var len = this.animatedContents.length;\n\n    while (i < len) {\n      if (this.animatedContents[i].element === element) {\n        return;\n      }\n\n      i += 1;\n    }\n\n    this.animatedContents.push({\n      fn: SVGElementsRenderer.createRenderFunction(data),\n      element: element,\n      data: data\n    });\n  };\n\n  SVGShapeElement.prototype.setElementStyles = function (elementData) {\n    var arr = elementData.styles;\n    var j;\n    var jLen = this.stylesList.length;\n\n    for (j = 0; j < jLen; j += 1) {\n      if (!this.stylesList[j].closed) {\n        arr.push(this.stylesList[j]);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n    len = this.dynamicProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n\n    this.renderModifiers();\n  };\n\n  SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n    var ownTransformers = [].concat(transformers);\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var currentTransform;\n    var modifier;\n    var processedPos;\n\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n\n      if (!processedPos) {\n        arr[i]._render = render;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], level);\n        } else {\n          itemsData[i].style.closed = false;\n        }\n\n        if (arr[i]._render) {\n          if (itemsData[i].style.pElem.parentNode !== container) {\n            container.appendChild(itemsData[i].style.pElem);\n          }\n        }\n\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n        if (arr[i]._render) {\n          if (itemsData[i].gr.parentNode !== container) {\n            container.appendChild(itemsData[i].gr);\n          }\n        }\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          itemsData[i] = this.createTransformElement(arr[i], container);\n        }\n\n        currentTransform = itemsData[i].transform;\n        ownTransformers.push(currentTransform);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n        }\n\n        this.setElementStyles(itemsData[i]);\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          render = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n\n        ownModifiers.push(modifier);\n      }\n\n      this.addProcessedElement(arr[i], i + 1);\n    }\n\n    len = ownStyles.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownStyles[i].closed = true;\n    }\n\n    len = ownModifiers.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n\n  SVGShapeElement.prototype.renderInnerContent = function () {\n    this.renderModifiers();\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.stylesList[i].reset();\n    }\n\n    this.renderShape();\n\n    for (i = 0; i < len; i += 1) {\n      if (this.stylesList[i]._mdf || this._isFirstFrame) {\n        if (this.stylesList[i].msElem) {\n          this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n          this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n        }\n\n        this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.renderShape = function () {\n    var i;\n    var len = this.animatedContents.length;\n    var animatedContent;\n\n    for (i = 0; i < len; i += 1) {\n      animatedContent = this.animatedContents[i];\n\n      if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n        animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.destroy = function () {\n    this.destroyBaseElement();\n    this.shapesData = null;\n    this.itemsData = null;\n  };\n\n  function LetterProps(o, sw, sc, fc, m, p) {\n    this.o = o;\n    this.sw = sw;\n    this.sc = sc;\n    this.fc = fc;\n    this.m = m;\n    this.p = p;\n    this._mdf = {\n      o: true,\n      sw: !!sw,\n      sc: !!sc,\n      fc: !!fc,\n      m: true,\n      p: true\n    };\n  }\n\n  LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n    this._mdf.o = false;\n    this._mdf.sw = false;\n    this._mdf.sc = false;\n    this._mdf.fc = false;\n    this._mdf.m = false;\n    this._mdf.p = false;\n    var updated = false;\n\n    if (this.o !== o) {\n      this.o = o;\n      this._mdf.o = true;\n      updated = true;\n    }\n\n    if (this.sw !== sw) {\n      this.sw = sw;\n      this._mdf.sw = true;\n      updated = true;\n    }\n\n    if (this.sc !== sc) {\n      this.sc = sc;\n      this._mdf.sc = true;\n      updated = true;\n    }\n\n    if (this.fc !== fc) {\n      this.fc = fc;\n      this._mdf.fc = true;\n      updated = true;\n    }\n\n    if (this.m !== m) {\n      this.m = m;\n      this._mdf.m = true;\n      updated = true;\n    }\n\n    if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n      this.p = p;\n      this._mdf.p = true;\n      updated = true;\n    }\n\n    return updated;\n  };\n\n  function TextProperty(elem, data) {\n    this._frameId = initialDefaultFrame;\n    this.pv = '';\n    this.v = '';\n    this.kf = false;\n    this._isFirstFrame = true;\n    this._mdf = false;\n\n    if (data.d && data.d.sid) {\n      data.d = elem.globalData.slotManager.getProp(data.d);\n    }\n\n    this.data = data;\n    this.elem = elem;\n    this.comp = this.elem.comp;\n    this.keysIndex = 0;\n    this.canResize = false;\n    this.minimumFontSize = 1;\n    this.effectsSequence = [];\n    this.currentData = {\n      ascent: 0,\n      boxWidth: this.defaultBoxWidth,\n      f: '',\n      fStyle: '',\n      fWeight: '',\n      fc: '',\n      j: '',\n      justifyOffset: '',\n      l: [],\n      lh: 0,\n      lineWidths: [],\n      ls: '',\n      of: '',\n      s: '',\n      sc: '',\n      sw: 0,\n      t: 0,\n      tr: 0,\n      sz: 0,\n      ps: null,\n      fillColorAnim: false,\n      strokeColorAnim: false,\n      strokeWidthAnim: false,\n      yOffset: 0,\n      finalSize: 0,\n      finalText: [],\n      finalLineHeight: 0,\n      __complete: false\n    };\n    this.copyData(this.currentData, this.data.d.k[0].s);\n\n    if (!this.searchProperty()) {\n      this.completeTextData(this.currentData);\n    }\n  }\n\n  TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n  TextProperty.prototype.copyData = function (obj, data) {\n    for (var s in data) {\n      if (Object.prototype.hasOwnProperty.call(data, s)) {\n        obj[s] = data[s];\n      }\n    }\n\n    return obj;\n  };\n\n  TextProperty.prototype.setCurrentData = function (data) {\n    if (!data.__complete) {\n      this.completeTextData(data);\n    }\n\n    this.currentData = data;\n    this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n    this._mdf = true;\n  };\n\n  TextProperty.prototype.searchProperty = function () {\n    return this.searchKeyframes();\n  };\n\n  TextProperty.prototype.searchKeyframes = function () {\n    this.kf = this.data.d.k.length > 1;\n\n    if (this.kf) {\n      this.addEffect(this.getKeyframeValue.bind(this));\n    }\n\n    return this.kf;\n  };\n\n  TextProperty.prototype.addEffect = function (effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.getValue = function (_finalValue) {\n    if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n      return;\n    }\n\n    this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n    var currentValue = this.currentData;\n    var currentIndex = this.keysIndex;\n\n    if (this.lock) {\n      this.setCurrentData(this.currentData);\n      return;\n    }\n\n    this.lock = true;\n    this._mdf = false;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n    for (i = 0; i < len; i += 1) {\n      // Checking if index changed to prevent creating a new object every time the expression updates.\n      if (currentIndex !== this.keysIndex) {\n        finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n      } else {\n        finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n      }\n    }\n\n    if (currentValue !== finalValue) {\n      this.setCurrentData(finalValue);\n    }\n\n    this.v = this.currentData;\n    this.pv = this.v;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  };\n\n  TextProperty.prototype.getKeyframeValue = function () {\n    var textKeys = this.data.d.k;\n    var frameNum = this.elem.comp.renderedFrame;\n    var i = 0;\n    var len = textKeys.length;\n\n    while (i <= len - 1) {\n      if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n        break;\n      }\n\n      i += 1;\n    }\n\n    if (this.keysIndex !== i) {\n      this.keysIndex = i;\n    }\n\n    return this.data.d.k[this.keysIndex].s;\n  };\n\n  TextProperty.prototype.buildFinalText = function (text) {\n    var charactersArray = [];\n    var i = 0;\n    var len = text.length;\n    var charCode;\n    var secondCharCode;\n    var shouldCombine = false;\n    var shouldCombineNext = false;\n    var currentChars = '';\n\n    while (i < len) {\n      shouldCombine = shouldCombineNext;\n      shouldCombineNext = false;\n      charCode = text.charCodeAt(i);\n      currentChars = text.charAt(i);\n\n      if (FontManager.isCombinedCharacter(charCode)) {\n        shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n      } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n        if (FontManager.isRegionalFlag(text, i)) {\n          currentChars = text.substr(i, 14);\n        } else {\n          secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n          if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n            if (FontManager.isModifier(charCode, secondCharCode)) {\n              currentChars = text.substr(i, 2);\n              shouldCombine = true;\n            } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n              currentChars = text.substr(i, 4);\n            } else {\n              currentChars = text.substr(i, 2);\n            }\n          }\n        }\n      } else if (charCode > 0xDBFF) {\n        secondCharCode = text.charCodeAt(i + 1);\n\n        if (FontManager.isVariationSelector(charCode)) {\n          shouldCombine = true;\n        }\n      } else if (FontManager.isZeroWidthJoiner(charCode)) {\n        shouldCombine = true;\n        shouldCombineNext = true;\n      }\n\n      if (shouldCombine) {\n        charactersArray[charactersArray.length - 1] += currentChars;\n        shouldCombine = false;\n      } else {\n        charactersArray.push(currentChars);\n      }\n\n      i += currentChars.length;\n    }\n\n    return charactersArray;\n  };\n\n  TextProperty.prototype.completeTextData = function (documentData) {\n    documentData.__complete = true;\n    var fontManager = this.elem.globalData.fontManager;\n    var data = this.data;\n    var letters = [];\n    var i;\n    var len;\n    var newLineFlag;\n    var index = 0;\n    var val;\n    var anchorGrouping = data.m.g;\n    var currentSize = 0;\n    var currentPos = 0;\n    var currentLine = 0;\n    var lineWidths = [];\n    var lineWidth = 0;\n    var maxLineWidth = 0;\n    var j;\n    var jLen;\n    var fontData = fontManager.getFontByName(documentData.f);\n    var charData;\n    var cLength = 0;\n    var fontProps = getFontProperties(fontData);\n    documentData.fWeight = fontProps.weight;\n    documentData.fStyle = fontProps.style;\n    documentData.finalSize = documentData.s;\n    documentData.finalText = this.buildFinalText(documentData.t);\n    len = documentData.finalText.length;\n    documentData.finalLineHeight = documentData.lh;\n    var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n    var charCode;\n\n    if (documentData.sz) {\n      var flag = true;\n      var boxWidth = documentData.sz[0];\n      var boxHeight = documentData.sz[1];\n      var currentHeight;\n      var finalText;\n\n      while (flag) {\n        finalText = this.buildFinalText(documentData.t);\n        currentHeight = 0;\n        lineWidth = 0;\n        len = finalText.length;\n        trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n        var lastSpaceIndex = -1;\n\n        for (i = 0; i < len; i += 1) {\n          charCode = finalText[i].charCodeAt(0);\n          newLineFlag = false;\n\n          if (finalText[i] === ' ') {\n            lastSpaceIndex = i;\n          } else if (charCode === 13 || charCode === 3) {\n            lineWidth = 0;\n            newLineFlag = true;\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n          }\n\n          if (fontManager.chars) {\n            charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n            cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n          } else {\n            // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n            cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n          }\n\n          if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n            if (lastSpaceIndex === -1) {\n              len += 1;\n            } else {\n              i = lastSpaceIndex;\n            }\n\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n            finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n            lastSpaceIndex = -1;\n            lineWidth = 0;\n          } else {\n            lineWidth += cLength;\n            lineWidth += trackingOffset;\n          }\n        }\n\n        currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n        if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n          documentData.finalSize -= 1;\n          documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n        } else {\n          documentData.finalText = finalText;\n          len = documentData.finalText.length;\n          flag = false;\n        }\n      }\n    }\n\n    lineWidth = -trackingOffset;\n    cLength = 0;\n    var uncollapsedSpaces = 0;\n    var currentChar;\n\n    for (i = 0; i < len; i += 1) {\n      newLineFlag = false;\n      currentChar = documentData.finalText[i];\n      charCode = currentChar.charCodeAt(0);\n\n      if (charCode === 13 || charCode === 3) {\n        uncollapsedSpaces = 0;\n        lineWidths.push(lineWidth);\n        maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n        lineWidth = -2 * trackingOffset;\n        val = '';\n        newLineFlag = true;\n        currentLine += 1;\n      } else {\n        val = currentChar;\n      }\n\n      if (fontManager.chars) {\n        charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n        cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n      } else {\n        // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n        // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n        cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n      } //\n\n\n      if (currentChar === ' ') {\n        uncollapsedSpaces += cLength + trackingOffset;\n      } else {\n        lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n        uncollapsedSpaces = 0;\n      }\n\n      letters.push({\n        l: cLength,\n        an: cLength,\n        add: currentSize,\n        n: newLineFlag,\n        anIndexes: [],\n        val: val,\n        line: currentLine,\n        animatorJustifyOffset: 0\n      });\n\n      if (anchorGrouping == 2) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n\n        if (val === '' || val === ' ' || i === len - 1) {\n          if (val === '' || val === ' ') {\n            currentSize -= cLength;\n          }\n\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n\n          index += 1;\n          currentSize = 0;\n        }\n      } else if (anchorGrouping == 3) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n\n        if (val === '' || i === len - 1) {\n          if (val === '') {\n            currentSize -= cLength;\n          }\n\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n\n          currentSize = 0;\n          index += 1;\n        }\n      } else {\n        letters[index].ind = index;\n        letters[index].extra = 0;\n        index += 1;\n      }\n    }\n\n    documentData.l = letters;\n    maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n    lineWidths.push(lineWidth);\n\n    if (documentData.sz) {\n      documentData.boxWidth = documentData.sz[0];\n      documentData.justifyOffset = 0;\n    } else {\n      documentData.boxWidth = maxLineWidth;\n\n      switch (documentData.j) {\n        case 1:\n          documentData.justifyOffset = -documentData.boxWidth;\n          break;\n\n        case 2:\n          documentData.justifyOffset = -documentData.boxWidth / 2;\n          break;\n\n        default:\n          documentData.justifyOffset = 0;\n      }\n    }\n\n    documentData.lineWidths = lineWidths;\n    var animators = data.a;\n    var animatorData;\n    var letterData;\n    jLen = animators.length;\n    var based;\n    var ind;\n    var indexes = [];\n\n    for (j = 0; j < jLen; j += 1) {\n      animatorData = animators[j];\n\n      if (animatorData.a.sc) {\n        documentData.strokeColorAnim = true;\n      }\n\n      if (animatorData.a.sw) {\n        documentData.strokeWidthAnim = true;\n      }\n\n      if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n        documentData.fillColorAnim = true;\n      }\n\n      ind = 0;\n      based = animatorData.s.b;\n\n      for (i = 0; i < len; i += 1) {\n        letterData = letters[i];\n        letterData.anIndexes[j] = ind;\n\n        if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n          // eslint-disable-line eqeqeq\n          if (animatorData.s.rn === 1) {\n            indexes.push(ind);\n          }\n\n          ind += 1;\n        }\n      }\n\n      data.a[j].s.totalChars = ind;\n      var currentInd = -1;\n      var newInd;\n\n      if (animatorData.s.rn === 1) {\n        for (i = 0; i < len; i += 1) {\n          letterData = letters[i];\n\n          if (currentInd != letterData.anIndexes[j]) {\n            // eslint-disable-line eqeqeq\n            currentInd = letterData.anIndexes[j];\n            newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n          }\n\n          letterData.anIndexes[j] = newInd;\n        }\n      }\n    }\n\n    documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n    documentData.ls = documentData.ls || 0;\n    documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n  };\n\n  TextProperty.prototype.updateDocumentData = function (newData, index) {\n    index = index === undefined ? this.keysIndex : index;\n    var dData = this.copyData({}, this.data.d.k[index].s);\n    dData = this.copyData(dData, newData);\n    this.data.d.k[index].s = dData;\n    this.recalculate(index);\n    this.setCurrentData(dData);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.recalculate = function (index) {\n    var dData = this.data.d.k[index].s;\n    dData.__complete = false;\n    this.keysIndex = 0;\n    this._isFirstFrame = true;\n    this.getValue(dData);\n  };\n\n  TextProperty.prototype.canResizeFont = function (_canResize) {\n    this.canResize = _canResize;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n    this.minimumFontSize = Math.floor(_fontValue) || 1;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n\n  var TextSelectorProp = function () {\n    var max = Math.max;\n    var min = Math.min;\n    var floor = Math.floor;\n\n    function TextSelectorPropFactory(elem, data) {\n      this._currentTextLength = -1;\n      this.k = false;\n      this.data = data;\n      this.elem = elem;\n      this.comp = elem.comp;\n      this.finalS = 0;\n      this.finalE = 0;\n      this.initDynamicPropertyContainer(elem);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: 0\n      }, 0, 0, this);\n\n      if ('e' in data) {\n        this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n      } else {\n        this.e = {\n          v: 100\n        };\n      }\n\n      this.o = PropertyFactory.getProp(elem, data.o || {\n        k: 0\n      }, 0, 0, this);\n      this.xe = PropertyFactory.getProp(elem, data.xe || {\n        k: 0\n      }, 0, 0, this);\n      this.ne = PropertyFactory.getProp(elem, data.ne || {\n        k: 0\n      }, 0, 0, this);\n      this.sm = PropertyFactory.getProp(elem, data.sm || {\n        k: 100\n      }, 0, 0, this);\n      this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n      if (!this.dynamicProperties.length) {\n        this.getValue();\n      }\n    }\n\n    TextSelectorPropFactory.prototype = {\n      getMult: function getMult(ind) {\n        if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n          this.getValue();\n        }\n\n        var x1 = 0;\n        var y1 = 0;\n        var x2 = 1;\n        var y2 = 1;\n\n        if (this.ne.v > 0) {\n          x1 = this.ne.v / 100.0;\n        } else {\n          y1 = -this.ne.v / 100.0;\n        }\n\n        if (this.xe.v > 0) {\n          x2 = 1.0 - this.xe.v / 100.0;\n        } else {\n          y2 = 1.0 + this.xe.v / 100.0;\n        }\n\n        var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n        var mult = 0;\n        var s = this.finalS;\n        var e = this.finalE;\n        var type = this.data.sh;\n\n        if (type === 2) {\n          if (e === s) {\n            mult = ind >= e ? 1 : 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n\n          mult = easer(mult);\n        } else if (type === 3) {\n          if (e === s) {\n            mult = ind >= e ? 0 : 1;\n          } else {\n            mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n\n          mult = easer(mult);\n        } else if (type === 4) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n            if (mult < 0.5) {\n              mult *= 2;\n            } else {\n              mult = 1 - 2 * (mult - 0.5);\n            }\n          }\n\n          mult = easer(mult);\n        } else if (type === 5) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            var tot = e - s;\n            /* ind += 0.5;\r\n                      mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            var x = -tot / 2 + ind;\n            var a = tot / 2;\n            mult = Math.sqrt(1 - x * x / (a * a));\n          }\n\n          mult = easer(mult);\n        } else if (type === 6) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n          }\n\n          mult = easer(mult);\n        } else {\n          if (ind >= floor(s)) {\n            if (ind - s < 0) {\n              mult = max(0, min(min(e, 1) - (s - ind), 1));\n            } else {\n              mult = max(0, min(e - ind, 1));\n            }\n          }\n\n          mult = easer(mult);\n        } // Smoothness implementation.\n        // The smoothness represents a reduced range of the original [0; 1] range.\n        // if smoothness is 25%, the new range will be [0.375; 0.625]\n        // Steps are:\n        // - find the lower value of the new range (threshold)\n        // - if multiplier is smaller than that value, floor it to 0\n        // - if it is larger,\n        //     - subtract the threshold\n        //     - divide it by the smoothness (this will return the range to [0; 1])\n        // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n        if (this.sm.v !== 100) {\n          var smoothness = this.sm.v * 0.01;\n\n          if (smoothness === 0) {\n            smoothness = 0.00000001;\n          }\n\n          var threshold = 0.5 - smoothness * 0.5;\n\n          if (mult < threshold) {\n            mult = 0;\n          } else {\n            mult = (mult - threshold) / smoothness;\n\n            if (mult > 1) {\n              mult = 1;\n            }\n          }\n        }\n\n        return mult * this.a.v;\n      },\n      getValue: function getValue(newCharsFlag) {\n        this.iterateDynamicProperties();\n        this._mdf = newCharsFlag || this._mdf;\n        this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n        if (newCharsFlag && this.data.r === 2) {\n          this.e.v = this._currentTextLength;\n        }\n\n        var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n        var o = this.o.v / divisor;\n        var s = this.s.v / divisor + o;\n        var e = this.e.v / divisor + o;\n\n        if (s > e) {\n          var _s = s;\n          s = e;\n          e = _s;\n        }\n\n        this.finalS = s;\n        this.finalE = e;\n      }\n    };\n    extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n    function getTextSelectorProp(elem, data, arr) {\n      return new TextSelectorPropFactory(elem, data, arr);\n    }\n\n    return {\n      getTextSelectorProp: getTextSelectorProp\n    };\n  }();\n\n  function TextAnimatorDataProperty(elem, animatorProps, container) {\n    var defaultData = {\n      propType: false\n    };\n    var getProp = PropertyFactory.getProp;\n    var textAnimatorAnimatables = animatorProps.a;\n    this.a = {\n      r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n      rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n      ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n      sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n      sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n      s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n      a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n      o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n      p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n      sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n      sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n      fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n      fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n      fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n      fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n      t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n    };\n    this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n    this.s.t = animatorProps.s.t;\n  }\n\n  function TextAnimatorProperty(textData, renderType, elem) {\n    this._isFirstFrame = true;\n    this._hasMaskedPath = false;\n    this._frameId = -1;\n    this._textData = textData;\n    this._renderType = renderType;\n    this._elem = elem;\n    this._animatorsData = createSizedArray(this._textData.a.length);\n    this._pathData = {};\n    this._moreOptions = {\n      alignment: {}\n    };\n    this.renderedLetters = [];\n    this.lettersChangedFlag = false;\n    this.initDynamicPropertyContainer(elem);\n  }\n\n  TextAnimatorProperty.prototype.searchProperties = function () {\n    var i;\n    var len = this._textData.a.length;\n    var animatorProps;\n    var getProp = PropertyFactory.getProp;\n\n    for (i = 0; i < len; i += 1) {\n      animatorProps = this._textData.a[i];\n      this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n    }\n\n    if (this._textData.p && 'm' in this._textData.p) {\n      this._pathData = {\n        a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n        f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n        l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n        r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n        p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n        m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n      };\n      this._hasMaskedPath = true;\n    } else {\n      this._hasMaskedPath = false;\n    }\n\n    this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n  };\n\n  TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n    this.lettersChangedFlag = lettersChangedFlag;\n\n    if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n      return;\n    }\n\n    this._isFirstFrame = false;\n    var alignment = this._moreOptions.alignment.v;\n    var animators = this._animatorsData;\n    var textData = this._textData;\n    var matrixHelper = this.mHelper;\n    var renderType = this._renderType;\n    var renderedLettersCount = this.renderedLetters.length;\n    var xPos;\n    var yPos;\n    var i;\n    var len;\n    var letters = documentData.l;\n    var pathInfo;\n    var currentLength;\n    var currentPoint;\n    var segmentLength;\n    var flag;\n    var pointInd;\n    var segmentInd;\n    var prevPoint;\n    var points;\n    var segments;\n    var partialLength;\n    var totalLength;\n    var perc;\n    var tanAngle;\n    var mask;\n\n    if (this._hasMaskedPath) {\n      mask = this._pathData.m;\n\n      if (!this._pathData.n || this._pathData._mdf) {\n        var paths = mask.v;\n\n        if (this._pathData.r.v) {\n          paths = paths.reverse();\n        } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n        pathInfo = {\n          tLength: 0,\n          segments: []\n        };\n        len = paths._length - 1;\n        var bezierData;\n        totalLength = 0;\n\n        for (i = 0; i < len; i += 1) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n\n        i = len;\n\n        if (mask.v.c) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n\n        this._pathData.pi = pathInfo;\n      }\n\n      pathInfo = this._pathData.pi;\n      currentLength = this._pathData.f.v;\n      segmentInd = 0;\n      pointInd = 1;\n      segmentLength = 0;\n      flag = true;\n      segments = pathInfo.segments;\n\n      if (currentLength < 0 && mask.v.c) {\n        if (pathInfo.tLength < Math.abs(currentLength)) {\n          currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n        }\n\n        segmentInd = segments.length - 1;\n        points = segments[segmentInd].points;\n        pointInd = points.length - 1;\n\n        while (currentLength < 0) {\n          currentLength += points[pointInd].partialLength;\n          pointInd -= 1;\n\n          if (pointInd < 0) {\n            segmentInd -= 1;\n            points = segments[segmentInd].points;\n            pointInd = points.length - 1;\n          }\n        }\n      }\n\n      points = segments[segmentInd].points;\n      prevPoint = points[pointInd - 1];\n      currentPoint = points[pointInd];\n      partialLength = currentPoint.partialLength;\n    }\n\n    len = letters.length;\n    xPos = 0;\n    yPos = 0;\n    var yOff = documentData.finalSize * 1.2 * 0.714;\n    var firstLine = true;\n    var animatorProps;\n    var animatorSelector;\n    var j;\n    var jLen;\n    var letterValue;\n    jLen = animators.length;\n    var mult;\n    var ind = -1;\n    var offf;\n    var xPathPos;\n    var yPathPos;\n    var initPathPos = currentLength;\n    var initSegmentInd = segmentInd;\n    var initPointInd = pointInd;\n    var currentLine = -1;\n    var elemOpacity;\n    var sc;\n    var sw;\n    var fc;\n    var k;\n    var letterSw;\n    var letterSc;\n    var letterFc;\n    var letterM = '';\n    var letterP = this.defaultPropsArray;\n    var letterO; //\n\n    if (documentData.j === 2 || documentData.j === 1) {\n      var animatorJustifyOffset = 0;\n      var animatorFirstCharOffset = 0;\n      var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n      var lastIndex = 0;\n      var isNewLine = true;\n\n      for (i = 0; i < len; i += 1) {\n        if (letters[i].n) {\n          if (animatorJustifyOffset) {\n            animatorJustifyOffset += animatorFirstCharOffset;\n          }\n\n          while (lastIndex < i) {\n            letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n            lastIndex += 1;\n          }\n\n          animatorJustifyOffset = 0;\n          isNewLine = true;\n        } else {\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n\n            if (animatorProps.t.propType) {\n              if (isNewLine && documentData.j === 2) {\n                animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n              }\n\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n              } else {\n                animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n              }\n            }\n          }\n\n          isNewLine = false;\n        }\n      }\n\n      if (animatorJustifyOffset) {\n        animatorJustifyOffset += animatorFirstCharOffset;\n      }\n\n      while (lastIndex < i) {\n        letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n        lastIndex += 1;\n      }\n    } //\n\n\n    for (i = 0; i < len; i += 1) {\n      matrixHelper.reset();\n      elemOpacity = 1;\n\n      if (letters[i].n) {\n        xPos = 0;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        currentLength = initPathPos;\n        firstLine = false;\n\n        if (this._hasMaskedPath) {\n          segmentInd = initSegmentInd;\n          pointInd = initPointInd;\n          points = segments[segmentInd].points;\n          prevPoint = points[pointInd - 1];\n          currentPoint = points[pointInd];\n          partialLength = currentPoint.partialLength;\n          segmentLength = 0;\n        }\n\n        letterM = '';\n        letterFc = '';\n        letterSw = '';\n        letterO = '';\n        letterP = this.defaultPropsArray;\n      } else {\n        if (this._hasMaskedPath) {\n          if (currentLine !== letters[i].line) {\n            switch (documentData.j) {\n              case 1:\n                currentLength += totalLength - documentData.lineWidths[letters[i].line];\n                break;\n\n              case 2:\n                currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n                break;\n\n              default:\n                break;\n            }\n\n            currentLine = letters[i].line;\n          }\n\n          if (ind !== letters[i].ind) {\n            if (letters[ind]) {\n              currentLength += letters[ind].extra;\n            }\n\n            currentLength += letters[i].an / 2;\n            ind = letters[i].ind;\n          }\n\n          currentLength += alignment[0] * letters[i].an * 0.005;\n          var animatorOffset = 0;\n\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n\n            if (animatorProps.p.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorOffset += animatorProps.p.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.p.v[0] * mult;\n              }\n            }\n\n            if (animatorProps.a.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorOffset += animatorProps.a.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.a.v[0] * mult;\n              }\n            }\n          }\n\n          flag = true; // Force alignment only works with a single line for now\n\n          if (this._pathData.a.v) {\n            currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n            currentLength += this._pathData.f.v;\n          }\n\n          while (flag) {\n            if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n              perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n              xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n              yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n              matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n              flag = false;\n            } else if (points) {\n              segmentLength += currentPoint.partialLength;\n              pointInd += 1;\n\n              if (pointInd >= points.length) {\n                pointInd = 0;\n                segmentInd += 1;\n\n                if (!segments[segmentInd]) {\n                  if (mask.v.c) {\n                    pointInd = 0;\n                    segmentInd = 0;\n                    points = segments[segmentInd].points;\n                  } else {\n                    segmentLength -= currentPoint.partialLength;\n                    points = null;\n                  }\n                } else {\n                  points = segments[segmentInd].points;\n                }\n              }\n\n              if (points) {\n                prevPoint = currentPoint;\n                currentPoint = points[pointInd];\n                partialLength = currentPoint.partialLength;\n              }\n            }\n          }\n\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0);\n        } else {\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n          matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.t.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n            if (xPos !== 0 || documentData.j !== 0) {\n              if (this._hasMaskedPath) {\n                if (mult.length) {\n                  currentLength += animatorProps.t.v * mult[0];\n                } else {\n                  currentLength += animatorProps.t.v * mult;\n                }\n              } else if (mult.length) {\n                xPos += animatorProps.t.v * mult[0];\n              } else {\n                xPos += animatorProps.t.v * mult;\n              }\n            }\n          }\n        }\n\n        if (documentData.strokeWidthAnim) {\n          sw = documentData.sw || 0;\n        }\n\n        if (documentData.strokeColorAnim) {\n          if (documentData.sc) {\n            sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n          } else {\n            sc = [0, 0, 0];\n          }\n        }\n\n        if (documentData.fillColorAnim && documentData.fc) {\n          fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.a.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (mult.length) {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.s.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (mult.length) {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n            } else {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          animatorSelector = animators[j].s;\n          mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n          if (animatorProps.sk.propType) {\n            if (mult.length) {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n            } else {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n            }\n          }\n\n          if (animatorProps.r.propType) {\n            if (mult.length) {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n            } else {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult);\n            }\n          }\n\n          if (animatorProps.ry.propType) {\n            if (mult.length) {\n              matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n            } else {\n              matrixHelper.rotateY(animatorProps.ry.v * mult);\n            }\n          }\n\n          if (animatorProps.rx.propType) {\n            if (mult.length) {\n              matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n            } else {\n              matrixHelper.rotateX(animatorProps.rx.v * mult);\n            }\n          }\n\n          if (animatorProps.o.propType) {\n            if (mult.length) {\n              elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n            } else {\n              elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n            }\n          }\n\n          if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n            if (mult.length) {\n              sw += animatorProps.sw.v * mult[0];\n            } else {\n              sw += animatorProps.sw.v * mult;\n            }\n          }\n\n          if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n            for (k = 0; k < 3; k += 1) {\n              if (mult.length) {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n              } else {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n              }\n            }\n          }\n\n          if (documentData.fillColorAnim && documentData.fc) {\n            if (animatorProps.fc.propType) {\n              for (k = 0; k < 3; k += 1) {\n                if (mult.length) {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n                } else {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n                }\n              }\n            }\n\n            if (animatorProps.fh.propType) {\n              if (mult.length) {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n              } else {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n              }\n            }\n\n            if (animatorProps.fs.propType) {\n              if (mult.length) {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n              } else {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n              }\n            }\n\n            if (animatorProps.fb.propType) {\n              if (mult.length) {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n              } else {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n              }\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.p.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (this._hasMaskedPath) {\n              if (mult.length) {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n              } else {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n              }\n            } else if (mult.length) {\n              matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n            }\n          }\n        }\n\n        if (documentData.strokeWidthAnim) {\n          letterSw = sw < 0 ? 0 : sw;\n        }\n\n        if (documentData.strokeColorAnim) {\n          letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n        }\n\n        if (documentData.fillColorAnim && documentData.fc) {\n          letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n        }\n\n        if (this._hasMaskedPath) {\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n          if (this._pathData.p.v) {\n            tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n            var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n            if (currentPoint.point[0] < prevPoint.point[0]) {\n              rot += 180;\n            }\n\n            matrixHelper.rotate(-rot * Math.PI / 180);\n          }\n\n          matrixHelper.translate(xPathPos, yPathPos, 0);\n          currentLength -= alignment[0] * letters[i].an * 0.005;\n\n          if (letters[i + 1] && ind !== letters[i + 1].ind) {\n            currentLength += letters[i].an / 2;\n            currentLength += documentData.tr * 0.001 * documentData.finalSize;\n          }\n        } else {\n          matrixHelper.translate(xPos, yPos, 0);\n\n          if (documentData.ps) {\n            // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n            matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n          }\n\n          switch (documentData.j) {\n            case 1:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n              break;\n\n            case 2:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n              break;\n\n            default:\n              break;\n          }\n\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(offf, 0, 0);\n          matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n          xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n        }\n\n        if (renderType === 'html') {\n          letterM = matrixHelper.toCSS();\n        } else if (renderType === 'svg') {\n          letterM = matrixHelper.to2dCSS();\n        } else {\n          letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n        }\n\n        letterO = elemOpacity;\n      }\n\n      if (renderedLettersCount <= i) {\n        letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n        this.renderedLetters.push(letterValue);\n        renderedLettersCount += 1;\n        this.lettersChangedFlag = true;\n      } else {\n        letterValue = this.renderedLetters[i];\n        this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n      }\n    }\n  };\n\n  TextAnimatorProperty.prototype.getValue = function () {\n    if (this._elem.globalData.frameId === this._frameId) {\n      return;\n    }\n\n    this._frameId = this._elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n\n  TextAnimatorProperty.prototype.mHelper = new Matrix();\n  TextAnimatorProperty.prototype.defaultPropsArray = [];\n  extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n  function ITextElement() {}\n\n  ITextElement.prototype.initElement = function (data, globalData, comp) {\n    this.lettersChangedFlag = true;\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n    this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n    this.initRenderable();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n    this.createContent();\n    this.hide();\n    this.textAnimator.searchProperties(this.dynamicProperties);\n  };\n\n  ITextElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n  };\n\n  ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n    var j;\n    var jLen = shapes.length;\n    var pathNodes;\n    var shapeStr = '';\n\n    for (j = 0; j < jLen; j += 1) {\n      if (shapes[j].ty === 'sh') {\n        pathNodes = shapes[j].ks.k;\n        shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n      }\n    }\n\n    return shapeStr;\n  };\n\n  ITextElement.prototype.updateDocumentData = function (newData, index) {\n    this.textProperty.updateDocumentData(newData, index);\n  };\n\n  ITextElement.prototype.canResizeFont = function (_canResize) {\n    this.textProperty.canResizeFont(_canResize);\n  };\n\n  ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n    this.textProperty.setMinimumFontSize(_fontSize);\n  };\n\n  ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n    if (documentData.ps) {\n      matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n    }\n\n    matrixHelper.translate(0, -documentData.ls, 0);\n\n    switch (documentData.j) {\n      case 1:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n        break;\n\n      case 2:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n        break;\n\n      default:\n        break;\n    }\n\n    matrixHelper.translate(xPos, yPos, 0);\n  };\n\n  ITextElement.prototype.buildColor = function (colorData) {\n    return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n  };\n\n  ITextElement.prototype.emptyProp = new LetterProps();\n\n  ITextElement.prototype.destroy = function () {};\n\n  ITextElement.prototype.validateText = function () {\n    if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n      this.buildNewText();\n      this.textProperty._isFirstFrame = false;\n      this.textProperty._mdf = false;\n    }\n  };\n\n  var emptyShapeData = {\n    shapes: []\n  };\n\n  function SVGTextLottieElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.renderType = 'svg';\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n  SVGTextLottieElement.prototype.createContent = function () {\n    if (this.data.singleShape && !this.globalData.fontManager.chars) {\n      this.textContainer = createNS('text');\n    }\n  };\n\n  SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n    var i = 0;\n    var len = textArray.length;\n    var textContents = [];\n    var currentTextContent = '';\n\n    while (i < len) {\n      if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n        textContents.push(currentTextContent);\n        currentTextContent = '';\n      } else {\n        currentTextContent += textArray[i];\n      }\n\n      i += 1;\n    }\n\n    textContents.push(currentTextContent);\n    return textContents;\n  };\n\n  SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n    // data should probably be cloned to apply scale separately to each instance of a text on different layers\n    // but since text internal content gets only rendered once and then it's never rerendered,\n    // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n    // Avoiding cloning is preferred since cloning each character shape data is expensive\n    if (data.shapes && data.shapes.length) {\n      var shape = data.shapes[0];\n\n      if (shape.it) {\n        var shapeItem = shape.it[shape.it.length - 1];\n\n        if (shapeItem.s) {\n          shapeItem.s.k[0] = scale;\n          shapeItem.s.k[1] = scale;\n        }\n      }\n    }\n\n    return data;\n  };\n\n  SVGTextLottieElement.prototype.buildNewText = function () {\n    this.addDynamicProperty(this);\n    var i;\n    var len;\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n    if (documentData.fc) {\n      this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n    } else {\n      this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n    }\n\n    if (documentData.sc) {\n      this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n      this.layerElement.setAttribute('stroke-width', documentData.sw);\n    }\n\n    this.layerElement.setAttribute('font-size', documentData.finalSize);\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n    if (fontData.fClass) {\n      this.layerElement.setAttribute('class', fontData.fClass);\n    } else {\n      this.layerElement.setAttribute('font-family', fontData.fFamily);\n      var fWeight = documentData.fWeight;\n      var fStyle = documentData.fStyle;\n      this.layerElement.setAttribute('font-style', fStyle);\n      this.layerElement.setAttribute('font-weight', fWeight);\n    }\n\n    this.layerElement.setAttribute('aria-label', documentData.t);\n    var letters = documentData.l || [];\n    var usesGlyphs = !!this.globalData.fontManager.chars;\n    len = letters.length;\n    var tSpan;\n    var matrixHelper = this.mHelper;\n    var shapeStr = '';\n    var singleShape = this.data.singleShape;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n    if (singleShape && !usesGlyphs && !documentData.sz) {\n      var tElement = this.textContainer;\n      var justify = 'start';\n\n      switch (documentData.j) {\n        case 1:\n          justify = 'end';\n          break;\n\n        case 2:\n          justify = 'middle';\n          break;\n\n        default:\n          justify = 'start';\n          break;\n      }\n\n      tElement.setAttribute('text-anchor', justify);\n      tElement.setAttribute('letter-spacing', trackingOffset);\n      var textContent = this.buildTextContents(documentData.finalText);\n      len = textContent.length;\n      yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n      for (i = 0; i < len; i += 1) {\n        tSpan = this.textSpans[i].span || createNS('tspan');\n        tSpan.textContent = textContent[i];\n        tSpan.setAttribute('x', 0);\n        tSpan.setAttribute('y', yPos);\n        tSpan.style.display = 'inherit';\n        tElement.appendChild(tSpan);\n\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            glyph: null\n          };\n        }\n\n        this.textSpans[i].span = tSpan;\n        yPos += documentData.finalLineHeight;\n      }\n\n      this.layerElement.appendChild(tElement);\n    } else {\n      var cachedSpansLength = this.textSpans.length;\n      var charData;\n\n      for (i = 0; i < len; i += 1) {\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            childSpan: null,\n            glyph: null\n          };\n        }\n\n        if (!usesGlyphs || !singleShape || i === 0) {\n          tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n          if (cachedSpansLength <= i) {\n            tSpan.setAttribute('stroke-linecap', 'butt');\n            tSpan.setAttribute('stroke-linejoin', 'round');\n            tSpan.setAttribute('stroke-miterlimit', '4');\n            this.textSpans[i].span = tSpan;\n\n            if (usesGlyphs) {\n              var childSpan = createNS('g');\n              tSpan.appendChild(childSpan);\n              this.textSpans[i].childSpan = childSpan;\n            }\n\n            this.textSpans[i].span = tSpan;\n            this.layerElement.appendChild(tSpan);\n          }\n\n          tSpan.style.display = 'inherit';\n        }\n\n        matrixHelper.reset();\n\n        if (singleShape) {\n          if (letters[i].n) {\n            xPos = -trackingOffset;\n            yPos += documentData.yOffset;\n            yPos += firstLine ? 1 : 0;\n            firstLine = false;\n          }\n\n          this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n          xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n          xPos += trackingOffset;\n        }\n\n        if (usesGlyphs) {\n          charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n          var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n          if (charData.t === 1) {\n            glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n          } else {\n            var data = emptyShapeData;\n\n            if (charData.data && charData.data.shapes) {\n              data = this.buildShapeData(charData.data, documentData.finalSize);\n            }\n\n            glyphElement = new SVGShapeElement(data, this.globalData, this);\n          }\n\n          if (this.textSpans[i].glyph) {\n            var glyph = this.textSpans[i].glyph;\n            this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n            glyph.destroy();\n          }\n\n          this.textSpans[i].glyph = glyphElement;\n          glyphElement._debug = true;\n          glyphElement.prepareFrame(0);\n          glyphElement.renderFrame();\n          this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n          // this might have issues with strokes and might need a different solution\n\n          if (charData.t === 1) {\n            this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n          }\n        } else {\n          if (singleShape) {\n            tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n          }\n\n          tSpan.textContent = letters[i].val;\n          tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n        } //\n\n      }\n\n      if (singleShape && tSpan) {\n        tSpan.setAttribute('d', shapeStr);\n      }\n    }\n\n    while (i < this.textSpans.length) {\n      this.textSpans[i].span.style.display = 'none';\n      i += 1;\n    }\n\n    this._sizeChanged = true;\n  };\n\n  SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n    this.prepareFrame(this.comp.renderedFrame - this.data.st);\n    this.renderInnerContent();\n\n    if (this._sizeChanged) {\n      this._sizeChanged = false;\n      var textBox = this.layerElement.getBBox();\n      this.bbox = {\n        top: textBox.y,\n        left: textBox.x,\n        width: textBox.width,\n        height: textBox.height\n      };\n    }\n\n    return this.bbox;\n  };\n\n  SVGTextLottieElement.prototype.getValue = function () {\n    var i;\n    var len = this.textSpans.length;\n    var glyphElement;\n    this.renderedFrame = this.comp.renderedFrame;\n\n    for (i = 0; i < len; i += 1) {\n      glyphElement = this.textSpans[i].glyph;\n\n      if (glyphElement) {\n        glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n        if (glyphElement._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n\n  SVGTextLottieElement.prototype.renderInnerContent = function () {\n    this.validateText();\n\n    if (!this.data.singleShape || this._mdf) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n      if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n        this._sizeChanged = true;\n        var i;\n        var len;\n        var renderedLetters = this.textAnimator.renderedLetters;\n        var letters = this.textProperty.currentData.l;\n        len = letters.length;\n        var renderedLetter;\n        var textSpan;\n        var glyphElement;\n\n        for (i = 0; i < len; i += 1) {\n          if (!letters[i].n) {\n            renderedLetter = renderedLetters[i];\n            textSpan = this.textSpans[i].span;\n            glyphElement = this.textSpans[i].glyph;\n\n            if (glyphElement) {\n              glyphElement.renderFrame();\n            }\n\n            if (renderedLetter._mdf.m) {\n              textSpan.setAttribute('transform', renderedLetter.m);\n            }\n\n            if (renderedLetter._mdf.o) {\n              textSpan.setAttribute('opacity', renderedLetter.o);\n            }\n\n            if (renderedLetter._mdf.sw) {\n              textSpan.setAttribute('stroke-width', renderedLetter.sw);\n            }\n\n            if (renderedLetter._mdf.sc) {\n              textSpan.setAttribute('stroke', renderedLetter.sc);\n            }\n\n            if (renderedLetter._mdf.fc) {\n              textSpan.setAttribute('fill', renderedLetter.fc);\n            }\n          }\n        }\n      }\n    }\n  };\n\n  function ISolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([IImageElement], ISolidElement);\n\n  ISolidElement.prototype.createContent = function () {\n    var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n    /// /rect.style.height = this.data.sh;\n    /// /rect.style.fill = this.data.sc;\n\n    rect.setAttribute('width', this.data.sw);\n    rect.setAttribute('height', this.data.sh);\n    rect.setAttribute('fill', this.data.sc);\n    this.layerElement.appendChild(rect);\n  };\n\n  function NullElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initFrame();\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n  }\n\n  NullElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n\n  NullElement.prototype.renderFrame = function () {};\n\n  NullElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  NullElement.prototype.destroy = function () {};\n\n  NullElement.prototype.sourceRectAtTime = function () {};\n\n  NullElement.prototype.hide = function () {};\n\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n  function SVGRendererBase() {}\n\n  extendPrototype([BaseRenderer], SVGRendererBase);\n\n  SVGRendererBase.prototype.createNull = function (data) {\n    return new NullElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createShape = function (data) {\n    return new SVGShapeElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createText = function (data) {\n    return new SVGTextLottieElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createImage = function (data) {\n    return new IImageElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createSolid = function (data) {\n    return new ISolidElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.configAnimation = function (animData) {\n    this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n    this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n    if (this.renderConfig.viewBoxSize) {\n      this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n    } else {\n      this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n    }\n\n    if (!this.renderConfig.viewBoxOnly) {\n      this.svgElement.setAttribute('width', animData.w);\n      this.svgElement.setAttribute('height', animData.h);\n      this.svgElement.style.width = '100%';\n      this.svgElement.style.height = '100%';\n      this.svgElement.style.transform = 'translate3d(0,0,0)';\n      this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n    }\n\n    if (this.renderConfig.width) {\n      this.svgElement.setAttribute('width', this.renderConfig.width);\n    }\n\n    if (this.renderConfig.height) {\n      this.svgElement.setAttribute('height', this.renderConfig.height);\n    }\n\n    if (this.renderConfig.className) {\n      this.svgElement.setAttribute('class', this.renderConfig.className);\n    }\n\n    if (this.renderConfig.id) {\n      this.svgElement.setAttribute('id', this.renderConfig.id);\n    }\n\n    if (this.renderConfig.focusable !== undefined) {\n      this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n    }\n\n    this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n    // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n    this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n    var defs = this.globalData.defs;\n    this.setupGlobalData(animData, defs);\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.data = animData;\n    var maskElement = createNS('clipPath');\n    var rect = createNS('rect');\n    rect.setAttribute('width', animData.w);\n    rect.setAttribute('height', animData.h);\n    rect.setAttribute('x', 0);\n    rect.setAttribute('y', 0);\n    var maskId = createElementID();\n    maskElement.setAttribute('id', maskId);\n    maskElement.appendChild(rect);\n    this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n    defs.appendChild(maskElement);\n    this.layers = animData.layers;\n    this.elements = createSizedArray(animData.layers.length);\n  };\n\n  SVGRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    this.layerElement = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n\n  SVGRendererBase.prototype.updateContainerSize = function () {};\n\n  SVGRendererBase.prototype.findIndexByInd = function (ind) {\n    var i = 0;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ind === ind) {\n        return i;\n      }\n    }\n\n    return -1;\n  };\n\n  SVGRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n\n    elements[pos] = true;\n    var element = this.createItem(this.layers[pos]);\n    elements[pos] = element;\n\n    if (getExpressionsPlugin()) {\n      if (this.layers[pos].ty === 0) {\n        this.globalData.projectInterface.registerComposition(element);\n      }\n\n      element.initExpressions();\n    }\n\n    this.appendElementInPos(element, pos);\n\n    if (this.layers[pos].tt) {\n      var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n      if (elementIndex === -1) {\n        return;\n      }\n\n      if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n        this.buildItem(elementIndex);\n        this.addPendingElement(element);\n      } else {\n        var matteElement = elements[elementIndex];\n        var matteMask = matteElement.getMatte(this.layers[pos].tt);\n        element.setMatte(matteMask);\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n\n      if (element.data.tt) {\n        var i = 0;\n        var len = this.elements.length;\n\n        while (i < len) {\n          if (this.elements[i] === element) {\n            var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n            var matteElement = this.elements[elementIndex];\n            var matteMask = matteElement.getMatte(this.layers[i].tt);\n            element.setMatte(matteMask);\n            break;\n          }\n\n          i += 1;\n        }\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.renderFrame = function (num) {\n    if (this.renderedFrame === num || this.destroyed) {\n      return;\n    }\n\n    if (num === null) {\n      num = this.renderedFrame;\n    } else {\n      this.renderedFrame = num;\n    } // console.log('-------');\n    // console.log('FRAME ',num);\n\n\n    this.globalData.frameNum = num;\n    this.globalData.frameId += 1;\n    this.globalData.projectInterface.currentFrame = num;\n    this.globalData._mdf = false;\n    var i;\n    var len = this.layers.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n\n    if (this.globalData._mdf) {\n      for (i = 0; i < len; i += 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newElement = element.getBaseElement();\n\n    if (!newElement) {\n      return;\n    }\n\n    var i = 0;\n    var nextElement;\n\n    while (i < pos) {\n      if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n        nextElement = this.elements[i].getBaseElement();\n      }\n\n      i += 1;\n    }\n\n    if (nextElement) {\n      this.layerElement.insertBefore(newElement, nextElement);\n    } else {\n      this.layerElement.appendChild(newElement);\n    }\n  };\n\n  SVGRendererBase.prototype.hide = function () {\n    this.layerElement.style.display = 'none';\n  };\n\n  SVGRendererBase.prototype.show = function () {\n    this.layerElement.style.display = 'block';\n  };\n\n  function ICompElement() {}\n\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n  ICompElement.prototype.initElement = function (data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initTransform(data, globalData, comp);\n    this.initRenderable();\n    this.initHierarchy();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n\n    if (this.data.xt || !globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n\n    this.hide();\n  };\n  /* ICompElement.prototype.hide = function(){\r\n      if(!this.hidden){\r\n          this.hideElement();\r\n          var i,len = this.elements.length;\r\n          for( i = 0; i < len; i+=1 ){\r\n              if(this.elements[i]){\r\n                  this.elements[i].hide();\r\n              }\r\n          }\r\n      }\r\n  }; */\n\n\n  ICompElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n\n    if (!this.isInRange && !this.data.xt) {\n      return;\n    }\n\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n\n      if (timeRemapped === this.data.op) {\n        timeRemapped = this.data.op - 1;\n      }\n\n      this.renderedFrame = timeRemapped;\n    } else {\n      this.renderedFrame = num / this.data.sr;\n    }\n\n    var i;\n    var len = this.elements.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(this.renderedFrame);\n    } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n        if (this.elements[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n\n  ICompElement.prototype.renderInnerContent = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n\n  ICompElement.prototype.setElements = function (elems) {\n    this.elements = elems;\n  };\n\n  ICompElement.prototype.getElements = function () {\n    return this.elements;\n  };\n\n  ICompElement.prototype.destroyElements = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n  };\n\n  ICompElement.prototype.destroy = function () {\n    this.destroyElements();\n    this.destroyBaseElement();\n  };\n\n  function SVGCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = true;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n  SVGCompElement.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function SVGRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.svgElement = createNS('svg');\n    var ariaLabel = '';\n\n    if (config && config.title) {\n      var titleElement = createNS('title');\n      var titleId = createElementID();\n      titleElement.setAttribute('id', titleId);\n      titleElement.textContent = config.title;\n      this.svgElement.appendChild(titleElement);\n      ariaLabel += titleId;\n    }\n\n    if (config && config.description) {\n      var descElement = createNS('desc');\n      var descId = createElementID();\n      descElement.setAttribute('id', descId);\n      descElement.textContent = config.description;\n      this.svgElement.appendChild(descElement);\n      ariaLabel += ' ' + descId;\n    }\n\n    if (ariaLabel) {\n      this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n    }\n\n    var defs = createNS('defs');\n    this.svgElement.appendChild(defs);\n    var maskElement = createNS('g');\n    this.svgElement.appendChild(maskElement);\n    this.layerElement = maskElement;\n    this.renderConfig = {\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      progressiveLoad: config && config.progressiveLoad || false,\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      viewBoxOnly: config && config.viewBoxOnly || false,\n      viewBoxSize: config && config.viewBoxSize || false,\n      className: config && config.className || '',\n      id: config && config.id || '',\n      focusable: config && config.focusable,\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '100%',\n        height: config && config.filterSize && config.filterSize.height || '100%',\n        x: config && config.filterSize && config.filterSize.x || '0%',\n        y: config && config.filterSize && config.filterSize.y || '0%'\n      },\n      width: config && config.width,\n      height: config && config.height,\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      defs: defs,\n      renderConfig: this.renderConfig\n    };\n    this.elements = [];\n    this.pendingElements = [];\n    this.destroyed = false;\n    this.rendererType = 'svg';\n  }\n\n  extendPrototype([SVGRendererBase], SVGRenderer);\n\n  SVGRenderer.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function ShapeTransformManager() {\n    this.sequences = {};\n    this.sequenceList = [];\n    this.transform_key_count = 0;\n  }\n\n  ShapeTransformManager.prototype = {\n    addTransformSequence: function addTransformSequence(transforms) {\n      var i;\n      var len = transforms.length;\n      var key = '_';\n\n      for (i = 0; i < len; i += 1) {\n        key += transforms[i].transform.key + '_';\n      }\n\n      var sequence = this.sequences[key];\n\n      if (!sequence) {\n        sequence = {\n          transforms: [].concat(transforms),\n          finalTransform: new Matrix(),\n          _mdf: false\n        };\n        this.sequences[key] = sequence;\n        this.sequenceList.push(sequence);\n      }\n\n      return sequence;\n    },\n    processSequence: function processSequence(sequence, isFirstFrame) {\n      var i = 0;\n      var len = sequence.transforms.length;\n      var _mdf = isFirstFrame;\n\n      while (i < len && !isFirstFrame) {\n        if (sequence.transforms[i].transform.mProps._mdf) {\n          _mdf = true;\n          break;\n        }\n\n        i += 1;\n      }\n\n      if (_mdf) {\n        sequence.finalTransform.reset();\n\n        for (i = len - 1; i >= 0; i -= 1) {\n          sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n        }\n      }\n\n      sequence._mdf = _mdf;\n    },\n    processSequences: function processSequences(isFirstFrame) {\n      var i;\n      var len = this.sequenceList.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.processSequence(this.sequenceList[i], isFirstFrame);\n      }\n    },\n    getNewKey: function getNewKey() {\n      this.transform_key_count += 1;\n      return '_' + this.transform_key_count;\n    }\n  };\n\n  var lumaLoader = function lumaLoader() {\n    var id = '__lottie_element_luma_buffer';\n    var lumaBuffer = null;\n    var lumaBufferCtx = null;\n    var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n    // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n    // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n    // Naming it solution 2 to mark the extra comment lines.\n\n    /*\r\n    var svgString = [\r\n      '<svg xmlns=\"http://www.w3.org/2000/svg\">',\r\n      '<filter id=\"' + id + '\">',\r\n      '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0',\r\n      '\"/>',\r\n      '</filter>',\r\n      '</svg>',\r\n    ].join('');\r\n    var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n    var url = URL.createObjectURL(blob);\r\n    */\n\n    function createLumaSvgFilter() {\n      var _svg = createNS('svg');\n\n      var fil = createNS('filter');\n      var matrix = createNS('feColorMatrix');\n      fil.setAttribute('id', id);\n      matrix.setAttribute('type', 'matrix');\n      matrix.setAttribute('color-interpolation-filters', 'sRGB');\n      matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n      fil.appendChild(matrix);\n\n      _svg.appendChild(fil);\n\n      _svg.setAttribute('id', id + '_svg');\n\n      if (featureSupport.svgLumaHidden) {\n        _svg.style.display = 'none';\n      }\n\n      return _svg;\n    }\n\n    function loadLuma() {\n      if (!lumaBuffer) {\n        svg = createLumaSvgFilter();\n        document.body.appendChild(svg);\n        lumaBuffer = createTag('canvas');\n        lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n        lumaBufferCtx.filter = 'url(#' + id + ')';\n        lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n        lumaBufferCtx.fillRect(0, 0, 1, 1);\n      }\n    }\n\n    function getLuma(canvas) {\n      if (!lumaBuffer) {\n        loadLuma();\n      }\n\n      lumaBuffer.width = canvas.width;\n      lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n      lumaBufferCtx.filter = 'url(#' + id + ')';\n      return lumaBuffer;\n    }\n\n    return {\n      load: loadLuma,\n      get: getLuma\n    };\n  };\n\n  function createCanvas(width, height) {\n    if (featureSupport.offscreenCanvas) {\n      return new OffscreenCanvas(width, height);\n    }\n\n    var canvas = createTag('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n\n  var assetLoader = function () {\n    return {\n      loadLumaCanvas: lumaLoader.load,\n      getLumaCanvas: lumaLoader.get,\n      createCanvas: createCanvas\n    };\n  }();\n\n  var registeredEffects = {};\n\n  function CVEffects(elem) {\n    var i;\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    this.filters = [];\n    var filterManager;\n\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n\n      if (registeredEffects[type]) {\n        var Effect = registeredEffects[type].effect;\n        filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n      }\n\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n\n  CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n\n  CVEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n\n    return effects;\n  };\n\n  function registerEffect(id, effect) {\n    registeredEffects[id] = {\n      effect: effect\n    };\n  }\n\n  function CVMaskElement(data, element) {\n    this.data = data;\n    this.element = element;\n    this.masksProperties = this.data.masksProperties || [];\n    this.viewData = createSizedArray(this.masksProperties.length);\n    var i;\n    var len = this.masksProperties.length;\n    var hasMasks = false;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        hasMasks = true;\n      }\n\n      this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n    }\n\n    this.hasMasks = hasMasks;\n\n    if (hasMasks) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n\n  CVMaskElement.prototype.renderFrame = function () {\n    if (!this.hasMasks) {\n      return;\n    }\n\n    var transform = this.element.finalTransform.mat;\n    var ctx = this.element.canvasContext;\n    var i;\n    var len = this.masksProperties.length;\n    var pt;\n    var pts;\n    var data;\n    ctx.beginPath();\n\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.masksProperties[i].inv) {\n          ctx.moveTo(0, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n          ctx.lineTo(0, this.element.globalData.compSize.h);\n          ctx.lineTo(0, 0);\n        }\n\n        data = this.viewData[i].v;\n        pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n        ctx.moveTo(pt[0], pt[1]);\n        var j;\n        var jLen = data._length;\n\n        for (j = 1; j < jLen; j += 1) {\n          pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n          ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n        }\n\n        pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n        ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n      }\n    }\n\n    this.element.globalData.renderer.save(true);\n    ctx.clip();\n  };\n\n  CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n  CVMaskElement.prototype.destroy = function () {\n    this.element = null;\n  };\n\n  function CVBaseElement() {}\n\n  var operationsMap = {\n    1: 'source-in',\n    2: 'source-out',\n    3: 'source-in',\n    4: 'source-out'\n  };\n  CVBaseElement.prototype = {\n    createElements: function createElements() {},\n    initRendererElement: function initRendererElement() {},\n    createContainerElements: function createContainerElements() {\n      // If the layer is masked we will use two buffers to store each different states of the drawing\n      // This solution is not ideal for several reason. But unfortunately, because of the recursive\n      // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n      // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n      // It might be challenging because the layer most likely is transformed in some way\n      if (this.data.tt >= 1) {\n        this.buffers = [];\n        var canvasContext = this.globalData.canvasContext;\n        var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas);\n        var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas2);\n\n        if (this.data.tt >= 3 && !document._isProxy) {\n          assetLoader.loadLumaCanvas();\n        }\n      }\n\n      this.canvasContext = this.globalData.canvasContext;\n      this.transformCanvas = this.globalData.transformCanvas;\n      this.renderableEffectsManager = new CVEffects(this);\n      this.searchEffectTransforms();\n    },\n    createContent: function createContent() {},\n    setBlendMode: function setBlendMode() {\n      var globalData = this.globalData;\n\n      if (globalData.blendMode !== this.data.bm) {\n        globalData.blendMode = this.data.bm;\n        var blendModeValue = getBlendMode(this.data.bm);\n        globalData.canvasContext.globalCompositeOperation = blendModeValue;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new CVMaskElement(this.data, this);\n      this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n    },\n    hideElement: function hideElement() {\n      if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n        this.hidden = true;\n      }\n    },\n    showElement: function showElement() {\n      if (this.isInRange && !this.isTransparent) {\n        this.hidden = false;\n        this._isFirstFrame = true;\n        this.maskManager._isFirstFrame = true;\n      }\n    },\n    clearCanvas: function clearCanvas(canvasContext) {\n      canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n    },\n    prepareLayer: function prepareLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[0];\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n        // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n        this.currentTransform = this.canvasContext.getTransform();\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform);\n      }\n    },\n    exitLayer: function exitLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n        // that only contains the content of this layer\n        // (if it is a composition, it also includes the nested layers)\n\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx);\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n        var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n        mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n        // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n        if (this.data.tt >= 3 && !document._isProxy) {\n          // We copy the painted mask to a buffer that has a color matrix filter applied to it\n          // that applies the rgb values to the alpha channel\n          var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n          var lumaBufferCtx = lumaBuffer.getContext('2d');\n          lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n          this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n          this.canvasContext.drawImage(lumaBuffer, 0, 0);\n        }\n\n        this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n        this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n        // We use destination-over to draw the global drawing below the current layer\n\n        this.canvasContext.globalCompositeOperation = 'destination-over';\n        this.canvasContext.drawImage(this.buffers[0], 0, 0);\n        this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n        this.canvasContext.globalCompositeOperation = 'source-over';\n      }\n    },\n    renderFrame: function renderFrame(forceRender) {\n      if (this.hidden || this.data.hd) {\n        return;\n      }\n\n      if (this.data.td === 1 && !forceRender) {\n        return;\n      }\n\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderLocalTransform();\n      this.setBlendMode();\n      var forceRealStack = this.data.ty === 0;\n      this.prepareLayer();\n      this.globalData.renderer.save(forceRealStack);\n      this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n      this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n      this.renderInnerContent();\n      this.globalData.renderer.restore(forceRealStack);\n      this.exitLayer();\n\n      if (this.maskManager.hasMasks) {\n        this.globalData.renderer.restore(true);\n      }\n\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.canvasContext = null;\n      this.data = null;\n      this.globalData = null;\n      this.maskManager.destroy();\n    },\n    mHelper: new Matrix()\n  };\n  CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n  CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n  function CVShapeData(element, data, styles, transformsManager) {\n    this.styledShapes = [];\n    this.tr = [0, 0, 0, 0, 0, 0];\n    var ty = 4;\n\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n\n    this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n    var i;\n    var len = styles.length;\n    var styledShape;\n\n    for (i = 0; i < len; i += 1) {\n      if (!styles[i].closed) {\n        styledShape = {\n          transforms: transformsManager.addTransformSequence(styles[i].transforms),\n          trNodes: []\n        };\n        this.styledShapes.push(styledShape);\n        styles[i].elements.push(styledShape);\n      }\n    }\n  }\n\n  CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n  function CVShapeElement(data, globalData, comp) {\n    this.shapes = [];\n    this.shapesData = data.shapes;\n    this.stylesList = [];\n    this.itemsData = [];\n    this.prevViewData = [];\n    this.shapeModifiers = [];\n    this.processedElements = [];\n    this.transformsManager = new ShapeTransformManager();\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n  CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n  CVShapeElement.prototype.transformHelper = {\n    opacity: 1,\n    _opMdf: false\n  };\n  CVShapeElement.prototype.dashResetter = [];\n\n  CVShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n  };\n\n  CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n    var styleElem = {\n      data: data,\n      type: data.ty,\n      preTransforms: this.transformsManager.addTransformSequence(transforms),\n      transforms: [],\n      elements: [],\n      closed: data.hd === true\n    };\n    var elementData = {};\n\n    if (data.ty === 'fl' || data.ty === 'st') {\n      elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n      if (!elementData.c.k) {\n        styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n      }\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n      elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n      elementData.h = PropertyFactory.getProp(this, data.h || {\n        k: 0\n      }, 0, 0.01, this);\n      elementData.a = PropertyFactory.getProp(this, data.a || {\n        k: 0\n      }, 0, degToRads, this);\n      elementData.g = new GradientProperty(this, data.g, this);\n    }\n\n    elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n    if (data.ty === 'st' || data.ty === 'gs') {\n      styleElem.lc = lineCapEnum[data.lc || 2];\n      styleElem.lj = lineJoinEnum[data.lj || 2];\n\n      if (data.lj == 1) {\n        // eslint-disable-line eqeqeq\n        styleElem.ml = data.ml;\n      }\n\n      elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n      if (!elementData.w.k) {\n        styleElem.wi = elementData.w.v;\n      }\n\n      if (data.d) {\n        var d = new DashProperty(this, data.d, 'canvas', this);\n        elementData.d = d;\n\n        if (!elementData.d.k) {\n          styleElem.da = elementData.d.dashArray;\n          styleElem[\"do\"] = elementData.d.dashoffset[0];\n        }\n      }\n    } else {\n      styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n    }\n\n    this.stylesList.push(styleElem);\n    elementData.style = styleElem;\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createGroupElement = function () {\n    var elementData = {\n      it: [],\n      prevViewData: []\n    };\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createTransformElement = function (data) {\n    var elementData = {\n      transform: {\n        opacity: 1,\n        _opMdf: false,\n        key: this.transformsManager.getNewKey(),\n        op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n        mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n      }\n    };\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createShapeElement = function (data) {\n    var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    return elementData;\n  };\n\n  CVShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n    len = this.dynamicProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n  };\n\n  CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.push(transform);\n      }\n    }\n  };\n\n  CVShapeElement.prototype.removeTransformFromStyleList = function () {\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.pop();\n      }\n    }\n  };\n\n  CVShapeElement.prototype.closeStyles = function (styles) {\n    var i;\n    var len = styles.length;\n\n    for (i = 0; i < len; i += 1) {\n      styles[i].closed = true;\n    }\n  };\n\n  CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var processedPos;\n    var modifier;\n    var currentTransform;\n    var ownTransforms = [].concat(transforms);\n\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n\n      if (!processedPos) {\n        arr[i]._shouldRender = shouldRender;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n        } else {\n          itemsData[i].style.closed = false;\n        }\n\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          currentTransform = this.createTransformElement(arr[i]);\n          itemsData[i] = currentTransform;\n        }\n\n        ownTransforms.push(itemsData[i]);\n        this.addTransformToStyleList(itemsData[i]);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i]);\n        }\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          shouldRender = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n\n        ownModifiers.push(modifier);\n      }\n\n      this.addProcessedElement(arr[i], i + 1);\n    }\n\n    this.removeTransformFromStyleList();\n    this.closeStyles(ownStyles);\n    len = ownModifiers.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n\n  CVShapeElement.prototype.renderInnerContent = function () {\n    this.transformHelper.opacity = 1;\n    this.transformHelper._opMdf = false;\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n    this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n  };\n\n  CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n    if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n      groupTransform.opacity = parentTransform.opacity;\n      groupTransform.opacity *= groupTransform.op.v;\n      groupTransform._opMdf = true;\n    }\n  };\n\n  CVShapeElement.prototype.drawLayer = function () {\n    var i;\n    var len = this.stylesList.length;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var elems;\n    var nodes;\n    var renderer = this.globalData.renderer;\n    var ctx = this.globalData.canvasContext;\n    var type;\n    var currentStyle;\n\n    for (i = 0; i < len; i += 1) {\n      currentStyle = this.stylesList[i];\n      type = currentStyle.type; // Skipping style when\n      // Stroke width equals 0\n      // style should not be rendered (extra unused repeaters)\n      // current opacity equals 0\n      // global opacity equals 0\n\n      if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n        renderer.save();\n        elems = currentStyle.elements;\n\n        if (type === 'st' || type === 'gs') {\n          renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n          renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n          renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n          renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n          renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n        } else {\n          renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n        }\n\n        renderer.ctxOpacity(currentStyle.coOp);\n\n        if (type !== 'st' && type !== 'gs') {\n          ctx.beginPath();\n        }\n\n        renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n        jLen = elems.length;\n\n        for (j = 0; j < jLen; j += 1) {\n          if (type === 'st' || type === 'gs') {\n            ctx.beginPath();\n\n            if (currentStyle.da) {\n              ctx.setLineDash(currentStyle.da);\n              ctx.lineDashOffset = currentStyle[\"do\"];\n            }\n          }\n\n          nodes = elems[j].trNodes;\n          kLen = nodes.length;\n\n          for (k = 0; k < kLen; k += 1) {\n            if (nodes[k].t === 'm') {\n              ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n            } else if (nodes[k].t === 'c') {\n              ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n            } else {\n              ctx.closePath();\n            }\n          }\n\n          if (type === 'st' || type === 'gs') {\n            // ctx.stroke();\n            renderer.ctxStroke();\n\n            if (currentStyle.da) {\n              ctx.setLineDash(this.dashResetter);\n            }\n          }\n        }\n\n        if (type !== 'st' && type !== 'gs') {\n          // ctx.fill(currentStyle.r);\n          this.globalData.renderer.ctxFill(currentStyle.r);\n        }\n\n        renderer.restore();\n      }\n    }\n  };\n\n  CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n    var i;\n    var len = items.length - 1;\n    var groupTransform;\n    groupTransform = parentTransform;\n\n    for (i = len; i >= 0; i -= 1) {\n      if (items[i].ty === 'tr') {\n        groupTransform = data[i].transform;\n        this.renderShapeTransform(parentTransform, groupTransform);\n      } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n        this.renderPath(items[i], data[i]);\n      } else if (items[i].ty === 'fl') {\n        this.renderFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'st') {\n        this.renderStroke(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n        this.renderGradientFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gr') {\n        this.renderShape(groupTransform, items[i].it, data[i].it);\n      } else if (items[i].ty === 'tm') {//\n      }\n    }\n\n    if (isMain) {\n      this.drawLayer();\n    }\n  };\n\n  CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n    if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n      var shapeNodes = styledShape.trNodes;\n      var paths = shape.paths;\n      var i;\n      var len;\n      var j;\n      var jLen = paths._length;\n      shapeNodes.length = 0;\n      var groupTransformMat = styledShape.transforms.finalTransform;\n\n      for (j = 0; j < jLen; j += 1) {\n        var pathNodes = paths.shapes[j];\n\n        if (pathNodes && pathNodes.v) {\n          len = pathNodes._length;\n\n          for (i = 1; i < len; i += 1) {\n            if (i === 1) {\n              shapeNodes.push({\n                t: 'm',\n                p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n              });\n            }\n\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n            });\n          }\n\n          if (len === 1) {\n            shapeNodes.push({\n              t: 'm',\n              p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n            });\n          }\n\n          if (pathNodes.c && len) {\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n            });\n            shapeNodes.push({\n              t: 'z'\n            });\n          }\n        }\n      }\n\n      styledShape.trNodes = shapeNodes;\n    }\n  };\n\n  CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n    if (pathData.hd !== true && pathData._shouldRender) {\n      var i;\n      var len = itemData.styledShapes.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n      }\n    }\n  };\n\n  CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n  };\n\n  CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var grd;\n\n    if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n      var ctx = this.globalData.canvasContext;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n\n      if (styleData.t === 1) {\n        grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n      } else {\n        var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n        var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n        var percent = itemData.h.v;\n\n        if (percent >= 1) {\n          percent = 0.99;\n        } else if (percent <= -1) {\n          percent = -0.99;\n        }\n\n        var dist = rad * percent;\n        var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n        var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n        grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n      }\n\n      var i;\n      var len = styleData.g.p;\n      var cValues = itemData.g.c;\n      var opacity = 1;\n\n      for (i = 0; i < len; i += 1) {\n        if (itemData.g._hasOpacity && itemData.g._collapsable) {\n          opacity = itemData.g.o[i * 2 + 1];\n        }\n\n        grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n      }\n\n      styleElem.grd = grd;\n    }\n\n    styleElem.coOp = itemData.o.v * groupTransform.opacity;\n  };\n\n  CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var d = itemData.d;\n\n    if (d && (d._mdf || this._isFirstFrame)) {\n      styleElem.da = d.dashArray;\n      styleElem[\"do\"] = d.dashoffset[0];\n    }\n\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n\n    if (itemData.w._mdf || this._isFirstFrame) {\n      styleElem.wi = itemData.w.v;\n    }\n  };\n\n  CVShapeElement.prototype.destroy = function () {\n    this.shapesData = null;\n    this.globalData = null;\n    this.canvasContext = null;\n    this.stylesList.length = 0;\n    this.itemsData.length = 0;\n  };\n\n  function CVTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.yOffset = 0;\n    this.fillColorAnim = false;\n    this.strokeColorAnim = false;\n    this.strokeWidthAnim = false;\n    this.stroke = false;\n    this.fill = false;\n    this.justifyOffset = 0;\n    this.currentRender = null;\n    this.renderType = 'canvas';\n    this.values = {\n      fill: 'rgba(0,0,0,0)',\n      stroke: 'rgba(0,0,0,0)',\n      sWidth: 0,\n      fValue: ''\n    };\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n  CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n  CVTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var hasFill = false;\n\n    if (documentData.fc) {\n      hasFill = true;\n      this.values.fill = this.buildColor(documentData.fc);\n    } else {\n      this.values.fill = 'rgba(0,0,0,0)';\n    }\n\n    this.fill = hasFill;\n    var hasStroke = false;\n\n    if (documentData.sc) {\n      hasStroke = true;\n      this.values.stroke = this.buildColor(documentData.sc);\n      this.values.sWidth = documentData.sw;\n    }\n\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n    var i;\n    var len;\n    var letters = documentData.l;\n    var matrixHelper = this.mHelper;\n    this.stroke = hasStroke;\n    this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n    len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n    var charData;\n    var shapeData;\n    var k;\n    var kLen;\n    var shapes;\n    var j;\n    var jLen;\n    var pathNodes;\n    var commands;\n    var pathArr;\n    var singleShape = this.data.singleShape;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var cnt = 0;\n\n    for (i = 0; i < len; i += 1) {\n      charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n      shapeData = charData && charData.data || {};\n      matrixHelper.reset();\n\n      if (singleShape && letters[i].n) {\n        xPos = -trackingOffset;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        firstLine = false;\n      }\n\n      shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n      jLen = shapes.length;\n      matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n      if (singleShape) {\n        this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n      }\n\n      commands = createSizedArray(jLen - 1);\n      var commandsCounter = 0;\n\n      for (j = 0; j < jLen; j += 1) {\n        if (shapes[j].ty === 'sh') {\n          kLen = shapes[j].ks.k.i.length;\n          pathNodes = shapes[j].ks.k;\n          pathArr = [];\n\n          for (k = 1; k < kLen; k += 1) {\n            if (k === 1) {\n              pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n            }\n\n            pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n          }\n\n          pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n          commands[commandsCounter] = pathArr;\n          commandsCounter += 1;\n        }\n      }\n\n      if (singleShape) {\n        xPos += letters[i].l;\n        xPos += trackingOffset;\n      }\n\n      if (this.textSpans[cnt]) {\n        this.textSpans[cnt].elem = commands;\n      } else {\n        this.textSpans[cnt] = {\n          elem: commands\n        };\n      }\n\n      cnt += 1;\n    }\n  };\n\n  CVTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var ctx = this.canvasContext;\n    ctx.font = this.values.fValue;\n    this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n    this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n    this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n    if (!this.data.singleShape) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n    }\n\n    var i;\n    var len;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var lastFill = null;\n    var lastStroke = null;\n    var lastStrokeW = null;\n    var commands;\n    var pathArr;\n    var renderer = this.globalData.renderer;\n\n    for (i = 0; i < len; i += 1) {\n      if (!letters[i].n) {\n        renderedLetter = renderedLetters[i];\n\n        if (renderedLetter) {\n          renderer.save();\n          renderer.ctxTransform(renderedLetter.p);\n          renderer.ctxOpacity(renderedLetter.o);\n        }\n\n        if (this.fill) {\n          if (renderedLetter && renderedLetter.fc) {\n            if (lastFill !== renderedLetter.fc) {\n              renderer.ctxFillStyle(renderedLetter.fc);\n              lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n            }\n          } else if (lastFill !== this.values.fill) {\n            lastFill = this.values.fill;\n            renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n          }\n\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n\n          this.globalData.canvasContext.closePath();\n          renderer.ctxFill(); // this.globalData.canvasContext.fill();\n          /// ctx.fillText(this.textSpans[i].val,0,0);\n        }\n\n        if (this.stroke) {\n          if (renderedLetter && renderedLetter.sw) {\n            if (lastStrokeW !== renderedLetter.sw) {\n              lastStrokeW = renderedLetter.sw;\n              renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n            }\n          } else if (lastStrokeW !== this.values.sWidth) {\n            lastStrokeW = this.values.sWidth;\n            renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n          }\n\n          if (renderedLetter && renderedLetter.sc) {\n            if (lastStroke !== renderedLetter.sc) {\n              lastStroke = renderedLetter.sc;\n              renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n            }\n          } else if (lastStroke !== this.values.stroke) {\n            lastStroke = this.values.stroke;\n            renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n          }\n\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n\n          this.globalData.canvasContext.closePath();\n          renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n          /// ctx.strokeText(letters[i].val,0,0);\n        }\n\n        if (renderedLetter) {\n          this.globalData.renderer.restore();\n        }\n      }\n    }\n  };\n\n  function CVImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.img = globalData.imageLoader.getAsset(this.assetData);\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n  CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n  CVImageElement.prototype.createContent = function () {\n    if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n      var canvas = createTag('canvas');\n      canvas.width = this.assetData.w;\n      canvas.height = this.assetData.h;\n      var ctx = canvas.getContext('2d');\n      var imgW = this.img.width;\n      var imgH = this.img.height;\n      var imgRel = imgW / imgH;\n      var canvasRel = this.assetData.w / this.assetData.h;\n      var widthCrop;\n      var heightCrop;\n      var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n      if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n        heightCrop = imgH;\n        widthCrop = heightCrop * canvasRel;\n      } else {\n        widthCrop = imgW;\n        heightCrop = widthCrop / canvasRel;\n      }\n\n      ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n      this.img = canvas;\n    }\n  };\n\n  CVImageElement.prototype.renderInnerContent = function () {\n    this.canvasContext.drawImage(this.img, 0, 0);\n  };\n\n  CVImageElement.prototype.destroy = function () {\n    this.img = null;\n  };\n\n  function CVSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n  CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n  CVSolidElement.prototype.renderInnerContent = function () {\n    // var ctx = this.canvasContext;\n    this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n    this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n    //\n  };\n\n  function CanvasRendererBase() {}\n\n  extendPrototype([BaseRenderer], CanvasRendererBase);\n\n  CanvasRendererBase.prototype.createShape = function (data) {\n    return new CVShapeElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createText = function (data) {\n    return new CVTextElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createImage = function (data) {\n    return new CVImageElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createSolid = function (data) {\n    return new CVSolidElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n  CanvasRendererBase.prototype.ctxTransform = function (props) {\n    if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n      return;\n    }\n\n    this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n  };\n\n  CanvasRendererBase.prototype.ctxOpacity = function (op) {\n    this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n  };\n\n  CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n    this.canvasContext.fillStyle = value;\n  };\n\n  CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n    this.canvasContext.strokeStyle = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n    this.canvasContext.lineWidth = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineCap = function (value) {\n    this.canvasContext.lineCap = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n    this.canvasContext.lineJoin = value;\n  };\n\n  CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n    this.canvasContext.miterLimit = value;\n  };\n\n  CanvasRendererBase.prototype.ctxFill = function (rule) {\n    this.canvasContext.fill(rule);\n  };\n\n  CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n    this.canvasContext.fillRect(x, y, w, h);\n  };\n\n  CanvasRendererBase.prototype.ctxStroke = function () {\n    this.canvasContext.stroke();\n  };\n\n  CanvasRendererBase.prototype.reset = function () {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n\n    this.contextData.reset();\n  };\n\n  CanvasRendererBase.prototype.save = function () {\n    this.canvasContext.save();\n  };\n\n  CanvasRendererBase.prototype.restore = function (actionFlag) {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n\n    if (actionFlag) {\n      this.globalData.blendMode = 'source-over';\n    }\n\n    this.contextData.restore(actionFlag);\n  };\n\n  CanvasRendererBase.prototype.configAnimation = function (animData) {\n    if (this.animationItem.wrapper) {\n      this.animationItem.container = createTag('canvas');\n      var containerStyle = this.animationItem.container.style;\n      containerStyle.width = '100%';\n      containerStyle.height = '100%';\n      var origin = '0px 0px 0px';\n      containerStyle.transformOrigin = origin;\n      containerStyle.mozTransformOrigin = origin;\n      containerStyle.webkitTransformOrigin = origin;\n      containerStyle['-webkit-transform'] = origin;\n      containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n      this.animationItem.wrapper.appendChild(this.animationItem.container);\n      this.canvasContext = this.animationItem.container.getContext('2d');\n\n      if (this.renderConfig.className) {\n        this.animationItem.container.setAttribute('class', this.renderConfig.className);\n      }\n\n      if (this.renderConfig.id) {\n        this.animationItem.container.setAttribute('id', this.renderConfig.id);\n      }\n    } else {\n      this.canvasContext = this.renderConfig.context;\n    }\n\n    this.contextData.setContext(this.canvasContext);\n    this.data = animData;\n    this.layers = animData.layers;\n    this.transformCanvas = {\n      w: animData.w,\n      h: animData.h,\n      sx: 0,\n      sy: 0,\n      tx: 0,\n      ty: 0\n    };\n    this.setupGlobalData(animData, document.body);\n    this.globalData.canvasContext = this.canvasContext;\n    this.globalData.renderer = this;\n    this.globalData.isDashed = false;\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.globalData.transformCanvas = this.transformCanvas;\n    this.elements = createSizedArray(animData.layers.length);\n    this.updateContainerSize();\n  };\n\n  CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n    this.reset();\n    var elementWidth;\n    var elementHeight;\n\n    if (width) {\n      elementWidth = width;\n      elementHeight = height;\n      this.canvasContext.canvas.width = elementWidth;\n      this.canvasContext.canvas.height = elementHeight;\n    } else {\n      if (this.animationItem.wrapper && this.animationItem.container) {\n        elementWidth = this.animationItem.wrapper.offsetWidth;\n        elementHeight = this.animationItem.wrapper.offsetHeight;\n      } else {\n        elementWidth = this.canvasContext.canvas.width;\n        elementHeight = this.canvasContext.canvas.height;\n      }\n\n      this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n      this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n    }\n\n    var elementRel;\n    var animationRel;\n\n    if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n      var par = this.renderConfig.preserveAspectRatio.split(' ');\n      var fillType = par[1] || 'meet';\n      var pos = par[0] || 'xMidYMid';\n      var xPos = pos.substr(0, 4);\n      var yPos = pos.substr(4);\n      elementRel = elementWidth / elementHeight;\n      animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n      if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n        this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      } else {\n        this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      }\n\n      if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n      } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.tx = 0;\n      }\n\n      if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n      } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.ty = 0;\n      }\n    } else if (this.renderConfig.preserveAspectRatio === 'none') {\n      this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    } else {\n      this.transformCanvas.sx = this.renderConfig.dpr;\n      this.transformCanvas.sy = this.renderConfig.dpr;\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    }\n\n    this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n    /* var i, len = this.elements.length;\r\n      for(i=0;i<len;i+=1){\r\n          if(this.elements[i] && this.elements[i].data.ty === 0){\r\n              this.elements[i].resize(this.globalData.transformCanvas);\r\n          }\r\n      } */\n\n    this.ctxTransform(this.transformCanvas.props);\n    this.canvasContext.beginPath();\n    this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n    this.canvasContext.closePath();\n    this.canvasContext.clip();\n    this.renderFrame(this.renderedFrame, true);\n  };\n\n  CanvasRendererBase.prototype.destroy = function () {\n    if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.globalData.canvasContext = null;\n    this.animationItem.container = null;\n    this.destroyed = true;\n  };\n\n  CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n    if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n      return;\n    }\n\n    this.renderedFrame = num;\n    this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n    this.globalData.frameId += 1;\n    this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n    this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n    // console.log('NEW: ',num);\n\n    var i;\n    var len = this.layers.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n\n    if (this.globalData._mdf) {\n      if (this.renderConfig.clearCanvas === true) {\n        this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n      } else {\n        this.save();\n      }\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n\n      if (this.renderConfig.clearCanvas !== true) {\n        this.restore();\n      }\n    }\n  };\n\n  CanvasRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n\n    var element = this.createItem(this.layers[pos], this, this.globalData);\n    elements[pos] = element;\n    element.initExpressions();\n    /* if(this.layers[pos].ty === 0){\r\n          element.resize(this.globalData.transformCanvas);\r\n      } */\n  };\n\n  CanvasRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n\n  CanvasRendererBase.prototype.hide = function () {\n    this.animationItem.container.style.display = 'none';\n  };\n\n  CanvasRendererBase.prototype.show = function () {\n    this.animationItem.container.style.display = 'block';\n  };\n\n  function CanvasContext() {\n    this.opacity = -1;\n    this.transform = createTypedArray('float32', 16);\n    this.fillStyle = '';\n    this.strokeStyle = '';\n    this.lineWidth = '';\n    this.lineCap = '';\n    this.lineJoin = '';\n    this.miterLimit = '';\n    this.id = Math.random();\n  }\n\n  function CVContextData() {\n    this.stack = [];\n    this.cArrPos = 0;\n    this.cTr = new Matrix();\n    var i;\n    var len = 15;\n\n    for (i = 0; i < len; i += 1) {\n      var canvasContext = new CanvasContext();\n      this.stack[i] = canvasContext;\n    }\n\n    this._length = len;\n    this.nativeContext = null;\n    this.transformMat = new Matrix();\n    this.currentOpacity = 1; //\n\n    this.currentFillStyle = '';\n    this.appliedFillStyle = ''; //\n\n    this.currentStrokeStyle = '';\n    this.appliedStrokeStyle = ''; //\n\n    this.currentLineWidth = '';\n    this.appliedLineWidth = ''; //\n\n    this.currentLineCap = '';\n    this.appliedLineCap = ''; //\n\n    this.currentLineJoin = '';\n    this.appliedLineJoin = ''; //\n\n    this.appliedMiterLimit = '';\n    this.currentMiterLimit = '';\n  }\n\n  CVContextData.prototype.duplicate = function () {\n    var newLength = this._length * 2;\n    var i = 0;\n\n    for (i = this._length; i < newLength; i += 1) {\n      this.stack[i] = new CanvasContext();\n    }\n\n    this._length = newLength;\n  };\n\n  CVContextData.prototype.reset = function () {\n    this.cArrPos = 0;\n    this.cTr.reset();\n    this.stack[this.cArrPos].opacity = 1;\n  };\n\n  CVContextData.prototype.restore = function (forceRestore) {\n    this.cArrPos -= 1;\n    var currentContext = this.stack[this.cArrPos];\n    var transform = currentContext.transform;\n    var i;\n    var arr = this.cTr.props;\n\n    for (i = 0; i < 16; i += 1) {\n      arr[i] = transform[i];\n    }\n\n    if (forceRestore) {\n      this.nativeContext.restore();\n      var prevStack = this.stack[this.cArrPos + 1];\n      this.appliedFillStyle = prevStack.fillStyle;\n      this.appliedStrokeStyle = prevStack.strokeStyle;\n      this.appliedLineWidth = prevStack.lineWidth;\n      this.appliedLineCap = prevStack.lineCap;\n      this.appliedLineJoin = prevStack.lineJoin;\n      this.appliedMiterLimit = prevStack.miterLimit;\n    }\n\n    this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n    if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n      this.nativeContext.globalAlpha = currentContext.opacity;\n      this.currentOpacity = currentContext.opacity;\n    }\n\n    this.currentFillStyle = currentContext.fillStyle;\n    this.currentStrokeStyle = currentContext.strokeStyle;\n    this.currentLineWidth = currentContext.lineWidth;\n    this.currentLineCap = currentContext.lineCap;\n    this.currentLineJoin = currentContext.lineJoin;\n    this.currentMiterLimit = currentContext.miterLimit;\n  };\n\n  CVContextData.prototype.save = function (saveOnNativeFlag) {\n    if (saveOnNativeFlag) {\n      this.nativeContext.save();\n    }\n\n    var props = this.cTr.props;\n\n    if (this._length <= this.cArrPos) {\n      this.duplicate();\n    }\n\n    var currentStack = this.stack[this.cArrPos];\n    var i;\n\n    for (i = 0; i < 16; i += 1) {\n      currentStack.transform[i] = props[i];\n    }\n\n    this.cArrPos += 1;\n    var newStack = this.stack[this.cArrPos];\n    newStack.opacity = currentStack.opacity;\n    newStack.fillStyle = currentStack.fillStyle;\n    newStack.strokeStyle = currentStack.strokeStyle;\n    newStack.lineWidth = currentStack.lineWidth;\n    newStack.lineCap = currentStack.lineCap;\n    newStack.lineJoin = currentStack.lineJoin;\n    newStack.miterLimit = currentStack.miterLimit;\n  };\n\n  CVContextData.prototype.setOpacity = function (value) {\n    this.stack[this.cArrPos].opacity = value;\n  };\n\n  CVContextData.prototype.setContext = function (value) {\n    this.nativeContext = value;\n  };\n\n  CVContextData.prototype.fillStyle = function (value) {\n    if (this.stack[this.cArrPos].fillStyle !== value) {\n      this.currentFillStyle = value;\n      this.stack[this.cArrPos].fillStyle = value;\n    }\n  };\n\n  CVContextData.prototype.strokeStyle = function (value) {\n    if (this.stack[this.cArrPos].strokeStyle !== value) {\n      this.currentStrokeStyle = value;\n      this.stack[this.cArrPos].strokeStyle = value;\n    }\n  };\n\n  CVContextData.prototype.lineWidth = function (value) {\n    if (this.stack[this.cArrPos].lineWidth !== value) {\n      this.currentLineWidth = value;\n      this.stack[this.cArrPos].lineWidth = value;\n    }\n  };\n\n  CVContextData.prototype.lineCap = function (value) {\n    if (this.stack[this.cArrPos].lineCap !== value) {\n      this.currentLineCap = value;\n      this.stack[this.cArrPos].lineCap = value;\n    }\n  };\n\n  CVContextData.prototype.lineJoin = function (value) {\n    if (this.stack[this.cArrPos].lineJoin !== value) {\n      this.currentLineJoin = value;\n      this.stack[this.cArrPos].lineJoin = value;\n    }\n  };\n\n  CVContextData.prototype.miterLimit = function (value) {\n    if (this.stack[this.cArrPos].miterLimit !== value) {\n      this.currentMiterLimit = value;\n      this.stack[this.cArrPos].miterLimit = value;\n    }\n  };\n\n  CVContextData.prototype.transform = function (props) {\n    this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n    var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n    this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n    currentTransform.cloneFromProps(this.transformMat.props);\n    var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n    this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n  };\n\n  CVContextData.prototype.opacity = function (op) {\n    var currentOpacity = this.stack[this.cArrPos].opacity;\n    currentOpacity *= op < 0 ? 0 : op;\n\n    if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n      if (this.currentOpacity !== op) {\n        this.nativeContext.globalAlpha = op;\n        this.currentOpacity = op;\n      }\n\n      this.stack[this.cArrPos].opacity = currentOpacity;\n    }\n  };\n\n  CVContextData.prototype.fill = function (rule) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n\n    this.nativeContext.fill(rule);\n  };\n\n  CVContextData.prototype.fillRect = function (x, y, w, h) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n\n    this.nativeContext.fillRect(x, y, w, h);\n  };\n\n  CVContextData.prototype.stroke = function () {\n    if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n      this.appliedStrokeStyle = this.currentStrokeStyle;\n      this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n    }\n\n    if (this.appliedLineWidth !== this.currentLineWidth) {\n      this.appliedLineWidth = this.currentLineWidth;\n      this.nativeContext.lineWidth = this.appliedLineWidth;\n    }\n\n    if (this.appliedLineCap !== this.currentLineCap) {\n      this.appliedLineCap = this.currentLineCap;\n      this.nativeContext.lineCap = this.appliedLineCap;\n    }\n\n    if (this.appliedLineJoin !== this.currentLineJoin) {\n      this.appliedLineJoin = this.currentLineJoin;\n      this.nativeContext.lineJoin = this.appliedLineJoin;\n    }\n\n    if (this.appliedMiterLimit !== this.currentMiterLimit) {\n      this.appliedMiterLimit = this.currentMiterLimit;\n      this.nativeContext.miterLimit = this.appliedMiterLimit;\n    }\n\n    this.nativeContext.stroke();\n  };\n\n  function CVCompElement(data, globalData, comp) {\n    this.completeLayers = false;\n    this.layers = data.layers;\n    this.pendingElements = [];\n    this.elements = createSizedArray(this.layers.length);\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n  CVCompElement.prototype.renderInnerContent = function () {\n    var ctx = this.canvasContext;\n    ctx.beginPath();\n    ctx.moveTo(0, 0);\n    ctx.lineTo(this.data.w, 0);\n    ctx.lineTo(this.data.w, this.data.h);\n    ctx.lineTo(0, this.data.h);\n    ctx.lineTo(0, 0);\n    ctx.clip();\n    var i;\n    var len = this.layers.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n\n  CVCompElement.prototype.destroy = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.layers = null;\n    this.elements = null;\n  };\n\n  CVCompElement.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function CanvasRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.renderConfig = {\n      clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n      context: config && config.context || null,\n      progressiveLoad: config && config.progressiveLoad || false,\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      className: config && config.className || '',\n      id: config && config.id || '',\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.renderConfig.dpr = config && config.dpr || 1;\n\n    if (this.animationItem.wrapper) {\n      this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n    }\n\n    this.renderedFrame = -1;\n    this.globalData = {\n      frameNum: -1,\n      _mdf: false,\n      renderConfig: this.renderConfig,\n      currentGlobalAlpha: -1\n    };\n    this.contextData = new CVContextData();\n    this.elements = [];\n    this.pendingElements = [];\n    this.transformMat = new Matrix();\n    this.completeLayers = false;\n    this.rendererType = 'canvas';\n\n    if (this.renderConfig.clearCanvas) {\n      this.ctxTransform = this.contextData.transform.bind(this.contextData);\n      this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n      this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n      this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n      this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n      this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n      this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n      this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n      this.ctxFill = this.contextData.fill.bind(this.contextData);\n      this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n      this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n      this.save = this.contextData.save.bind(this.contextData);\n    }\n  }\n\n  extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n  CanvasRenderer.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function HBaseElement() {}\n\n  HBaseElement.prototype = {\n    checkBlendMode: function checkBlendMode() {},\n    initRendererElement: function initRendererElement() {\n      this.baseElement = createTag(this.data.tg || 'div');\n\n      if (this.data.hasMask) {\n        this.svgElement = createNS('svg');\n        this.layerElement = createNS('g');\n        this.maskedElement = this.layerElement;\n        this.svgElement.appendChild(this.layerElement);\n        this.baseElement.appendChild(this.svgElement);\n      } else {\n        this.layerElement = this.baseElement;\n      }\n\n      styleDiv(this.baseElement);\n    },\n    createContainerElements: function createContainerElements() {\n      this.renderableEffectsManager = new CVEffects(this);\n      this.transformedElement = this.baseElement;\n      this.maskedElement = this.layerElement;\n\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      }\n\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n      if (this.finalTransform._matMdf) {\n        var matrixValue = this.finalTransform.mat.toCSS();\n        transformedElementStyle.transform = matrixValue;\n        transformedElementStyle.webkitTransform = matrixValue;\n      }\n\n      if (this.finalTransform._opMdf) {\n        transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderFrame: function renderFrame() {\n      // If it is exported as hidden (data.hd === true) no need to render\n      // If it is not visible no need to render\n      if (this.data.hd || this.hidden) {\n        return;\n      }\n\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderElement();\n      this.renderInnerContent();\n\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.layerElement = null;\n      this.transformedElement = null;\n\n      if (this.matteElement) {\n        this.matteElement = null;\n      }\n\n      if (this.maskManager) {\n        this.maskManager.destroy();\n        this.maskManager = null;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n    },\n    addEffects: function addEffects() {},\n    setMatte: function setMatte() {}\n  };\n  HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n  HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n  HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n  function HSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n  HSolidElement.prototype.createContent = function () {\n    var rect;\n\n    if (this.data.hasMask) {\n      rect = createNS('rect');\n      rect.setAttribute('width', this.data.sw);\n      rect.setAttribute('height', this.data.sh);\n      rect.setAttribute('fill', this.data.sc);\n      this.svgElement.setAttribute('width', this.data.sw);\n      this.svgElement.setAttribute('height', this.data.sh);\n    } else {\n      rect = createTag('div');\n      rect.style.width = this.data.sw + 'px';\n      rect.style.height = this.data.sh + 'px';\n      rect.style.backgroundColor = this.data.sc;\n    }\n\n    this.layerElement.appendChild(rect);\n  };\n\n  function HShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = []; // Full shape data\n\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n    this.stylesList = []; // List of modifiers that will be applied to shapes\n\n    this.shapeModifiers = []; // List of items in shape tree\n\n    this.itemsData = []; // List of items in previous shape tree\n\n    this.processedElements = []; // List of animated components\n\n    this.animatedContents = [];\n    this.shapesContainer = createNS('g');\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n\n    this.prevViewData = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n  }\n\n  extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n  HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n  HShapeElement.prototype.createContent = function () {\n    var cont;\n    this.baseElement.style.fontSize = 0;\n\n    if (this.data.hasMask) {\n      this.layerElement.appendChild(this.shapesContainer);\n      cont = this.svgElement;\n    } else {\n      cont = createNS('svg');\n      var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n      cont.setAttribute('width', size.w);\n      cont.setAttribute('height', size.h);\n      cont.appendChild(this.shapesContainer);\n      this.layerElement.appendChild(cont);\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n    this.filterUniqueShapes();\n    this.shapeCont = cont;\n  };\n\n  HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n    var i;\n    var len = transformers.length;\n\n    for (i = 0; i < len; i += 1) {\n      point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n    }\n\n    return point;\n  };\n\n  HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n    var shape = item.sh.v;\n    var transformers = item.transformers;\n    var i;\n    var len = shape._length;\n    var vPoint;\n    var oPoint;\n    var nextIPoint;\n    var nextVPoint;\n\n    if (len <= 1) {\n      return;\n    }\n\n    for (i = 0; i < len - 1; i += 1) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n\n    if (shape.c) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n  };\n\n  HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n    this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n    var bounds = this.shapeBoundingBox;\n    boundingBox.x = bmMin(bounds.left, boundingBox.x);\n    boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n    boundingBox.y = bmMin(bounds.top, boundingBox.y);\n    boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n  };\n\n  HShapeElement.prototype.shapeBoundingBox = {\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0\n  };\n  HShapeElement.prototype.tempBoundingBox = {\n    x: 0,\n    xMax: 0,\n    y: 0,\n    yMax: 0,\n    width: 0,\n    height: 0\n  };\n\n  HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n    var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n    for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n      // eslint-disable-line no-plusplus\n      b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n      a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n      c = 3 * p1[i] - 3 * p0[i];\n      b |= 0; // eslint-disable-line no-bitwise\n\n      a |= 0; // eslint-disable-line no-bitwise\n\n      c |= 0; // eslint-disable-line no-bitwise\n\n      if (a === 0 && b === 0) {//\n      } else if (a === 0) {\n        t = -c / b;\n\n        if (t > 0 && t < 1) {\n          bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n        }\n      } else {\n        b2ac = b * b - 4 * c * a;\n\n        if (b2ac >= 0) {\n          t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n          if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n          t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n          if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n        }\n      }\n    }\n\n    this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n    this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n    this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n    this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n  };\n\n  HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n    return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n  };\n\n  HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n    var i;\n    var len = itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (itemsData[i] && itemsData[i].sh) {\n        this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n      } else if (itemsData[i] && itemsData[i].it) {\n        this.calculateBoundingBox(itemsData[i].it, boundingBox);\n      } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n        this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n      }\n    }\n  };\n\n  HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n    var width = 0;\n\n    if (widthProperty.keyframes) {\n      for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n        var kfw = widthProperty.keyframes[i].s;\n\n        if (kfw > width) {\n          width = kfw;\n        }\n      }\n\n      width *= widthProperty.mult;\n    } else {\n      width = widthProperty.v * widthProperty.mult;\n    }\n\n    boundingBox.x -= width;\n    boundingBox.xMax += width;\n    boundingBox.y -= width;\n    boundingBox.yMax += width;\n  };\n\n  HShapeElement.prototype.currentBoxContains = function (box) {\n    return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n  };\n\n  HShapeElement.prototype.renderInnerContent = function () {\n    this._renderShapeFrame();\n\n    if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n      var tempBoundingBox = this.tempBoundingBox;\n      var max = 999999;\n      tempBoundingBox.x = max;\n      tempBoundingBox.xMax = -max;\n      tempBoundingBox.y = max;\n      tempBoundingBox.yMax = -max;\n      this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n      tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n      tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n      if (this.currentBoxContains(tempBoundingBox)) {\n        return;\n      }\n\n      var changed = false;\n\n      if (this.currentBBox.w !== tempBoundingBox.width) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.shapeCont.setAttribute('width', tempBoundingBox.width);\n        changed = true;\n      }\n\n      if (this.currentBBox.h !== tempBoundingBox.height) {\n        this.currentBBox.h = tempBoundingBox.height;\n        this.shapeCont.setAttribute('height', tempBoundingBox.height);\n        changed = true;\n      }\n\n      if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.currentBBox.h = tempBoundingBox.height;\n        this.currentBBox.x = tempBoundingBox.x;\n        this.currentBBox.y = tempBoundingBox.y;\n        this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        var shapeStyle = this.shapeCont.style;\n        var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        shapeStyle.transform = shapeTransform;\n        shapeStyle.webkitTransform = shapeTransform;\n      }\n    }\n  };\n\n  function HTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.textPaths = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n    this.renderType = 'svg';\n    this.isMasked = false;\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n  HTextElement.prototype.createContent = function () {\n    this.isMasked = this.checkMasks();\n\n    if (this.isMasked) {\n      this.renderType = 'svg';\n      this.compW = this.comp.data.w;\n      this.compH = this.comp.data.h;\n      this.svgElement.setAttribute('width', this.compW);\n      this.svgElement.setAttribute('height', this.compH);\n      var g = createNS('g');\n      this.maskedElement.appendChild(g);\n      this.innerElem = g;\n    } else {\n      this.renderType = 'html';\n      this.innerElem = this.layerElement;\n    }\n\n    this.checkParenting();\n  };\n\n  HTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var innerElemStyle = this.innerElem.style;\n    var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n    innerElemStyle.fill = textColor;\n    innerElemStyle.color = textColor;\n\n    if (documentData.sc) {\n      innerElemStyle.stroke = this.buildColor(documentData.sc);\n      innerElemStyle.strokeWidth = documentData.sw + 'px';\n    }\n\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n    if (!this.globalData.fontManager.chars) {\n      innerElemStyle.fontSize = documentData.finalSize + 'px';\n      innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n      if (fontData.fClass) {\n        this.innerElem.className = fontData.fClass;\n      } else {\n        innerElemStyle.fontFamily = fontData.fFamily;\n        var fWeight = documentData.fWeight;\n        var fStyle = documentData.fStyle;\n        innerElemStyle.fontStyle = fStyle;\n        innerElemStyle.fontWeight = fWeight;\n      }\n    }\n\n    var i;\n    var len;\n    var letters = documentData.l;\n    len = letters.length;\n    var tSpan;\n    var tParent;\n    var tCont;\n    var matrixHelper = this.mHelper;\n    var shapes;\n    var shapeStr = '';\n    var cnt = 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.globalData.fontManager.chars) {\n        if (!this.textPaths[cnt]) {\n          tSpan = createNS('path');\n          tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n          tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n          tSpan.setAttribute('stroke-miterlimit', '4');\n        } else {\n          tSpan = this.textPaths[cnt];\n        }\n\n        if (!this.isMasked) {\n          if (this.textSpans[cnt]) {\n            tParent = this.textSpans[cnt];\n            tCont = tParent.children[0];\n          } else {\n            tParent = createTag('div');\n            tParent.style.lineHeight = 0;\n            tCont = createNS('svg');\n            tCont.appendChild(tSpan);\n            styleDiv(tParent);\n          }\n        }\n      } else if (!this.isMasked) {\n        if (this.textSpans[cnt]) {\n          tParent = this.textSpans[cnt];\n          tSpan = this.textPaths[cnt];\n        } else {\n          tParent = createTag('span');\n          styleDiv(tParent);\n          tSpan = createTag('span');\n          styleDiv(tSpan);\n          tParent.appendChild(tSpan);\n        }\n      } else {\n        tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n      } // tSpan.setAttribute('visibility', 'hidden');\n\n\n      if (this.globalData.fontManager.chars) {\n        var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n        var shapeData;\n\n        if (charData) {\n          shapeData = charData.data;\n        } else {\n          shapeData = null;\n        }\n\n        matrixHelper.reset();\n\n        if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n          shapes = shapeData.shapes[0].it;\n          matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n          shapeStr = this.createPathShape(matrixHelper, shapes);\n          tSpan.setAttribute('d', shapeStr);\n        }\n\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent);\n\n          if (shapeData && shapeData.shapes) {\n            // document.body.appendChild is needed to get exact measure of shape\n            document.body.appendChild(tCont);\n            var boundingBox = tCont.getBBox();\n            tCont.setAttribute('width', boundingBox.width + 2);\n            tCont.setAttribute('height', boundingBox.height + 2);\n            tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n            var tContStyle = tCont.style;\n            var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n            tContStyle.transform = tContTranslation;\n            tContStyle.webkitTransform = tContTranslation;\n            letters[i].yOffset = boundingBox.y - 1;\n          } else {\n            tCont.setAttribute('width', 1);\n            tCont.setAttribute('height', 1);\n          }\n\n          tParent.appendChild(tCont);\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      } else {\n        tSpan.textContent = letters[i].val;\n        tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent); //\n\n          var tStyle = tSpan.style;\n          var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n          tStyle.transform = tSpanTranslation;\n          tStyle.webkitTransform = tSpanTranslation;\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      } //\n\n\n      if (!this.isMasked) {\n        this.textSpans[cnt] = tParent;\n      } else {\n        this.textSpans[cnt] = tSpan;\n      }\n\n      this.textSpans[cnt].style.display = 'block';\n      this.textPaths[cnt] = tSpan;\n      cnt += 1;\n    }\n\n    while (cnt < this.textSpans.length) {\n      this.textSpans[cnt].style.display = 'none';\n      cnt += 1;\n    }\n  };\n\n  HTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var svgStyle;\n\n    if (this.data.singleShape) {\n      if (!this._isFirstFrame && !this.lettersChangedFlag) {\n        return;\n      }\n\n      if (this.isMasked && this.finalTransform._matMdf) {\n        // Todo Benchmark if using this is better than getBBox\n        this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n        svgStyle = this.svgElement.style;\n        var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n        svgStyle.transform = translation;\n        svgStyle.webkitTransform = translation;\n      }\n    }\n\n    this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n    if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n      return;\n    }\n\n    var i;\n    var len;\n    var count = 0;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var textSpan;\n    var textPath;\n\n    for (i = 0; i < len; i += 1) {\n      if (letters[i].n) {\n        count += 1;\n      } else {\n        textSpan = this.textSpans[i];\n        textPath = this.textPaths[i];\n        renderedLetter = renderedLetters[count];\n        count += 1;\n\n        if (renderedLetter._mdf.m) {\n          if (!this.isMasked) {\n            textSpan.style.webkitTransform = renderedLetter.m;\n            textSpan.style.transform = renderedLetter.m;\n          } else {\n            textSpan.setAttribute('transform', renderedLetter.m);\n          }\n        } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n        textSpan.style.opacity = renderedLetter.o;\n\n        if (renderedLetter.sw && renderedLetter._mdf.sw) {\n          textPath.setAttribute('stroke-width', renderedLetter.sw);\n        }\n\n        if (renderedLetter.sc && renderedLetter._mdf.sc) {\n          textPath.setAttribute('stroke', renderedLetter.sc);\n        }\n\n        if (renderedLetter.fc && renderedLetter._mdf.fc) {\n          textPath.setAttribute('fill', renderedLetter.fc);\n          textPath.style.color = renderedLetter.fc;\n        }\n      }\n    }\n\n    if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n      var boundingBox = this.innerElem.getBBox();\n\n      if (this.currentBBox.w !== boundingBox.width) {\n        this.currentBBox.w = boundingBox.width;\n        this.svgElement.setAttribute('width', boundingBox.width);\n      }\n\n      if (this.currentBBox.h !== boundingBox.height) {\n        this.currentBBox.h = boundingBox.height;\n        this.svgElement.setAttribute('height', boundingBox.height);\n      }\n\n      var margin = 1;\n\n      if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n        this.currentBBox.w = boundingBox.width + margin * 2;\n        this.currentBBox.h = boundingBox.height + margin * 2;\n        this.currentBBox.x = boundingBox.x - margin;\n        this.currentBBox.y = boundingBox.y - margin;\n        this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        svgStyle = this.svgElement.style;\n        var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        svgStyle.transform = svgTransform;\n        svgStyle.webkitTransform = svgTransform;\n      }\n    }\n  };\n\n  function HCameraElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initHierarchy();\n    var getProp = PropertyFactory.getProp;\n    this.pe = getProp(this, data.pe, 0, 0, this);\n\n    if (data.ks.p.s) {\n      this.px = getProp(this, data.ks.p.x, 1, 0, this);\n      this.py = getProp(this, data.ks.p.y, 1, 0, this);\n      this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n    } else {\n      this.p = getProp(this, data.ks.p, 1, 0, this);\n    }\n\n    if (data.ks.a) {\n      this.a = getProp(this, data.ks.a, 1, 0, this);\n    }\n\n    if (data.ks.or.k.length && data.ks.or.k[0].to) {\n      var i;\n      var len = data.ks.or.k.length;\n\n      for (i = 0; i < len; i += 1) {\n        data.ks.or.k[i].to = null;\n        data.ks.or.k[i].ti = null;\n      }\n    }\n\n    this.or = getProp(this, data.ks.or, 1, degToRads, this);\n    this.or.sh = true;\n    this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n    this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n    this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n    this.mat = new Matrix();\n    this._prevMat = new Matrix();\n    this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n    this.finalTransform = {\n      mProp: this\n    };\n  }\n\n  extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n  HCameraElement.prototype.setup = function () {\n    var i;\n    var len = this.comp.threeDElements.length;\n    var comp;\n    var perspectiveStyle;\n    var containerStyle;\n\n    for (i = 0; i < len; i += 1) {\n      // [perspectiveElem,container]\n      comp = this.comp.threeDElements[i];\n\n      if (comp.type === '3d') {\n        perspectiveStyle = comp.perspectiveElem.style;\n        containerStyle = comp.container.style;\n        var perspective = this.pe.v + 'px';\n        var origin = '0px 0px 0px';\n        var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n        perspectiveStyle.perspective = perspective;\n        perspectiveStyle.webkitPerspective = perspective;\n        containerStyle.transformOrigin = origin;\n        containerStyle.mozTransformOrigin = origin;\n        containerStyle.webkitTransformOrigin = origin;\n        perspectiveStyle.transform = matrix;\n        perspectiveStyle.webkitTransform = matrix;\n      }\n    }\n  };\n\n  HCameraElement.prototype.createElements = function () {};\n\n  HCameraElement.prototype.hide = function () {};\n\n  HCameraElement.prototype.renderFrame = function () {\n    var _mdf = this._isFirstFrame;\n    var i;\n    var len;\n\n    if (this.hierarchy) {\n      len = this.hierarchy.length;\n\n      for (i = 0; i < len; i += 1) {\n        _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n      }\n    }\n\n    if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n      this.mat.reset();\n\n      if (this.hierarchy) {\n        len = this.hierarchy.length - 1;\n\n        for (i = len; i >= 0; i -= 1) {\n          var mTransf = this.hierarchy[i].finalTransform.mProp;\n          this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n          this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n          this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n          this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n          this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n        }\n      }\n\n      if (this.p) {\n        this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n      } else {\n        this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n      }\n\n      if (this.a) {\n        var diffVector;\n\n        if (this.p) {\n          diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n        } else {\n          diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n        }\n\n        var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n        var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n        var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n        var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n        var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n        this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n      }\n\n      this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n      this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n      this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n      this.mat.translate(0, 0, this.pe.v);\n      var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n      if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n        len = this.comp.threeDElements.length;\n        var comp;\n        var perspectiveStyle;\n        var containerStyle;\n\n        for (i = 0; i < len; i += 1) {\n          comp = this.comp.threeDElements[i];\n\n          if (comp.type === '3d') {\n            if (hasMatrixChanged) {\n              var matValue = this.mat.toCSS();\n              containerStyle = comp.container.style;\n              containerStyle.transform = matValue;\n              containerStyle.webkitTransform = matValue;\n            }\n\n            if (this.pe._mdf) {\n              perspectiveStyle = comp.perspectiveElem.style;\n              perspectiveStyle.perspective = this.pe.v + 'px';\n              perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n            }\n          }\n        }\n\n        this.mat.clone(this._prevMat);\n      }\n    }\n\n    this._isFirstFrame = false;\n  };\n\n  HCameraElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n\n  HCameraElement.prototype.destroy = function () {};\n\n  HCameraElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  function HImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n  HImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    var img = new Image();\n\n    if (this.data.hasMask) {\n      this.imageElem = createNS('image');\n      this.imageElem.setAttribute('width', this.assetData.w + 'px');\n      this.imageElem.setAttribute('height', this.assetData.h + 'px');\n      this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n      this.layerElement.appendChild(this.imageElem);\n      this.baseElement.setAttribute('width', this.assetData.w);\n      this.baseElement.setAttribute('height', this.assetData.h);\n    } else {\n      this.layerElement.appendChild(img);\n    }\n\n    img.crossOrigin = 'anonymous';\n    img.src = assetPath;\n\n    if (this.data.ln) {\n      this.baseElement.setAttribute('id', this.data.ln);\n    }\n  };\n\n  function HybridRendererBase(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      }\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n\n  extendPrototype([BaseRenderer], HybridRendererBase);\n  HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n  HybridRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n\n  HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newDOMElement = element.getBaseElement();\n\n    if (!newDOMElement) {\n      return;\n    }\n\n    var layer = this.layers[pos];\n\n    if (!layer.ddd || !this.supports3d) {\n      if (this.threeDElements) {\n        this.addTo3dContainer(newDOMElement, pos);\n      } else {\n        var i = 0;\n        var nextDOMElement;\n        var nextLayer;\n        var tmpDOMElement;\n\n        while (i < pos) {\n          if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n            nextLayer = this.elements[i];\n            tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n            nextDOMElement = tmpDOMElement || nextDOMElement;\n          }\n\n          i += 1;\n        }\n\n        if (nextDOMElement) {\n          if (!layer.ddd || !this.supports3d) {\n            this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n          }\n        } else if (!layer.ddd || !this.supports3d) {\n          this.layerElement.appendChild(newDOMElement);\n        }\n      }\n    } else {\n      this.addTo3dContainer(newDOMElement, pos);\n    }\n  };\n\n  HybridRendererBase.prototype.createShape = function (data) {\n    if (!this.supports3d) {\n      return new SVGShapeElement(data, this.globalData, this);\n    }\n\n    return new HShapeElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createText = function (data) {\n    if (!this.supports3d) {\n      return new SVGTextLottieElement(data, this.globalData, this);\n    }\n\n    return new HTextElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createCamera = function (data) {\n    this.camera = new HCameraElement(data, this.globalData, this);\n    return this.camera;\n  };\n\n  HybridRendererBase.prototype.createImage = function (data) {\n    if (!this.supports3d) {\n      return new IImageElement(data, this.globalData, this);\n    }\n\n    return new HImageElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createSolid = function (data) {\n    if (!this.supports3d) {\n      return new ISolidElement(data, this.globalData, this);\n    }\n\n    return new HSolidElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n  HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n\n    while (i < len) {\n      if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n        return this.threeDElements[i].perspectiveElem;\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n    var perspectiveElem = createTag('div');\n    var style;\n    var containerStyle;\n    styleDiv(perspectiveElem);\n    var container = createTag('div');\n    styleDiv(container);\n\n    if (type === '3d') {\n      style = perspectiveElem.style;\n      style.width = this.globalData.compSize.w + 'px';\n      style.height = this.globalData.compSize.h + 'px';\n      var center = '50% 50%';\n      style.webkitTransformOrigin = center;\n      style.mozTransformOrigin = center;\n      style.transformOrigin = center;\n      containerStyle = container.style;\n      var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n      containerStyle.transform = matrix;\n      containerStyle.webkitTransform = matrix;\n    }\n\n    perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n    var threeDContainerData = {\n      container: container,\n      perspectiveElem: perspectiveElem,\n      startPos: pos,\n      endPos: pos,\n      type: type\n    };\n    this.threeDElements.push(threeDContainerData);\n    return threeDContainerData;\n  };\n\n  HybridRendererBase.prototype.build3dContainers = function () {\n    var i;\n    var len = this.layers.length;\n    var lastThreeDContainerData;\n    var currentContainer = '';\n\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n        if (currentContainer !== '3d') {\n          currentContainer = '3d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n        }\n\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      } else {\n        if (currentContainer !== '2d') {\n          currentContainer = '2d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n        }\n\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      }\n    }\n\n    len = this.threeDElements.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n    }\n  };\n\n  HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n\n    while (i < len) {\n      if (pos <= this.threeDElements[i].endPos) {\n        var j = this.threeDElements[i].startPos;\n        var nextElement;\n\n        while (j < pos) {\n          if (this.elements[j] && this.elements[j].getBaseElement) {\n            nextElement = this.elements[j].getBaseElement();\n          }\n\n          j += 1;\n        }\n\n        if (nextElement) {\n          this.threeDElements[i].container.insertBefore(elem, nextElement);\n        } else {\n          this.threeDElements[i].container.appendChild(elem);\n        }\n\n        break;\n      }\n\n      i += 1;\n    }\n  };\n\n  HybridRendererBase.prototype.configAnimation = function (animData) {\n    var resizerElem = createTag('div');\n    var wrapper = this.animationItem.wrapper;\n    var style = resizerElem.style;\n    style.width = animData.w + 'px';\n    style.height = animData.h + 'px';\n    this.resizerElem = resizerElem;\n    styleDiv(resizerElem);\n    style.transformStyle = 'flat';\n    style.mozTransformStyle = 'flat';\n    style.webkitTransformStyle = 'flat';\n\n    if (this.renderConfig.className) {\n      resizerElem.setAttribute('class', this.renderConfig.className);\n    }\n\n    wrapper.appendChild(resizerElem);\n    style.overflow = 'hidden';\n    var svg = createNS('svg');\n    svg.setAttribute('width', '1');\n    svg.setAttribute('height', '1');\n    styleDiv(svg);\n    this.resizerElem.appendChild(svg);\n    var defs = createNS('defs');\n    svg.appendChild(defs);\n    this.data = animData; // Mask animation\n\n    this.setupGlobalData(animData, svg);\n    this.globalData.defs = defs;\n    this.layers = animData.layers;\n    this.layerElement = this.resizerElem;\n    this.build3dContainers();\n    this.updateContainerSize();\n  };\n\n  HybridRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    this.animationItem.container = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n\n  HybridRendererBase.prototype.updateContainerSize = function () {\n    var elementWidth = this.animationItem.wrapper.offsetWidth;\n    var elementHeight = this.animationItem.wrapper.offsetHeight;\n    var elementRel = elementWidth / elementHeight;\n    var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n    var sx;\n    var sy;\n    var tx;\n    var ty;\n\n    if (animationRel > elementRel) {\n      sx = elementWidth / this.globalData.compSize.w;\n      sy = elementWidth / this.globalData.compSize.w;\n      tx = 0;\n      ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n    } else {\n      sx = elementHeight / this.globalData.compSize.h;\n      sy = elementHeight / this.globalData.compSize.h;\n      tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n      ty = 0;\n    }\n\n    var style = this.resizerElem.style;\n    style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n    style.transform = style.webkitTransform;\n  };\n\n  HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n  HybridRendererBase.prototype.hide = function () {\n    this.resizerElem.style.display = 'none';\n  };\n\n  HybridRendererBase.prototype.show = function () {\n    this.resizerElem.style.display = 'block';\n  };\n\n  HybridRendererBase.prototype.initItems = function () {\n    this.buildAllItems();\n\n    if (this.camera) {\n      this.camera.setup();\n    } else {\n      var cWidth = this.globalData.compSize.w;\n      var cHeight = this.globalData.compSize.h;\n      var i;\n      var len = this.threeDElements.length;\n\n      for (i = 0; i < len; i += 1) {\n        var style = this.threeDElements[i].perspectiveElem.style;\n        style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n        style.perspective = style.webkitPerspective;\n      }\n    }\n  };\n\n  HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n    var floatingContainer = createTag('div');\n\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n\n  function HCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = !data.hasMask;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n  HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n  HCompElement.prototype.createContainerElements = function () {\n    this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n    if (this.data.hasMask) {\n      this.svgElement.setAttribute('width', this.data.w);\n      this.svgElement.setAttribute('height', this.data.h);\n      this.transformedElement = this.baseElement;\n    } else {\n      this.transformedElement = this.layerElement;\n    }\n  };\n\n  HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n    var j = 0;\n    var nextElement;\n\n    while (j < pos) {\n      if (this.elements[j] && this.elements[j].getBaseElement) {\n        nextElement = this.elements[j].getBaseElement();\n      }\n\n      j += 1;\n    }\n\n    if (nextElement) {\n      this.layerElement.insertBefore(elem, nextElement);\n    } else {\n      this.layerElement.appendChild(elem);\n    }\n  };\n\n  HCompElement.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  function HybridRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      },\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n\n  extendPrototype([HybridRendererBase], HybridRenderer);\n\n  HybridRenderer.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  var CompExpressionInterface = function () {\n    return function (comp) {\n      function _thisLayerFunction(name) {\n        var i = 0;\n        var len = comp.layers.length;\n\n        while (i < len) {\n          if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n            return comp.elements[i].layerInterface;\n          }\n\n          i += 1;\n        }\n\n        return null; // return {active:false};\n      }\n\n      Object.defineProperty(_thisLayerFunction, '_name', {\n        value: comp.data.nm\n      });\n      _thisLayerFunction.layer = _thisLayerFunction;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n      _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n      _thisLayerFunction.displayStartTime = 0;\n      _thisLayerFunction.numLayers = comp.layers.length;\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n  /* eslint-disable */\n\n  /*\r\n   Copyright 2014 David Bau.\r\n\r\n   Permission is hereby granted, free of charge, to any person obtaining\r\n   a copy of this software and associated documentation files (the\r\n   \"Software\"), to deal in the Software without restriction, including\r\n   without limitation the rights to use, copy, modify, merge, publish,\r\n   distribute, sublicense, and/or sell copies of the Software, and to\r\n   permit persons to whom the Software is furnished to do so, subject to\r\n   the following conditions:\r\n\r\n   The above copyright notice and this permission notice shall be\r\n   included in all copies or substantial portions of the Software.\r\n\r\n   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n   */\n  function seedRandom(pool, math) {\n    //\n    // The following constants are related to IEEE 754 limits.\n    //\n    var global = this,\n        width = 256,\n        // each RC4 output is 0 <= x < 256\n    chunks = 6,\n        // at least six RC4 outputs for each double\n    digits = 52,\n        // there are 52 significant digits in a double\n    rngname = 'random',\n        // rngname: name for Math.random and Math.seedrandom\n    startdenom = math.pow(width, chunks),\n        significance = math.pow(2, digits),\n        overflow = significance * 2,\n        mask = width - 1,\n        nodecrypto; // node.js crypto module, initialized at the bottom.\n    //\n    // seedrandom()\n    // This is the seedrandom function described above.\n    //\n\n    function seedrandom(seed, options, callback) {\n      var key = [];\n      options = options === true ? {\n        entropy: true\n      } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n      var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n      var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n      // randomness in every bit of the mantissa of the IEEE 754 value.\n\n      var prng = function prng() {\n        var n = arc4.g(chunks),\n            // Start with a numerator n < 2 ^ 48\n        d = startdenom,\n            //   and denominator d = 2 ^ 48.\n        x = 0; //   and no 'extra last byte'.\n\n        while (n < significance) {\n          // Fill up all significant digits by\n          n = (n + x) * width; //   shifting numerator and\n\n          d *= width; //   denominator and generating a\n\n          x = arc4.g(1); //   new least-significant-byte.\n        }\n\n        while (n >= overflow) {\n          // To avoid rounding up, before adding\n          n /= 2; //   last byte, shift everything\n\n          d /= 2; //   right using integer math until\n\n          x >>>= 1; //   we have exactly the desired bits.\n        }\n\n        return (n + x) / d; // Form the number within [0, 1).\n      };\n\n      prng.int32 = function () {\n        return arc4.g(4) | 0;\n      };\n\n      prng.quick = function () {\n        return arc4.g(4) / 0x100000000;\n      };\n\n      prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n      mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n      return (options.pass || callback || function (prng, seed, is_math_call, state) {\n        if (state) {\n          // Load the arc4 state from the given state if it has an S array.\n          if (state.S) {\n            copy(state, arc4);\n          } // Only provide the .state method if requested via options.state.\n\n\n          prng.state = function () {\n            return copy(arc4, {});\n          };\n        } // If called as a method of Math (Math.seedrandom()), mutate\n        // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n        if (is_math_call) {\n          math[rngname] = prng;\n          return seed;\n        } // Otherwise, it is a newer calling convention, so return the\n        // prng directly.\n        else return prng;\n      })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n    }\n\n    math['seed' + rngname] = seedrandom; //\n    // ARC4\n    //\n    // An ARC4 implementation.  The constructor takes a key in the form of\n    // an array of at most (width) integers that should be 0 <= x < (width).\n    //\n    // The g(count) method returns a pseudorandom integer that concatenates\n    // the next (count) outputs from ARC4.  Its return value is a number x\n    // that is in the range 0 <= x < (width ^ count).\n    //\n\n    function ARC4(key) {\n      var t,\n          keylen = key.length,\n          me = this,\n          i = 0,\n          j = me.i = me.j = 0,\n          s = me.S = []; // The empty key [] is treated as [0].\n\n      if (!keylen) {\n        key = [keylen++];\n      } // Set up S using the standard key scheduling algorithm.\n\n\n      while (i < width) {\n        s[i] = i++;\n      }\n\n      for (i = 0; i < width; i++) {\n        s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n        s[j] = t;\n      } // The \"g\" method returns the next (count) outputs as one number.\n\n\n      me.g = function (count) {\n        // Using instance members instead of closure state nearly doubles speed.\n        var t,\n            r = 0,\n            i = me.i,\n            j = me.j,\n            s = me.S;\n\n        while (count--) {\n          t = s[i = mask & i + 1];\n          r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n        }\n\n        me.i = i;\n        me.j = j;\n        return r; // For robust unpredictability, the function call below automatically\n        // discards an initial batch of values.  This is called RC4-drop[256].\n        // See http://google.com/search?q=rsa+fluhrer+response&btnI\n      };\n    } //\n    // copy()\n    // Copies internal state of ARC4 to or from a plain object.\n    //\n\n\n    function copy(f, t) {\n      t.i = f.i;\n      t.j = f.j;\n      t.S = f.S.slice();\n      return t;\n    } //\n    // flatten()\n    // Converts an object tree to nested arrays of strings.\n    //\n\n\n    function flatten(obj, depth) {\n      var result = [],\n          typ = _typeof$2(obj),\n          prop;\n\n      if (depth && typ == 'object') {\n        for (prop in obj) {\n          try {\n            result.push(flatten(obj[prop], depth - 1));\n          } catch (e) {}\n        }\n      }\n\n      return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n    } //\n    // mixkey()\n    // Mixes a string seed into a key that is an array of integers, and\n    // returns a shortened string seed that is equivalent to the result key.\n    //\n\n\n    function mixkey(seed, key) {\n      var stringseed = seed + '',\n          smear,\n          j = 0;\n\n      while (j < stringseed.length) {\n        key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n      }\n\n      return tostring(key);\n    } //\n    // autoseed()\n    // Returns an object for autoseeding, using window.crypto and Node crypto\n    // module if available.\n    //\n\n\n    function autoseed() {\n      try {\n        if (nodecrypto) {\n          return tostring(nodecrypto.randomBytes(width));\n        }\n\n        var out = new Uint8Array(width);\n        (global.crypto || global.msCrypto).getRandomValues(out);\n        return tostring(out);\n      } catch (e) {\n        var browser = global.navigator,\n            plugins = browser && browser.plugins;\n        return [+new Date(), global, plugins, global.screen, tostring(pool)];\n      }\n    } //\n    // tostring()\n    // Converts an array of charcodes to a string\n    //\n\n\n    function tostring(a) {\n      return String.fromCharCode.apply(0, a);\n    } //\n    // When seedrandom.js is loaded, we immediately mix a few bits\n    // from the built-in RNG into the entropy pool.  Because we do\n    // not want to interfere with deterministic PRNG state later,\n    // seedrandom will not call math.random on its own again after\n    // initialization.\n    //\n\n\n    mixkey(math.random(), pool); //\n    // Nodejs and AMD support: export the implementation as a module using\n    // either convention.\n    //\n    // End anonymous scope, and pass initial values.\n  }\n\n  ;\n\n  function initialize$2(BMMath) {\n    seedRandom([], BMMath);\n  }\n\n  var propTypes = {\n    SHAPE: 'shape'\n  };\n\n  function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n  var ExpressionManager = function () {\n    'use strict';\n\n    var ob = {};\n    var Math = BMMath;\n    var window = null;\n    var document = null;\n    var XMLHttpRequest = null;\n    var fetch = null;\n    var frames = null;\n    var _lottieGlobal = {};\n    initialize$2(BMMath);\n\n    function resetFrame() {\n      _lottieGlobal = {};\n    }\n\n    function $bm_isInstanceOfArray(arr) {\n      return arr.constructor === Array || arr.constructor === Float32Array;\n    }\n\n    function isNumerable(tOfV, v) {\n      return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n    }\n\n    function $bm_neg(a) {\n      var tOfA = _typeof$1(a);\n\n      if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n        return -a;\n      }\n\n      if ($bm_isInstanceOfArray(a)) {\n        var i;\n        var lenA = a.length;\n        var retArr = [];\n\n        for (i = 0; i < lenA; i += 1) {\n          retArr[i] = -a[i];\n        }\n\n        return retArr;\n      }\n\n      if (a.propType) {\n        return a.v;\n      }\n\n      return -a;\n    }\n\n    var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n    var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n    var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n    function sum(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n        return a + b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] += b;\n        return a;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a + b[0];\n        return b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] + b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n\n          i += 1;\n        }\n\n        return retArr;\n      }\n\n      return 0;\n    }\n\n    var add = sum;\n\n    function sub(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        if (tOfA === 'string') {\n          a = parseInt(a, 10);\n        }\n\n        if (tOfB === 'string') {\n          b = parseInt(b, 10);\n        }\n\n        return a - b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] -= b;\n        return a;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a - b[0];\n        return b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] - b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n\n          i += 1;\n        }\n\n        return retArr;\n      }\n\n      return 0;\n    }\n\n    function mul(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      var arr;\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a * b;\n      }\n\n      var i;\n      var len;\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] * b;\n        }\n\n        return arr;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a * b[i];\n        }\n\n        return arr;\n      }\n\n      return 0;\n    }\n\n    function div(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      var arr;\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a / b;\n      }\n\n      var i;\n      var len;\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] / b;\n        }\n\n        return arr;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a / b[i];\n        }\n\n        return arr;\n      }\n\n      return 0;\n    }\n\n    function mod(a, b) {\n      if (typeof a === 'string') {\n        a = parseInt(a, 10);\n      }\n\n      if (typeof b === 'string') {\n        b = parseInt(b, 10);\n      }\n\n      return a % b;\n    }\n\n    var $bm_sum = sum;\n    var $bm_sub = sub;\n    var $bm_mul = mul;\n    var $bm_div = div;\n    var $bm_mod = mod;\n\n    function clamp(num, min, max) {\n      if (min > max) {\n        var mm = max;\n        max = min;\n        min = mm;\n      }\n\n      return Math.min(Math.max(num, min), max);\n    }\n\n    function radiansToDegrees(val) {\n      return val / degToRads;\n    }\n\n    var radians_to_degrees = radiansToDegrees;\n\n    function degreesToRadians(val) {\n      return val * degToRads;\n    }\n\n    var degrees_to_radians = radiansToDegrees;\n    var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n    function length(arr1, arr2) {\n      if (typeof arr1 === 'number' || arr1 instanceof Number) {\n        arr2 = arr2 || 0;\n        return Math.abs(arr1 - arr2);\n      }\n\n      if (!arr2) {\n        arr2 = helperLengthArray;\n      }\n\n      var i;\n      var len = Math.min(arr1.length, arr2.length);\n      var addedLength = 0;\n\n      for (i = 0; i < len; i += 1) {\n        addedLength += Math.pow(arr2[i] - arr1[i], 2);\n      }\n\n      return Math.sqrt(addedLength);\n    }\n\n    function normalize(vec) {\n      return div(vec, length(vec));\n    }\n\n    function rgbToHsl(val) {\n      var r = val[0];\n      var g = val[1];\n      var b = val[2];\n      var max = Math.max(r, g, b);\n      var min = Math.min(r, g, b);\n      var h;\n      var s;\n      var l = (max + min) / 2;\n\n      if (max === min) {\n        h = 0; // achromatic\n\n        s = 0; // achromatic\n      } else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n        switch (max) {\n          case r:\n            h = (g - b) / d + (g < b ? 6 : 0);\n            break;\n\n          case g:\n            h = (b - r) / d + 2;\n            break;\n\n          case b:\n            h = (r - g) / d + 4;\n            break;\n\n          default:\n            break;\n        }\n\n        h /= 6;\n      }\n\n      return [h, s, l, val[3]];\n    }\n\n    function hue2rgb(p, q, t) {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    }\n\n    function hslToRgb(val) {\n      var h = val[0];\n      var s = val[1];\n      var l = val[2];\n      var r;\n      var g;\n      var b;\n\n      if (s === 0) {\n        r = l; // achromatic\n\n        b = l; // achromatic\n\n        g = l; // achromatic\n      } else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n      }\n\n      return [r, g, b, val[3]];\n    }\n\n    function linear(t, tMin, tMax, value1, value2) {\n      if (value1 === undefined || value2 === undefined) {\n        value1 = tMin;\n        value2 = tMax;\n        tMin = 0;\n        tMax = 1;\n      }\n\n      if (tMax < tMin) {\n        var _tMin = tMax;\n        tMax = tMin;\n        tMin = _tMin;\n      }\n\n      if (t <= tMin) {\n        return value1;\n      }\n\n      if (t >= tMax) {\n        return value2;\n      }\n\n      var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n      if (!value1.length) {\n        return value1 + (value2 - value1) * perc;\n      }\n\n      var i;\n      var len = value1.length;\n      var arr = createTypedArray('float32', len);\n\n      for (i = 0; i < len; i += 1) {\n        arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n      }\n\n      return arr;\n    }\n\n    function random(min, max) {\n      if (max === undefined) {\n        if (min === undefined) {\n          min = 0;\n          max = 1;\n        } else {\n          max = min;\n          min = undefined;\n        }\n      }\n\n      if (max.length) {\n        var i;\n        var len = max.length;\n\n        if (!min) {\n          min = createTypedArray('float32', len);\n        }\n\n        var arr = createTypedArray('float32', len);\n        var rnd = BMMath.random();\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = min[i] + rnd * (max[i] - min[i]);\n        }\n\n        return arr;\n      }\n\n      if (min === undefined) {\n        min = 0;\n      }\n\n      var rndm = BMMath.random();\n      return min + rndm * (max - min);\n    }\n\n    function createPath(points, inTangents, outTangents, closed) {\n      var i;\n      var len = points.length;\n      var path = shapePool.newElement();\n      path.setPathData(!!closed, len);\n      var arrPlaceholder = [0, 0];\n      var inVertexPoint;\n      var outVertexPoint;\n\n      for (i = 0; i < len; i += 1) {\n        inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n        outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n        path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n      }\n\n      return path;\n    }\n\n    function initiateExpression(elem, data, property) {\n      // Bail out if we don't want expressions\n      function noOp(_value) {\n        return _value;\n      }\n\n      if (!elem.globalData.renderConfig.runExpressions) {\n        return noOp;\n      }\n\n      var val = data.x;\n      var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n      var _needsRandom = val.indexOf('random') !== -1;\n\n      var elemType = elem.data.ty;\n      var transform;\n      var $bm_transform;\n      var content;\n      var effect;\n      var thisProperty = property;\n      thisProperty.valueAtTime = thisProperty.getValueAtTime;\n      Object.defineProperty(thisProperty, 'value', {\n        get: function get() {\n          return thisProperty.v;\n        }\n      });\n      elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n      elem.comp.displayStartTime = 0;\n      var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      var width = elem.data.sw ? elem.data.sw : 0;\n      var height = elem.data.sh ? elem.data.sh : 0;\n      var name = elem.data.nm;\n      var loopIn;\n      var loop_in;\n      var loopOut;\n      var loop_out;\n      var smooth;\n      var toWorld;\n      var fromWorld;\n      var fromComp;\n      var toComp;\n      var fromCompToSurface;\n      var position;\n      var rotation;\n      var anchorPoint;\n      var scale;\n      var thisLayer;\n      var thisComp;\n      var mask;\n      var valueAtTime;\n      var velocityAtTime;\n      var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n      var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n      var numKeys = property.kf ? data.k.length : 0;\n      var active = !this.data || this.data.hd !== true;\n\n      var wiggle = function wiggle(freq, amp) {\n        var iWiggle;\n        var j;\n        var lenWiggle = this.pv.length ? this.pv.length : 1;\n        var addedAmps = createTypedArray('float32', lenWiggle);\n        freq = 5;\n        var iterations = Math.floor(time * freq);\n        iWiggle = 0;\n        j = 0;\n\n        while (iWiggle < iterations) {\n          // var rnd = BMMath.random();\n          for (j = 0; j < lenWiggle; j += 1) {\n            addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n          }\n\n          iWiggle += 1;\n        } // var rnd2 = BMMath.random();\n\n\n        var periods = time * freq;\n        var perc = periods - Math.floor(periods);\n        var arr = createTypedArray('float32', lenWiggle);\n\n        if (lenWiggle > 1) {\n          for (j = 0; j < lenWiggle; j += 1) {\n            arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n            // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n          }\n\n          return arr;\n        }\n\n        return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n      }.bind(this);\n\n      if (thisProperty.loopIn) {\n        loopIn = thisProperty.loopIn.bind(thisProperty);\n        loop_in = loopIn;\n      }\n\n      if (thisProperty.loopOut) {\n        loopOut = thisProperty.loopOut.bind(thisProperty);\n        loop_out = loopOut;\n      }\n\n      if (thisProperty.smooth) {\n        smooth = thisProperty.smooth.bind(thisProperty);\n      }\n\n      function loopInDuration(type, duration) {\n        return loopIn(type, duration, true);\n      }\n\n      function loopOutDuration(type, duration) {\n        return loopOut(type, duration, true);\n      }\n\n      if (this.getValueAtTime) {\n        valueAtTime = this.getValueAtTime.bind(this);\n      }\n\n      if (this.getVelocityAtTime) {\n        velocityAtTime = this.getVelocityAtTime.bind(this);\n      }\n\n      var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n      function lookAt(elem1, elem2) {\n        var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n        var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n        var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n        return [yaw, pitch, 0];\n      }\n\n      function easeOut(t, tMin, tMax, val1, val2) {\n        return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n      }\n\n      function easeIn(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n      }\n\n      function ease(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n      }\n\n      function applyEase(fn, t, tMin, tMax, val1, val2) {\n        if (val1 === undefined) {\n          val1 = tMin;\n          val2 = tMax;\n        } else {\n          t = (t - tMin) / (tMax - tMin);\n        }\n\n        if (t > 1) {\n          t = 1;\n        } else if (t < 0) {\n          t = 0;\n        }\n\n        var mult = fn(t);\n\n        if ($bm_isInstanceOfArray(val1)) {\n          var iKey;\n          var lenKey = val1.length;\n          var arr = createTypedArray('float32', lenKey);\n\n          for (iKey = 0; iKey < lenKey; iKey += 1) {\n            arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n          }\n\n          return arr;\n        }\n\n        return (val2 - val1) * mult + val1;\n      }\n\n      function nearestKey(time) {\n        var iKey;\n        var lenKey = data.k.length;\n        var index;\n        var keyTime;\n\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          index = 0;\n          keyTime = 0;\n        } else {\n          index = -1;\n          time *= elem.comp.globalData.frameRate;\n\n          if (time < data.k[0].t) {\n            index = 1;\n            keyTime = data.k[0].t;\n          } else {\n            for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n              if (time === data.k[iKey].t) {\n                index = iKey + 1;\n                keyTime = data.k[iKey].t;\n                break;\n              } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n                if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n                  index = iKey + 2;\n                  keyTime = data.k[iKey + 1].t;\n                } else {\n                  index = iKey + 1;\n                  keyTime = data.k[iKey].t;\n                }\n\n                break;\n              }\n            }\n\n            if (index === -1) {\n              index = iKey + 1;\n              keyTime = data.k[iKey].t;\n            }\n          }\n        }\n\n        var obKey = {};\n        obKey.index = index;\n        obKey.time = keyTime / elem.comp.globalData.frameRate;\n        return obKey;\n      }\n\n      function key(ind) {\n        var obKey;\n        var iKey;\n        var lenKey;\n\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          throw new Error('The property has no keyframe at index ' + ind);\n        }\n\n        ind -= 1;\n        obKey = {\n          time: data.k[ind].t / elem.comp.globalData.frameRate,\n          value: []\n        };\n        var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n        lenKey = arr.length;\n\n        for (iKey = 0; iKey < lenKey; iKey += 1) {\n          obKey[iKey] = arr[iKey];\n          obKey.value[iKey] = arr[iKey];\n        }\n\n        return obKey;\n      }\n\n      function framesToTime(fr, fps) {\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n\n        return fr / fps;\n      }\n\n      function timeToFrames(t, fps) {\n        if (!t && t !== 0) {\n          t = time;\n        }\n\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n\n        return t * fps;\n      }\n\n      function seedRandom(seed) {\n        BMMath.seedrandom(randSeed + seed);\n      }\n\n      function sourceRectAtTime() {\n        return elem.sourceRectAtTime();\n      }\n\n      function substring(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substring(init);\n          }\n\n          return value.substring(init, end);\n        }\n\n        return '';\n      }\n\n      function substr(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substr(init);\n          }\n\n          return value.substr(init, end);\n        }\n\n        return '';\n      }\n\n      function posterizeTime(framesPerSecond) {\n        time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n        value = valueAtTime(time);\n      }\n\n      var time;\n      var velocity;\n      var value;\n      var text;\n      var textIndex;\n      var textTotal;\n      var selectorValue;\n      var index = elem.data.ind;\n      var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n      var parent;\n      var randSeed = Math.floor(Math.random() * 1000000);\n      var globalData = elem.globalData;\n\n      function executeExpression(_value) {\n        // globalData.pushExpression();\n        value = _value;\n\n        if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n          return value;\n        }\n\n        if (this.propType === 'textSelector') {\n          textIndex = this.textIndex;\n          textTotal = this.textTotal;\n          selectorValue = this.selectorValue;\n        }\n\n        if (!thisLayer) {\n          text = elem.layerInterface.text;\n          thisLayer = elem.layerInterface;\n          thisComp = elem.comp.compInterface;\n          toWorld = thisLayer.toWorld.bind(thisLayer);\n          fromWorld = thisLayer.fromWorld.bind(thisLayer);\n          fromComp = thisLayer.fromComp.bind(thisLayer);\n          toComp = thisLayer.toComp.bind(thisLayer);\n          mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n          fromCompToSurface = fromComp;\n        }\n\n        if (!transform) {\n          transform = elem.layerInterface('ADBE Transform Group');\n          $bm_transform = transform;\n\n          if (transform) {\n            anchorPoint = transform.anchorPoint;\n            /* position = transform.position;\r\n                      rotation = transform.rotation;\r\n                      scale = transform.scale; */\n          }\n        }\n\n        if (elemType === 4 && !content) {\n          content = thisLayer('ADBE Root Vectors Group');\n        }\n\n        if (!effect) {\n          effect = thisLayer(4);\n        }\n\n        hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n        if (hasParent && !parent) {\n          parent = elem.hierarchy[0].layerInterface;\n        }\n\n        time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n        if (_needsRandom) {\n          seedRandom(randSeed + time);\n        }\n\n        if (needsVelocity) {\n          velocity = velocityAtTime(time);\n        }\n\n        expression_function();\n        this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n        // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n        scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n        return scoped_bm_rt;\n      } // Bundlers will see these as dead code and unless we reference them\n\n\n      executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n      return executeExpression;\n    }\n\n    ob.initiateExpression = initiateExpression;\n    ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n    ob.resetFrame = resetFrame;\n    return ob;\n  }();\n\n  var Expressions = function () {\n    var ob = {};\n    ob.initExpressions = initExpressions;\n    ob.resetFrame = ExpressionManager.resetFrame;\n\n    function initExpressions(animation) {\n      var stackCount = 0;\n      var registers = [];\n\n      function pushExpression() {\n        stackCount += 1;\n      }\n\n      function popExpression() {\n        stackCount -= 1;\n\n        if (stackCount === 0) {\n          releaseInstances();\n        }\n      }\n\n      function registerExpressionProperty(expression) {\n        if (registers.indexOf(expression) === -1) {\n          registers.push(expression);\n        }\n      }\n\n      function releaseInstances() {\n        var i;\n        var len = registers.length;\n\n        for (i = 0; i < len; i += 1) {\n          registers[i].release();\n        }\n\n        registers.length = 0;\n      }\n\n      animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n      animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n      animation.renderer.globalData.pushExpression = pushExpression;\n      animation.renderer.globalData.popExpression = popExpression;\n      animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n    }\n\n    return ob;\n  }();\n\n  var MaskManagerInterface = function () {\n    function MaskInterface(mask, data) {\n      this._mask = mask;\n      this._data = data;\n    }\n\n    Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n      get: function get() {\n        if (this._mask.prop.k) {\n          this._mask.prop.getValue();\n        }\n\n        return this._mask.prop;\n      }\n    });\n    Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n      get: function get() {\n        if (this._mask.op.k) {\n          this._mask.op.getValue();\n        }\n\n        return this._mask.op.v * 100;\n      }\n    });\n\n    var MaskManager = function MaskManager(maskManager) {\n      var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n      var i;\n      var len = maskManager.viewData.length;\n\n      for (i = 0; i < len; i += 1) {\n        _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n      }\n\n      var maskFunction = function maskFunction(name) {\n        i = 0;\n\n        while (i < len) {\n          if (maskManager.masksProperties[i].nm === name) {\n            return _masksInterfaces[i];\n          }\n\n          i += 1;\n        }\n\n        return null;\n      };\n\n      return maskFunction;\n    };\n\n    return MaskManager;\n  }();\n\n  var ExpressionPropertyInterface = function () {\n    var defaultUnidimensionalValue = {\n      pv: 0,\n      v: 0,\n      mult: 1\n    };\n    var defaultMultidimensionalValue = {\n      pv: [0, 0, 0],\n      v: [0, 0, 0],\n      mult: 1\n    };\n\n    function completeProperty(expressionValue, property, type) {\n      Object.defineProperty(expressionValue, 'velocity', {\n        get: function get() {\n          return property.getVelocityAtTime(property.comp.currentFrame);\n        }\n      });\n      expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n      expressionValue.key = function (pos) {\n        if (!expressionValue.numKeys) {\n          return 0;\n        }\n\n        var value = '';\n\n        if ('s' in property.keyframes[pos - 1]) {\n          value = property.keyframes[pos - 1].s;\n        } else if ('e' in property.keyframes[pos - 2]) {\n          value = property.keyframes[pos - 2].e;\n        } else {\n          value = property.keyframes[pos - 2].s;\n        }\n\n        var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n        valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n        valueProp.value = type === 'unidimensional' ? value[0] : value;\n        return valueProp;\n      };\n\n      expressionValue.valueAtTime = property.getValueAtTime;\n      expressionValue.speedAtTime = property.getSpeedAtTime;\n      expressionValue.velocityAtTime = property.getVelocityAtTime;\n      expressionValue.propertyGroup = property.propertyGroup;\n    }\n\n    function UnidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultUnidimensionalValue;\n      }\n\n      var mult = 1 / property.mult;\n      var val = property.pv * mult;\n      var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n      expressionValue.value = val;\n      completeProperty(expressionValue, property, 'unidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n\n        val = property.v * mult;\n\n        if (expressionValue.value !== val) {\n          expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n          expressionValue.value = val;\n          completeProperty(expressionValue, property, 'unidimensional');\n        }\n\n        return expressionValue;\n      };\n    }\n\n    function MultidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultMultidimensionalValue;\n      }\n\n      var mult = 1 / property.mult;\n      var len = property.data && property.data.l || property.pv.length;\n      var expressionValue = createTypedArray('float32', len);\n      var arrValue = createTypedArray('float32', len);\n      expressionValue.value = arrValue;\n      completeProperty(expressionValue, property, 'multidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n\n        for (var i = 0; i < len; i += 1) {\n          arrValue[i] = property.v[i] * mult;\n          expressionValue[i] = arrValue[i];\n        }\n\n        return expressionValue;\n      };\n    } // TODO: try to avoid using this getter\n\n\n    function defaultGetter() {\n      return defaultUnidimensionalValue;\n    }\n\n    return function (property) {\n      if (!property) {\n        return defaultGetter;\n      }\n\n      if (property.propType === 'unidimensional') {\n        return UnidimensionalPropertyInterface(property);\n      }\n\n      return MultidimensionalPropertyInterface(property);\n    };\n  }();\n\n  var TransformExpressionInterface = function () {\n    return function (transform) {\n      function _thisFunction(name) {\n        switch (name) {\n          case 'scale':\n          case 'Scale':\n          case 'ADBE Scale':\n          case 6:\n            return _thisFunction.scale;\n\n          case 'rotation':\n          case 'Rotation':\n          case 'ADBE Rotation':\n          case 'ADBE Rotate Z':\n          case 10:\n            return _thisFunction.rotation;\n\n          case 'ADBE Rotate X':\n            return _thisFunction.xRotation;\n\n          case 'ADBE Rotate Y':\n            return _thisFunction.yRotation;\n\n          case 'position':\n          case 'Position':\n          case 'ADBE Position':\n          case 2:\n            return _thisFunction.position;\n\n          case 'ADBE Position_0':\n            return _thisFunction.xPosition;\n\n          case 'ADBE Position_1':\n            return _thisFunction.yPosition;\n\n          case 'ADBE Position_2':\n            return _thisFunction.zPosition;\n\n          case 'anchorPoint':\n          case 'AnchorPoint':\n          case 'Anchor Point':\n          case 'ADBE AnchorPoint':\n          case 1:\n            return _thisFunction.anchorPoint;\n\n          case 'opacity':\n          case 'Opacity':\n          case 11:\n            return _thisFunction.opacity;\n\n          default:\n            return null;\n        }\n      }\n\n      Object.defineProperty(_thisFunction, 'rotation', {\n        get: ExpressionPropertyInterface(transform.r || transform.rz)\n      });\n      Object.defineProperty(_thisFunction, 'zRotation', {\n        get: ExpressionPropertyInterface(transform.rz || transform.r)\n      });\n      Object.defineProperty(_thisFunction, 'xRotation', {\n        get: ExpressionPropertyInterface(transform.rx)\n      });\n      Object.defineProperty(_thisFunction, 'yRotation', {\n        get: ExpressionPropertyInterface(transform.ry)\n      });\n      Object.defineProperty(_thisFunction, 'scale', {\n        get: ExpressionPropertyInterface(transform.s)\n      });\n\n      var _px;\n\n      var _py;\n\n      var _pz;\n\n      var _transformFactory;\n\n      if (transform.p) {\n        _transformFactory = ExpressionPropertyInterface(transform.p);\n      } else {\n        _px = ExpressionPropertyInterface(transform.px);\n        _py = ExpressionPropertyInterface(transform.py);\n\n        if (transform.pz) {\n          _pz = ExpressionPropertyInterface(transform.pz);\n        }\n      }\n\n      Object.defineProperty(_thisFunction, 'position', {\n        get: function get() {\n          if (transform.p) {\n            return _transformFactory();\n          }\n\n          return [_px(), _py(), _pz ? _pz() : 0];\n        }\n      });\n      Object.defineProperty(_thisFunction, 'xPosition', {\n        get: ExpressionPropertyInterface(transform.px)\n      });\n      Object.defineProperty(_thisFunction, 'yPosition', {\n        get: ExpressionPropertyInterface(transform.py)\n      });\n      Object.defineProperty(_thisFunction, 'zPosition', {\n        get: ExpressionPropertyInterface(transform.pz)\n      });\n      Object.defineProperty(_thisFunction, 'anchorPoint', {\n        get: ExpressionPropertyInterface(transform.a)\n      });\n      Object.defineProperty(_thisFunction, 'opacity', {\n        get: ExpressionPropertyInterface(transform.o)\n      });\n      Object.defineProperty(_thisFunction, 'skew', {\n        get: ExpressionPropertyInterface(transform.sk)\n      });\n      Object.defineProperty(_thisFunction, 'skewAxis', {\n        get: ExpressionPropertyInterface(transform.sa)\n      });\n      Object.defineProperty(_thisFunction, 'orientation', {\n        get: ExpressionPropertyInterface(transform.or)\n      });\n      return _thisFunction;\n    };\n  }();\n\n  var LayerExpressionInterface = function () {\n    function getMatrix(time) {\n      var toWorldMat = new Matrix();\n\n      if (time !== undefined) {\n        var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n        propMatrix.clone(toWorldMat);\n      } else {\n        var transformMat = this._elem.finalTransform.mProp;\n        transformMat.applyToMatrix(toWorldMat);\n      }\n\n      return toWorldMat;\n    }\n\n    function toWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.applyPoint(toWorldMat, arr);\n    }\n\n    function toWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.applyPoint(toWorldMat, arr);\n    }\n\n    function fromWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.invertPoint(toWorldMat, arr);\n    }\n\n    function fromWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.invertPoint(toWorldMat, arr);\n    }\n\n    function applyPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n\n      return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n    }\n\n    function invertPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n\n      return matrix.inversePoint(arr);\n    }\n\n    function fromComp(arr) {\n      var toWorldMat = new Matrix();\n      toWorldMat.reset();\n\n      this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n        }\n\n        return toWorldMat.inversePoint(arr);\n      }\n\n      return toWorldMat.inversePoint(arr);\n    }\n\n    function sampleImage() {\n      return [1, 1, 1, 1];\n    }\n\n    return function (elem) {\n      var transformInterface;\n\n      function _registerMaskInterface(maskManager) {\n        _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n      }\n\n      function _registerEffectsInterface(effects) {\n        _thisLayerFunction.effect = effects;\n      }\n\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Root Vectors Group':\n          case 'Contents':\n          case 2:\n            return _thisLayerFunction.shapeInterface;\n\n          case 1:\n          case 6:\n          case 'Transform':\n          case 'transform':\n          case 'ADBE Transform Group':\n            return transformInterface;\n\n          case 4:\n          case 'ADBE Effect Parade':\n          case 'effects':\n          case 'Effects':\n            return _thisLayerFunction.effect;\n\n          case 'ADBE Text Properties':\n            return _thisLayerFunction.textInterface;\n\n          default:\n            return null;\n        }\n      }\n\n      _thisLayerFunction.getMatrix = getMatrix;\n      _thisLayerFunction.invertPoint = invertPoint;\n      _thisLayerFunction.applyPoint = applyPoint;\n      _thisLayerFunction.toWorld = toWorld;\n      _thisLayerFunction.toWorldVec = toWorldVec;\n      _thisLayerFunction.fromWorld = fromWorld;\n      _thisLayerFunction.fromWorldVec = fromWorldVec;\n      _thisLayerFunction.toComp = toWorld;\n      _thisLayerFunction.fromComp = fromComp;\n      _thisLayerFunction.sampleImage = sampleImage;\n      _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n      _thisLayerFunction._elem = elem;\n      transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n      var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n      Object.defineProperties(_thisLayerFunction, {\n        hasParent: {\n          get: function get() {\n            return elem.hierarchy.length;\n          }\n        },\n        parent: {\n          get: function get() {\n            return elem.hierarchy[0].layerInterface;\n          }\n        },\n        rotation: getDescriptor(transformInterface, 'rotation'),\n        scale: getDescriptor(transformInterface, 'scale'),\n        position: getDescriptor(transformInterface, 'position'),\n        opacity: getDescriptor(transformInterface, 'opacity'),\n        anchorPoint: anchorPointDescriptor,\n        anchor_point: anchorPointDescriptor,\n        transform: {\n          get: function get() {\n            return transformInterface;\n          }\n        },\n        active: {\n          get: function get() {\n            return elem.isInRange;\n          }\n        }\n      });\n      _thisLayerFunction.startTime = elem.data.st;\n      _thisLayerFunction.index = elem.data.ind;\n      _thisLayerFunction.source = elem.data.refId;\n      _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n      _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n      _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      _thisLayerFunction._name = elem.data.nm;\n      _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n      _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n      return _thisLayerFunction;\n    };\n  }();\n\n  var propertyGroupFactory = function () {\n    return function (interfaceFunction, parentPropertyGroup) {\n      return function (val) {\n        val = val === undefined ? 1 : val;\n\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n\n        return parentPropertyGroup(val - 1);\n      };\n    };\n  }();\n\n  var PropertyInterface = function () {\n    return function (propertyName, propertyGroup) {\n      var interfaceFunction = {\n        _name: propertyName\n      };\n\n      function _propertyGroup(val) {\n        val = val === undefined ? 1 : val;\n\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n\n        return propertyGroup(val - 1);\n      }\n\n      return _propertyGroup;\n    };\n  }();\n\n  var EffectsExpressionInterface = function () {\n    var ob = {\n      createEffectsInterface: createEffectsInterface\n    };\n\n    function createEffectsInterface(elem, propertyGroup) {\n      if (elem.effectsManager) {\n        var effectElements = [];\n        var effectsData = elem.data.ef;\n        var i;\n        var len = elem.effectsManager.effectElements.length;\n\n        for (i = 0; i < len; i += 1) {\n          effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n        }\n\n        var effects = elem.data.ef || [];\n\n        var groupInterface = function groupInterface(name) {\n          i = 0;\n          len = effects.length;\n\n          while (i < len) {\n            if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n              return effectElements[i];\n            }\n\n            i += 1;\n          }\n\n          return null;\n        };\n\n        Object.defineProperty(groupInterface, 'numProperties', {\n          get: function get() {\n            return effects.length;\n          }\n        });\n        return groupInterface;\n      }\n\n      return null;\n    }\n\n    function createGroupInterface(data, elements, propertyGroup, elem) {\n      function groupInterface(name) {\n        var effects = data.ef;\n        var i = 0;\n        var len = effects.length;\n\n        while (i < len) {\n          if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n            if (effects[i].ty === 5) {\n              return effectElements[i];\n            }\n\n            return effectElements[i]();\n          }\n\n          i += 1;\n        }\n\n        throw new Error();\n      }\n\n      var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n      var effectElements = [];\n      var i;\n      var len = data.ef.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (data.ef[i].ty === 5) {\n          effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n        } else {\n          effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n        }\n      }\n\n      if (data.mn === 'ADBE Color Control') {\n        Object.defineProperty(groupInterface, 'color', {\n          get: function get() {\n            return effectElements[0]();\n          }\n        });\n      }\n\n      Object.defineProperties(groupInterface, {\n        numProperties: {\n          get: function get() {\n            return data.np;\n          }\n        },\n        _name: {\n          value: data.nm\n        },\n        propertyGroup: {\n          value: _propertyGroup\n        }\n      });\n      groupInterface.enabled = data.en !== 0;\n      groupInterface.active = groupInterface.enabled;\n      return groupInterface;\n    }\n\n    function createValueInterface(element, type, elem, propertyGroup) {\n      var expressionProperty = ExpressionPropertyInterface(element.p);\n\n      function interfaceFunction() {\n        if (type === 10) {\n          return elem.comp.compInterface(element.p.v);\n        }\n\n        return expressionProperty();\n      }\n\n      if (element.p.setGroupProperty) {\n        element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n      }\n\n      return interfaceFunction;\n    }\n\n    return ob;\n  }();\n\n  var ShapePathInterface = function () {\n    return function pathInterfaceFactory(shape, view, propertyGroup) {\n      var prop = view.sh;\n\n      function interfaceFunction(val) {\n        if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n          return interfaceFunction.path;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        path: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n\n            return prop;\n          }\n        },\n        shape: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n\n            return prop;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        ix: {\n          value: shape.ix\n        },\n        propertyIndex: {\n          value: shape.ix\n        },\n        mn: {\n          value: shape.mn\n        },\n        propertyGroup: {\n          value: propertyGroup\n        }\n      });\n      return interfaceFunction;\n    };\n  }();\n\n  var ShapeExpressionInterface = function () {\n    function iterateElements(shapes, view, propertyGroup) {\n      var arr = [];\n      var i;\n      var len = shapes ? shapes.length : 0;\n\n      for (i = 0; i < len; i += 1) {\n        if (shapes[i].ty === 'gr') {\n          arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'fl') {\n          arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'st') {\n          arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tm') {\n          arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n        } else if (shapes[i].ty === 'el') {\n          arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sr') {\n          arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sh') {\n          arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rc') {\n          arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rd') {\n          arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rp') {\n          arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'gf') {\n          arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else {\n          arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n        }\n      }\n\n      return arr;\n    }\n\n    function contentsInterfaceFactory(shape, view, propertyGroup) {\n      var interfaces;\n\n      var interfaceFunction = function _interfaceFunction(value) {\n        var i = 0;\n        var len = interfaces.length;\n\n        while (i < len) {\n          if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n            return interfaces[i];\n          }\n\n          i += 1;\n        }\n\n        if (typeof value === 'number') {\n          return interfaces[value - 1];\n        }\n\n        return null;\n      };\n\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n      interfaceFunction.numProperties = interfaces.length;\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.transform = transformInterface;\n      interfaceFunction.propertyIndex = shape.cix;\n      interfaceFunction._name = shape.nm;\n      return interfaceFunction;\n    }\n\n    function groupInterfaceFactory(shape, view, propertyGroup) {\n      var interfaceFunction = function _interfaceFunction(value) {\n        switch (value) {\n          case 'ADBE Vectors Group':\n          case 'Contents':\n          case 2:\n            return interfaceFunction.content;\n          // Not necessary for now. Keeping them here in case a new case appears\n          // case 'ADBE Vector Transform Group':\n          // case 3:\n\n          default:\n            return interfaceFunction.transform;\n        }\n      };\n\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.content = content;\n      interfaceFunction.transform = transformInterface;\n      Object.defineProperty(interfaceFunction, '_name', {\n        get: function get() {\n          return shape.nm;\n        }\n      }); // interfaceFunction.content = interfaceFunction;\n\n      interfaceFunction.numProperties = shape.np;\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.nm = shape.nm;\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function fillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n\n    function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Start Point' || val === 'start point') {\n          return interfaceFunction.startPoint;\n        }\n\n        if (val === 'End Point' || val === 'end point') {\n          return interfaceFunction.endPoint;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        startPoint: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        endPoint: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        type: {\n          get: function get() {\n            return 'a';\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n\n    function defaultInterfaceFactory() {\n      function interfaceFunction() {\n        return null;\n      }\n\n      return interfaceFunction;\n    }\n\n    function strokeInterfaceFactory(shape, view, propertyGroup) {\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n      function addPropertyToDashOb(i) {\n        Object.defineProperty(dashOb, shape.d[i].nm, {\n          get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n        });\n      }\n\n      var i;\n      var len = shape.d ? shape.d.length : 0;\n      var dashOb = {};\n\n      for (i = 0; i < len; i += 1) {\n        addPropertyToDashOb(i);\n        view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n      }\n\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        if (val === 'Stroke Width' || val === 'stroke width') {\n          return interfaceFunction.strokeWidth;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        strokeWidth: {\n          get: ExpressionPropertyInterface(view.w)\n        },\n        dash: {\n          get: function get() {\n            return dashOb;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n      return interfaceFunction;\n    }\n\n    function trimInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === shape.e.ix || val === 'End' || val === 'end') {\n          return interfaceFunction.end;\n        }\n\n        if (val === shape.s.ix) {\n          return interfaceFunction.start;\n        }\n\n        if (val === shape.o.ix) {\n          return interfaceFunction.offset;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      interfaceFunction.propertyIndex = shape.ix;\n      view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.propertyGroup = propertyGroup;\n      Object.defineProperties(interfaceFunction, {\n        start: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        end: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function transformInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.a.ix === value || value === 'Anchor Point') {\n          return interfaceFunction.anchorPoint;\n        }\n\n        if (shape.o.ix === value || value === 'Opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        if (shape.p.ix === value || value === 'Position') {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n          return interfaceFunction.rotation;\n        }\n\n        if (shape.s.ix === value || value === 'Scale') {\n          return interfaceFunction.scale;\n        }\n\n        if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n          return interfaceFunction.skew;\n        }\n\n        if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n          return interfaceFunction.skewAxis;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n      view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n      view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n      if (view.transform.mProps.sk) {\n        view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n        view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n      }\n\n      view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        opacity: {\n          get: ExpressionPropertyInterface(view.transform.mProps.o)\n        },\n        position: {\n          get: ExpressionPropertyInterface(view.transform.mProps.p)\n        },\n        anchorPoint: {\n          get: ExpressionPropertyInterface(view.transform.mProps.a)\n        },\n        scale: {\n          get: ExpressionPropertyInterface(view.transform.mProps.s)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(view.transform.mProps.r)\n        },\n        skew: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sk)\n        },\n        skewAxis: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sa)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.ty = 'tr';\n      interfaceFunction.mn = shape.mn;\n      interfaceFunction.propertyGroup = propertyGroup;\n      return interfaceFunction;\n    }\n\n    function ellipseInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.s.ix === value) {\n          return interfaceFunction.size;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      interfaceFunction.propertyIndex = shape.ix;\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function starInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value) {\n          return interfaceFunction.rotation;\n        }\n\n        if (shape.pt.ix === value) {\n          return interfaceFunction.points;\n        }\n\n        if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n          return interfaceFunction.outerRadius;\n        }\n\n        if (shape.os.ix === value) {\n          return interfaceFunction.outerRoundness;\n        }\n\n        if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n          return interfaceFunction.innerRadius;\n        }\n\n        if (shape.is && shape.is.ix === value) {\n          return interfaceFunction.innerRoundness;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n      prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n      prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n      if (shape.ir) {\n        prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n        prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        points: {\n          get: ExpressionPropertyInterface(prop.pt)\n        },\n        outerRadius: {\n          get: ExpressionPropertyInterface(prop.or)\n        },\n        outerRoundness: {\n          get: ExpressionPropertyInterface(prop.os)\n        },\n        innerRadius: {\n          get: ExpressionPropertyInterface(prop.ir)\n        },\n        innerRoundness: {\n          get: ExpressionPropertyInterface(prop.is)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function rectInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value) {\n          return interfaceFunction.roundness;\n        }\n\n        if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n          return interfaceFunction.size;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        roundness: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function roundedInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.r.ix === value || value === 'Round Corners 1') {\n          return interfaceFunction.radius;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        radius: {\n          get: ExpressionPropertyInterface(prop.rd)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function repeaterInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.c.ix === value || value === 'Copies') {\n          return interfaceFunction.copies;\n        }\n\n        if (shape.o.ix === value || value === 'Offset') {\n          return interfaceFunction.offset;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n      prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        copies: {\n          get: ExpressionPropertyInterface(prop.c)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(prop.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    return function (shapes, view, propertyGroup) {\n      var interfaces;\n\n      function _interfaceFunction(value) {\n        if (typeof value === 'number') {\n          value = value === undefined ? 1 : value;\n\n          if (value === 0) {\n            return propertyGroup;\n          }\n\n          return interfaces[value - 1];\n        }\n\n        var i = 0;\n        var len = interfaces.length;\n\n        while (i < len) {\n          if (interfaces[i]._name === value) {\n            return interfaces[i];\n          }\n\n          i += 1;\n        }\n\n        return null;\n      }\n\n      function parentGroupWrapper() {\n        return propertyGroup;\n      }\n\n      _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n      interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n      _interfaceFunction.numProperties = interfaces.length;\n      _interfaceFunction._name = 'Contents';\n      return _interfaceFunction;\n    };\n  }();\n\n  var TextExpressionInterface = function () {\n    return function (elem) {\n      var _sourceText;\n\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Text Document':\n            return _thisLayerFunction.sourceText;\n\n          default:\n            return null;\n        }\n      }\n\n      Object.defineProperty(_thisLayerFunction, 'sourceText', {\n        get: function get() {\n          elem.textProperty.getValue();\n          var stringValue = elem.textProperty.currentData.t;\n\n          if (!_sourceText || stringValue !== _sourceText.value) {\n            _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n            // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n            _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n            Object.defineProperty(_sourceText, 'style', {\n              get: function get() {\n                return {\n                  fillColor: elem.textProperty.currentData.fc\n                };\n              }\n            });\n          }\n\n          return _sourceText;\n        }\n      });\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n  var FootageInterface = function () {\n    var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n      var currentPropertyName = '';\n      var currentProperty = elem.getFootageData();\n\n      function init() {\n        currentPropertyName = '';\n        currentProperty = elem.getFootageData();\n        return searchProperty;\n      }\n\n      function searchProperty(value) {\n        if (currentProperty[value]) {\n          currentPropertyName = value;\n          currentProperty = currentProperty[value];\n\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n\n          return currentProperty;\n        }\n\n        var propertyNameIndex = value.indexOf(currentPropertyName);\n\n        if (propertyNameIndex !== -1) {\n          var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n          currentProperty = currentProperty[index];\n\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n\n          return currentProperty;\n        }\n\n        return '';\n      }\n\n      return init;\n    };\n\n    var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n      function interfaceFunction(value) {\n        if (value === 'Outline') {\n          return interfaceFunction.outlineInterface();\n        }\n\n        return null;\n      }\n\n      interfaceFunction._name = 'Outline';\n      interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n      return interfaceFunction;\n    };\n\n    return function (elem) {\n      function _interfaceFunction(value) {\n        if (value === 'Data') {\n          return _interfaceFunction.dataInterface;\n        }\n\n        return null;\n      }\n\n      _interfaceFunction._name = 'Data';\n      _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n      return _interfaceFunction;\n    };\n  }();\n\n  var interfaces = {\n    layer: LayerExpressionInterface,\n    effects: EffectsExpressionInterface,\n    comp: CompExpressionInterface,\n    shape: ShapeExpressionInterface,\n    text: TextExpressionInterface,\n    footage: FootageInterface\n  };\n\n  function getInterface(type) {\n    return interfaces[type] || null;\n  }\n\n  var expressionHelpers = function () {\n    function searchExpressions(elem, data, prop) {\n      if (data.x) {\n        prop.k = true;\n        prop.x = true;\n        prop.initiateExpression = ExpressionManager.initiateExpression;\n        prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n      }\n    }\n\n    function getValueAtTime(frameNum) {\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n\n      if (frameNum !== this._cachingAtTime.lastFrame) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n        this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n        this._cachingAtTime.lastFrame = frameNum;\n      }\n\n      return this._cachingAtTime.value;\n    }\n\n    function getSpeedAtTime(frameNum) {\n      var delta = -0.01;\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var speed = 0;\n\n      if (v1.length) {\n        var i;\n\n        for (i = 0; i < v1.length; i += 1) {\n          speed += Math.pow(v2[i] - v1[i], 2);\n        }\n\n        speed = Math.sqrt(speed) * 100;\n      } else {\n        speed = 0;\n      }\n\n      return speed;\n    }\n\n    function getVelocityAtTime(frameNum) {\n      if (this.vel !== undefined) {\n        return this.vel;\n      }\n\n      var delta = -0.001; // frameNum += this.elem.data.st;\n\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var velocity;\n\n      if (v1.length) {\n        velocity = createTypedArray('float32', v1.length);\n        var i;\n\n        for (i = 0; i < v1.length; i += 1) {\n          // removing frameRate\n          // if needed, don't add it here\n          // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n          velocity[i] = (v2[i] - v1[i]) / delta;\n        }\n      } else {\n        velocity = (v2 - v1) / delta;\n      }\n\n      return velocity;\n    }\n\n    function getStaticValueAtTime() {\n      return this.pv;\n    }\n\n    function setGroupProperty(propertyGroup) {\n      this.propertyGroup = propertyGroup;\n    }\n\n    return {\n      searchExpressions: searchExpressions,\n      getSpeedAtTime: getSpeedAtTime,\n      getVelocityAtTime: getVelocityAtTime,\n      getValueAtTime: getValueAtTime,\n      getStaticValueAtTime: getStaticValueAtTime,\n      setGroupProperty: setGroupProperty\n    };\n  }();\n\n  function addPropertyDecorator() {\n    function loopOut(type, duration, durationFlag) {\n      if (!this.k || !this.keyframes) {\n        return this.pv;\n      }\n\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n      if (currentFrame <= lastKeyFrame) {\n        return this.pv;\n      }\n\n      var cycleDuration;\n      var firstKeyFrame;\n\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n\n        firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n        } else {\n          cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n        }\n\n        firstKeyFrame = lastKeyFrame - cycleDuration;\n      }\n\n      var i;\n      var len;\n      var ret;\n\n      if (type === 'pingpong') {\n        var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n        if (iterations % 2 !== 0) {\n          return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n        var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n          }\n\n          return ret;\n        }\n\n        return (endV - initV) * repeats + current;\n      } else if (type === 'continue') {\n        var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n        if (this.pv.length) {\n          ret = new Array(lastValue.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n          }\n\n          return ret;\n        }\n\n        return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n      }\n\n      return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n\n    function loopIn(type, duration, durationFlag) {\n      if (!this.k) {\n        return this.pv;\n      }\n\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var firstKeyFrame = keyframes[0].t;\n\n      if (currentFrame >= firstKeyFrame) {\n        return this.pv;\n      }\n\n      var cycleDuration;\n      var lastKeyFrame;\n\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n\n        lastKeyFrame = keyframes[duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n        } else {\n          cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n        }\n\n        lastKeyFrame = firstKeyFrame + cycleDuration;\n      }\n\n      var i;\n      var len;\n      var ret;\n\n      if (type === 'pingpong') {\n        var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n        if (iterations % 2 === 0) {\n          return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n        var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n          }\n\n          return ret;\n        }\n\n        return current - (endV - initV) * repeats;\n      } else if (type === 'continue') {\n        var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n        if (this.pv.length) {\n          ret = new Array(firstValue.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n          }\n\n          return ret;\n        }\n\n        return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n      }\n\n      return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n\n    function smooth(width, samples) {\n      if (!this.k) {\n        return this.pv;\n      }\n\n      width = (width || 0.4) * 0.5;\n      samples = Math.floor(samples || 5);\n\n      if (samples <= 1) {\n        return this.pv;\n      }\n\n      var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n      var initFrame = currentTime - width;\n      var endFrame = currentTime + width;\n      var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n      var i = 0;\n      var j = 0;\n      var value;\n\n      if (this.pv.length) {\n        value = createTypedArray('float32', this.pv.length);\n      } else {\n        value = 0;\n      }\n\n      var sampleValue;\n\n      while (i < samples) {\n        sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n        if (this.pv.length) {\n          for (j = 0; j < this.pv.length; j += 1) {\n            value[j] += sampleValue[j];\n          }\n        } else {\n          value += sampleValue;\n        }\n\n        i += 1;\n      }\n\n      if (this.pv.length) {\n        for (j = 0; j < this.pv.length; j += 1) {\n          value[j] /= samples;\n        }\n      } else {\n        value /= samples;\n      }\n\n      return value;\n    }\n\n    function getTransformValueAtTime(time) {\n      if (!this._transformCachingAtTime) {\n        this._transformCachingAtTime = {\n          v: new Matrix()\n        };\n      } /// /\n\n\n      var matrix = this._transformCachingAtTime.v;\n      matrix.cloneFromProps(this.pre.props);\n\n      if (this.appliedTransformations < 1) {\n        var anchor = this.a.getValueAtTime(time);\n        matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n      }\n\n      if (this.appliedTransformations < 2) {\n        var scale = this.s.getValueAtTime(time);\n        matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n      }\n\n      if (this.sk && this.appliedTransformations < 3) {\n        var skew = this.sk.getValueAtTime(time);\n        var skewAxis = this.sa.getValueAtTime(time);\n        matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n      }\n\n      if (this.r && this.appliedTransformations < 4) {\n        var rotation = this.r.getValueAtTime(time);\n        matrix.rotate(-rotation * this.r.mult);\n      } else if (!this.r && this.appliedTransformations < 4) {\n        var rotationZ = this.rz.getValueAtTime(time);\n        var rotationY = this.ry.getValueAtTime(time);\n        var rotationX = this.rx.getValueAtTime(time);\n        var orientation = this.or.getValueAtTime(time);\n        matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n      }\n\n      if (this.data.p && this.data.p.s) {\n        var positionX = this.px.getValueAtTime(time);\n        var positionY = this.py.getValueAtTime(time);\n\n        if (this.data.p.z) {\n          var positionZ = this.pz.getValueAtTime(time);\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n        } else {\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n        }\n      } else {\n        var position = this.p.getValueAtTime(time);\n        matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n      }\n\n      return matrix; /// /\n    }\n\n    function getTransformStaticValueAtTime() {\n      return this.v.clone(new Matrix());\n    }\n\n    var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n    TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n      var prop = getTransformProperty(elem, data, container);\n\n      if (prop.dynamicProperties.length) {\n        prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n      }\n\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      return prop;\n    };\n\n    var propertyGetProp = PropertyFactory.getProp;\n\n    PropertyFactory.getProp = function (elem, data, type, mult, container) {\n      var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n      // prop.loopOut = loopOut;\n      // prop.loopIn = loopIn;\n\n      if (prop.kf) {\n        prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n      }\n\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      prop.loopOut = loopOut;\n      prop.loopIn = loopIn;\n      prop.smooth = smooth;\n      prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n      prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n      prop.numKeys = data.a === 1 ? data.k.length : 0;\n      prop.propertyIndex = data.ix;\n      var value = 0;\n\n      if (type !== 0) {\n        value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n      }\n\n      prop._cachingAtTime = {\n        lastFrame: initialDefaultFrame,\n        lastIndex: 0,\n        value: value\n      };\n      expressionHelpers.searchExpressions(elem, data, prop);\n\n      if (prop.k) {\n        container.addDynamicProperty(prop);\n      }\n\n      return prop;\n    };\n\n    function getShapeValueAtTime(frameNum) {\n      // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n      if (!this._cachingAtTime) {\n        this._cachingAtTime = {\n          shapeValue: shapePool.clone(this.pv),\n          lastIndex: 0,\n          lastTime: initialDefaultFrame\n        };\n      }\n\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n\n      if (frameNum !== this._cachingAtTime.lastTime) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n        this._cachingAtTime.lastTime = frameNum;\n        this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n      }\n\n      return this._cachingAtTime.shapeValue;\n    }\n\n    var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n    var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n    function ShapeExpressions() {}\n\n    ShapeExpressions.prototype = {\n      vertices: function vertices(prop, time) {\n        if (this.k) {\n          this.getValue();\n        }\n\n        var shapePath = this.v;\n\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n\n        var i;\n        var len = shapePath._length;\n        var vertices = shapePath[prop];\n        var points = shapePath.v;\n        var arr = createSizedArray(len);\n\n        for (i = 0; i < len; i += 1) {\n          if (prop === 'i' || prop === 'o') {\n            arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n          } else {\n            arr[i] = [vertices[i][0], vertices[i][1]];\n          }\n        }\n\n        return arr;\n      },\n      points: function points(time) {\n        return this.vertices('v', time);\n      },\n      inTangents: function inTangents(time) {\n        return this.vertices('i', time);\n      },\n      outTangents: function outTangents(time) {\n        return this.vertices('o', time);\n      },\n      isClosed: function isClosed() {\n        return this.v.c;\n      },\n      pointOnPath: function pointOnPath(perc, time) {\n        var shapePath = this.v;\n\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n\n        if (!this._segmentsLength) {\n          this._segmentsLength = bez.getSegmentsLength(shapePath);\n        }\n\n        var segmentsLength = this._segmentsLength;\n        var lengths = segmentsLength.lengths;\n        var lengthPos = segmentsLength.totalLength * perc;\n        var i = 0;\n        var len = lengths.length;\n        var accumulatedLength = 0;\n        var pt;\n\n        while (i < len) {\n          if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n            var initIndex = i;\n            var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n            var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n            pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n            break;\n          } else {\n            accumulatedLength += lengths[i].addedLength;\n          }\n\n          i += 1;\n        }\n\n        if (!pt) {\n          pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n        }\n\n        return pt;\n      },\n      vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n        // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n        if (perc == 1) {\n          // eslint-disable-line eqeqeq\n          perc = this.v.c;\n        } else if (perc == 0) {\n          // eslint-disable-line eqeqeq\n          perc = 0.999;\n        }\n\n        var pt1 = this.pointOnPath(perc, time);\n        var pt2 = this.pointOnPath(perc + 0.001, time);\n        var xLength = pt2[0] - pt1[0];\n        var yLength = pt2[1] - pt1[1];\n        var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n        if (magnitude === 0) {\n          return [0, 0];\n        }\n\n        var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n        return unitVector;\n      },\n      tangentOnPath: function tangentOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'tangent');\n      },\n      normalOnPath: function normalOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'normal');\n      },\n      setGroupProperty: expressionHelpers.setGroupProperty,\n      getValueAtTime: expressionHelpers.getStaticValueAtTime\n    };\n    extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n    extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n    KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n    KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n    var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n    ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n      var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n      prop.propertyIndex = data.ix;\n      prop.lock = false;\n\n      if (type === 3) {\n        expressionHelpers.searchExpressions(elem, data.pt, prop);\n      } else if (type === 4) {\n        expressionHelpers.searchExpressions(elem, data.ks, prop);\n      }\n\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n\n      return prop;\n    };\n  }\n\n  function initialize$1() {\n    addPropertyDecorator();\n  }\n\n  function addDecorator() {\n    function searchExpressions() {\n      if (this.data.d.x) {\n        this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n        this.addEffect(this.getExpressionValue.bind(this));\n        return true;\n      }\n\n      return null;\n    }\n\n    TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n      var newValue = this.calculateExpression(text);\n\n      if (currentValue.t !== newValue) {\n        var newData = {};\n        this.copyData(newData, currentValue);\n        newData.t = newValue.toString();\n        newData.__complete = false;\n        return newData;\n      }\n\n      return currentValue;\n    };\n\n    TextProperty.prototype.searchProperty = function () {\n      var isKeyframed = this.searchKeyframes();\n      var hasExpressions = this.searchExpressions();\n      this.kf = isKeyframed || hasExpressions;\n      return this.kf;\n    };\n\n    TextProperty.prototype.searchExpressions = searchExpressions;\n  }\n\n  function initialize() {\n    addDecorator();\n  }\n\n  function SVGComposableEffect() {}\n\n  SVGComposableEffect.prototype = {\n    createMergeNode: function createMergeNode(resultId, ins) {\n      var feMerge = createNS('feMerge');\n      feMerge.setAttribute('result', resultId);\n      var feMergeNode;\n      var i;\n\n      for (i = 0; i < ins.length; i += 1) {\n        feMergeNode = createNS('feMergeNode');\n        feMergeNode.setAttribute('in', ins[i]);\n        feMerge.appendChild(feMergeNode);\n        feMerge.appendChild(feMergeNode);\n      }\n\n      return feMerge;\n    }\n  };\n\n  var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n  function SVGTintFilter(filter, filterManager, elem, id, source) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n    this.linearFilter = feColorMatrix;\n    feColorMatrix.setAttribute('result', id + '_tint_1');\n    filter.appendChild(feColorMatrix);\n    feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id + '_tint_2');\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n    var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n    filter.appendChild(feMerge);\n  }\n\n  extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n  SVGTintFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var colorBlack = this.filterManager.effectElements[0].p.v;\n      var colorWhite = this.filterManager.effectElements[1].p.v;\n      var opacity = this.filterManager.effectElements[2].p.v / 100;\n      this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n      this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n    }\n  };\n\n  function SVGFillFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id);\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n  }\n\n  SVGFillFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color = this.filterManager.effectElements[2].p.v;\n      var opacity = this.filterManager.effectElements[6].p.v;\n      this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n    }\n  };\n\n  function SVGStrokeEffect(fil, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.elem = elem;\n    this.paths = [];\n  }\n\n  SVGStrokeEffect.prototype.initialize = function () {\n    var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n    var path;\n    var groupPath;\n    var i;\n    var len;\n\n    if (this.filterManager.effectElements[1].p.v === 1) {\n      len = this.elem.maskManager.masksProperties.length;\n      i = 0;\n    } else {\n      i = this.filterManager.effectElements[0].p.v - 1;\n      len = i + 1;\n    }\n\n    groupPath = createNS('g');\n    groupPath.setAttribute('fill', 'none');\n    groupPath.setAttribute('stroke-linecap', 'round');\n    groupPath.setAttribute('stroke-dashoffset', 1);\n\n    for (i; i < len; i += 1) {\n      path = createNS('path');\n      groupPath.appendChild(path);\n      this.paths.push({\n        p: path,\n        m: i\n      });\n    }\n\n    if (this.filterManager.effectElements[10].p.v === 3) {\n      var mask = createNS('mask');\n      var id = createElementID();\n      mask.setAttribute('id', id);\n      mask.setAttribute('mask-type', 'alpha');\n      mask.appendChild(groupPath);\n      this.elem.globalData.defs.appendChild(mask);\n      var g = createNS('g');\n      g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n      while (elemChildren[0]) {\n        g.appendChild(elemChildren[0]);\n      }\n\n      this.elem.layerElement.appendChild(g);\n      this.masker = mask;\n      groupPath.setAttribute('stroke', '#fff');\n    } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (this.filterManager.effectElements[10].p.v === 2) {\n        elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n        while (elemChildren.length) {\n          this.elem.layerElement.removeChild(elemChildren[0]);\n        }\n      }\n\n      this.elem.layerElement.appendChild(groupPath);\n      this.elem.layerElement.removeAttribute('mask');\n      groupPath.setAttribute('stroke', '#fff');\n    }\n\n    this.initialized = true;\n    this.pathMasker = groupPath;\n  };\n\n  SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n    if (!this.initialized) {\n      this.initialize();\n    }\n\n    var i;\n    var len = this.paths.length;\n    var mask;\n    var path;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.paths[i].m !== -1) {\n        mask = this.elem.maskManager.viewData[this.paths[i].m];\n        path = this.paths[i].p;\n\n        if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n          path.setAttribute('d', mask.lastPath);\n        }\n\n        if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n          var dasharrayValue;\n\n          if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n            var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var l = path.getTotalLength();\n            dasharrayValue = '0 0 0 ' + l * s + ' ';\n            var lineLength = l * (e - s);\n            var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n            var units = Math.floor(lineLength / segment);\n            var j;\n\n            for (j = 0; j < units; j += 1) {\n              dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n            }\n\n            dasharrayValue += '0 ' + l * 10 + ' 0 0';\n          } else {\n            dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n          }\n\n          path.setAttribute('stroke-dasharray', dasharrayValue);\n        }\n      }\n    }\n\n    if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n      this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n    }\n\n    if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n      this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n    }\n\n    if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n        var color = this.filterManager.effectElements[3].p.v;\n        this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n      }\n    }\n  };\n\n  function SVGTritoneFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n    filter.appendChild(feColorMatrix);\n    var feComponentTransfer = createNS('feComponentTransfer');\n    feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n    feComponentTransfer.setAttribute('result', id);\n    this.matrixFilter = feComponentTransfer;\n    var feFuncR = createNS('feFuncR');\n    feFuncR.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncR);\n    this.feFuncR = feFuncR;\n    var feFuncG = createNS('feFuncG');\n    feFuncG.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncG);\n    this.feFuncG = feFuncG;\n    var feFuncB = createNS('feFuncB');\n    feFuncB.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncB);\n    this.feFuncB = feFuncB;\n    filter.appendChild(feComponentTransfer);\n  }\n\n  SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color1 = this.filterManager.effectElements[0].p.v;\n      var color2 = this.filterManager.effectElements[1].p.v;\n      var color3 = this.filterManager.effectElements[2].p.v;\n      var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n      var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n      var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n      this.feFuncR.setAttribute('tableValues', tableR);\n      this.feFuncG.setAttribute('tableValues', tableG);\n      this.feFuncB.setAttribute('tableValues', tableB);\n    }\n  };\n\n  function SVGProLevelsFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var effectElements = this.filterManager.effectElements;\n    var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n    if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n      this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n    } // Green\n\n\n    if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n      this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n    } // Blue\n\n\n    if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n      this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n    } // Alpha\n\n\n    if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n      this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n    } // RGB\n\n\n    if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      filter.appendChild(feComponentTransfer);\n    }\n\n    if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n      feComponentTransfer = createNS('feComponentTransfer');\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      feComponentTransfer.setAttribute('result', id);\n      filter.appendChild(feComponentTransfer);\n      this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n      this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n      this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n    }\n  }\n\n  SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n    var feFunc = createNS(type);\n    feFunc.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFunc);\n    return feFunc;\n  };\n\n  SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n    var cnt = 0;\n    var segments = 256;\n    var perc;\n    var min = Math.min(inputBlack, inputWhite);\n    var max = Math.max(inputBlack, inputWhite);\n    var table = Array.call(null, {\n      length: segments\n    });\n    var colorValue;\n    var pos = 0;\n    var outputDelta = outputWhite - outputBlack;\n    var inputDelta = inputWhite - inputBlack;\n\n    while (cnt <= 256) {\n      perc = cnt / 256;\n\n      if (perc <= min) {\n        colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n      } else if (perc >= max) {\n        colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n      } else {\n        colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n      }\n\n      table[pos] = colorValue;\n      pos += 1;\n      cnt += 256 / (segments - 1);\n    }\n\n    return table.join(' ');\n  };\n\n  SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var val;\n      var effectElements = this.filterManager.effectElements;\n\n      if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n        val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n        this.feFuncRComposed.setAttribute('tableValues', val);\n        this.feFuncGComposed.setAttribute('tableValues', val);\n        this.feFuncBComposed.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n        val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n        this.feFuncR.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n        val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n        this.feFuncG.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n        val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n        this.feFuncB.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n        val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n        this.feFuncA.setAttribute('tableValues', val);\n      }\n    }\n  };\n\n  function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n    var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n    var filterSize = filterManager.data.fs || globalFilterSize;\n    filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n    filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n    filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n    filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('in', 'SourceAlpha');\n    feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n    feGaussianBlur.setAttribute('stdDeviation', '0');\n    this.feGaussianBlur = feGaussianBlur;\n    filter.appendChild(feGaussianBlur);\n    var feOffset = createNS('feOffset');\n    feOffset.setAttribute('dx', '25');\n    feOffset.setAttribute('dy', '0');\n    feOffset.setAttribute('in', id + '_drop_shadow_1');\n    feOffset.setAttribute('result', id + '_drop_shadow_2');\n    this.feOffset = feOffset;\n    filter.appendChild(feOffset);\n    var feFlood = createNS('feFlood');\n    feFlood.setAttribute('flood-color', '#00ff00');\n    feFlood.setAttribute('flood-opacity', '1');\n    feFlood.setAttribute('result', id + '_drop_shadow_3');\n    this.feFlood = feFlood;\n    filter.appendChild(feFlood);\n    var feComposite = createNS('feComposite');\n    feComposite.setAttribute('in', id + '_drop_shadow_3');\n    feComposite.setAttribute('in2', id + '_drop_shadow_2');\n    feComposite.setAttribute('operator', 'in');\n    feComposite.setAttribute('result', id + '_drop_shadow_4');\n    filter.appendChild(feComposite);\n    var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n    filter.appendChild(feMerge); //\n  }\n\n  extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n  SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n        this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n      }\n\n      if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n        var col = this.filterManager.effectElements[0].p.v;\n        this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n      }\n\n      if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n        this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n      }\n\n      if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n        var distance = this.filterManager.effectElements[3].p.v;\n        var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n        var x = distance * Math.cos(angle);\n        var y = distance * Math.sin(angle);\n        this.feOffset.setAttribute('dx', x);\n        this.feOffset.setAttribute('dy', y);\n      }\n    }\n  };\n\n  var _svgMatteSymbols = [];\n\n  function SVGMatte3Effect(filterElem, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.filterElem = filterElem;\n    this.elem = elem;\n    elem.matteElement = createNS('g');\n    elem.matteElement.appendChild(elem.layerElement);\n    elem.matteElement.appendChild(elem.transformedElement);\n    elem.baseElement = elem.matteElement;\n  }\n\n  SVGMatte3Effect.prototype.findSymbol = function (mask) {\n    var i = 0;\n    var len = _svgMatteSymbols.length;\n\n    while (i < len) {\n      if (_svgMatteSymbols[i] === mask) {\n        return _svgMatteSymbols[i];\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n    var parentNode = mask.layerElement.parentNode;\n\n    if (!parentNode) {\n      return;\n    }\n\n    var children = parentNode.children;\n    var i = 0;\n    var len = children.length;\n\n    while (i < len) {\n      if (children[i] === mask.layerElement) {\n        break;\n      }\n\n      i += 1;\n    }\n\n    var nextChild;\n\n    if (i <= len - 2) {\n      nextChild = children[i + 1];\n    }\n\n    var useElem = createNS('use');\n    useElem.setAttribute('href', '#' + symbolId);\n\n    if (nextChild) {\n      parentNode.insertBefore(useElem, nextChild);\n    } else {\n      parentNode.appendChild(useElem);\n    }\n  };\n\n  SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n    if (!this.findSymbol(mask)) {\n      var symbolId = createElementID();\n      var masker = createNS('mask');\n      masker.setAttribute('id', mask.layerId);\n      masker.setAttribute('mask-type', 'alpha');\n\n      _svgMatteSymbols.push(mask);\n\n      var defs = elem.globalData.defs;\n      defs.appendChild(masker);\n      var symbol = createNS('symbol');\n      symbol.setAttribute('id', symbolId);\n      this.replaceInParent(mask, symbolId);\n      symbol.appendChild(mask.layerElement);\n      defs.appendChild(symbol);\n      var useElem = createNS('use');\n      useElem.setAttribute('href', '#' + symbolId);\n      masker.appendChild(useElem);\n      mask.data.hd = false;\n      mask.show();\n    }\n\n    elem.setMatte(mask.layerId);\n  };\n\n  SVGMatte3Effect.prototype.initialize = function () {\n    var ind = this.filterManager.effectElements[0].p.v;\n    var elements = this.elem.comp.elements;\n    var i = 0;\n    var len = elements.length;\n\n    while (i < len) {\n      if (elements[i] && elements[i].data.ind === ind) {\n        this.setElementAsMask(this.elem, elements[i]);\n      }\n\n      i += 1;\n    }\n\n    this.initialized = true;\n  };\n\n  SVGMatte3Effect.prototype.renderFrame = function () {\n    if (!this.initialized) {\n      this.initialize();\n    }\n  };\n\n  function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n    // Outset the filter region by 100% on all sides to accommodate blur expansion.\n    filter.setAttribute('x', '-100%');\n    filter.setAttribute('y', '-100%');\n    filter.setAttribute('width', '300%');\n    filter.setAttribute('height', '300%');\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('result', id);\n    filter.appendChild(feGaussianBlur);\n    this.feGaussianBlur = feGaussianBlur;\n  }\n\n  SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      // Empirical value, matching AE's blur appearance.\n      var kBlurrinessToSigma = 0.3;\n      var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n      //\n      //   1 -> horizontal & vertical\n      //   2 -> horizontal only\n      //   3 -> vertical only\n      //\n\n      var dimensions = this.filterManager.effectElements[1].p.v;\n      var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n      var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n      this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n      //\n      //   0 -> off -> duplicate\n      //   1 -> on  -> wrap\n\n      var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n      this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n    }\n  };\n\n  function TransformEffect() {}\n\n  TransformEffect.prototype.init = function (effectsManager) {\n    this.effectsManager = effectsManager;\n    this.type = effectTypes.TRANSFORM_EFFECT;\n    this.matrix = new Matrix();\n    this.opacity = -1;\n    this._mdf = false;\n    this._opMdf = false;\n  };\n\n  TransformEffect.prototype.renderFrame = function (forceFrame) {\n    this._opMdf = false;\n    this._mdf = false;\n\n    if (forceFrame || this.effectsManager._mdf) {\n      var effectElements = this.effectsManager.effectElements;\n      var anchor = effectElements[0].p.v;\n      var position = effectElements[1].p.v;\n      var isUniformScale = effectElements[2].p.v === 1;\n      var scaleHeight = effectElements[3].p.v;\n      var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n      var skew = effectElements[5].p.v;\n      var skewAxis = effectElements[6].p.v;\n      var rotation = effectElements[7].p.v;\n      this.matrix.reset();\n      this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n      this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n      this.matrix.rotate(-rotation * degToRads);\n      this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n      this.matrix.translate(position[0], position[1], 0);\n      this._mdf = true;\n\n      if (this.opacity !== effectElements[8].p.v) {\n        this.opacity = effectElements[8].p.v;\n        this._opMdf = true;\n      }\n    }\n  };\n\n  function SVGTransformEffect(_, filterManager) {\n    this.init(filterManager);\n  }\n\n  extendPrototype([TransformEffect], SVGTransformEffect);\n\n  function CVTransformEffect(effectsManager) {\n    this.init(effectsManager);\n  }\n\n  extendPrototype([TransformEffect], CVTransformEffect);\n\n  registerRenderer('canvas', CanvasRenderer);\n  registerRenderer('html', HybridRenderer);\n  registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n  ShapeModifiers.registerModifier('tm', TrimModifier);\n  ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n  ShapeModifiers.registerModifier('rp', RepeaterModifier);\n  ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n  ShapeModifiers.registerModifier('zz', ZigZagModifier);\n  ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n  setExpressionsPlugin(Expressions);\n  setExpressionInterfaces(getInterface);\n  initialize$1();\n  initialize(); // Registering svg effects\n\n  registerEffect$1(20, SVGTintFilter, true);\n  registerEffect$1(21, SVGFillFilter, true);\n  registerEffect$1(22, SVGStrokeEffect, false);\n  registerEffect$1(23, SVGTritoneFilter, true);\n  registerEffect$1(24, SVGProLevelsFilter, true);\n  registerEffect$1(25, SVGDropShadowEffect, true);\n  registerEffect$1(28, SVGMatte3Effect, false);\n  registerEffect$1(29, SVGGaussianBlurEffect, true);\n  registerEffect$1(35, SVGTransformEffect, false);\n  registerEffect(35, CVTransformEffect);\n\n  return lottie;\n\n}));\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import{G as GESTURE_CONTROLLER}from\"./gesture-controller-31cb6bb9.js\";export{G as GESTURE_CONTROLLER}from\"./gesture-controller-31cb6bb9.js\";var addEventListener=function(e,r,t,a){var n=supportsPassive(e)?{capture:!!a.capture,passive:!!a.passive}:!!a.capture;var i;var u;if(e[\"__zone_symbol__addEventListener\"]){i=\"__zone_symbol__addEventListener\";u=\"__zone_symbol__removeEventListener\"}else{i=\"addEventListener\";u=\"removeEventListener\"}e[i](r,t,n);return function(){e[u](r,t,n)}};var supportsPassive=function(e){if(_sPassive===undefined){try{var r=Object.defineProperty({},\"passive\",{get:function(){_sPassive=true}});e.addEventListener(\"optsTest\",(function(){return}),r)}catch(t){_sPassive=false}}return!!_sPassive};var _sPassive;var MOUSE_WAIT=2e3;var createPointerEvents=function(e,r,t,a,n){var i;var u;var s;var v;var f;var o;var c;var l=0;var d=function(a){l=Date.now()+MOUSE_WAIT;if(!r(a)){return}if(!u&&t){u=addEventListener(e,\"touchmove\",t,n)}if(!s){s=addEventListener(a.target,\"touchend\",p,n)}if(!v){v=addEventListener(a.target,\"touchcancel\",p,n)}};var m=function(a){if(l>Date.now()){return}if(!r(a)){return}if(!o&&t){o=addEventListener(getDocument(e),\"mousemove\",t,n)}if(!c){c=addEventListener(getDocument(e),\"mouseup\",E,n)}};var p=function(e){_();if(a){a(e)}};var E=function(e){g();if(a){a(e)}};var _=function(){if(u){u()}if(s){s()}if(v){v()}u=s=v=undefined};var g=function(){if(o){o()}if(c){c()}o=c=undefined};var y=function(){_();g()};var X=function(r){if(r===void 0){r=true}if(!r){if(i){i()}if(f){f()}i=f=undefined;y()}else{if(!i){i=addEventListener(e,\"touchstart\",d,n)}if(!f){f=addEventListener(e,\"mousedown\",m,n)}}};var Y=function(){X(false);a=t=r=undefined};return{enable:X,stop:y,destroy:Y}};var getDocument=function(e){return e instanceof Document?e:e.ownerDocument};var createPanRecognizer=function(e,r,t){var a=t*(Math.PI/180);var n=e===\"x\";var i=Math.cos(a);var u=r*r;var s=0;var v=0;var f=false;var o=0;return{start:function(e,r){s=e;v=r;o=0;f=true},detect:function(e,r){if(!f){return false}var t=e-s;var a=r-v;var c=t*t+a*a;if(c<u){return false}var l=Math.sqrt(c);var d=(n?t:a)/l;if(d>i){o=1}else if(d<-i){o=-1}else{o=0}f=false;return true},isGesture:function(){return o!==0},getDirection:function(){return o}}};var createGesture=function(e){var r=false;var t=false;var a=true;var n=false;var i=Object.assign({disableScroll:false,direction:\"x\",gesturePriority:0,passive:true,maxAngle:40,threshold:10},e);var u=i.canStart;var s=i.onWillStart;var v=i.onStart;var f=i.onEnd;var o=i.notCaptured;var c=i.onMove;var l=i.threshold;var d=i.passive;var m=i.blurOnStart;var p={type:\"pan\",startX:0,startY:0,startTime:0,currentX:0,currentY:0,velocityX:0,velocityY:0,deltaX:0,deltaY:0,currentTime:0,event:undefined,data:undefined};var E=createPanRecognizer(i.direction,i.threshold,i.maxAngle);var _=GESTURE_CONTROLLER.createGesture({name:e.gestureName,priority:e.gesturePriority,disableScroll:e.disableScroll});var g=function(e){var r=now(e);if(t||!a){return false}updateDetail(e,p);p.startX=p.currentX;p.startY=p.currentY;p.startTime=p.currentTime=r;p.velocityX=p.velocityY=p.deltaX=p.deltaY=0;p.event=e;if(u&&u(p)===false){return false}_.release();if(!_.start()){return false}t=true;if(l===0){return Y()}E.start(p.startX,p.startY);return true};var y=function(e){if(r){if(!n&&a){n=true;calcGestureData(p,e);requestAnimationFrame(X)}return}calcGestureData(p,e);if(E.detect(p.currentX,p.currentY)){if(!E.isGesture()||!Y()){P()}}};var X=function(){if(!r){return}n=false;if(c){c(p)}};var Y=function(){if(_&&!_.capture()){return false}r=true;a=false;p.startX=p.currentX;p.startY=p.currentY;p.startTime=p.currentTime;if(s){s(p).then(L)}else{L()}return true};var b=function(){if(typeof document!==\"undefined\"){var e=document.activeElement;if(e!==null&&e.blur){e.blur()}}};var L=function(){if(m){b()}if(v){v(p)}a=true};var h=function(){r=false;t=false;n=false;a=true;_.release()};var T=function(e){var t=r;var n=a;h();if(!n){return}calcGestureData(p,e);if(t){if(f){f(p)}return}if(o){o(p)}};var D=createPointerEvents(i.el,g,y,T,{capture:false,passive:d});var P=function(){h();D.stop();if(o){o(p)}};return{enable:function(e){if(e===void 0){e=true}if(!e){if(r){T(undefined)}h()}D.enable(e)},destroy:function(){_.destroy();D.destroy()}}};var calcGestureData=function(e,r){if(!r){return}var t=e.currentX;var a=e.currentY;var n=e.currentTime;updateDetail(r,e);var i=e.currentX;var u=e.currentY;var s=e.currentTime=now(r);var v=s-n;if(v>0&&v<100){var f=(i-t)/v;var o=(u-a)/v;e.velocityX=f*.7+e.velocityX*.3;e.velocityY=o*.7+e.velocityY*.3}e.deltaX=i-e.startX;e.deltaY=u-e.startY;e.event=r};var updateDetail=function(e,r){var t=0;var a=0;if(e){var n=e.changedTouches;if(n&&n.length>0){var i=n[0];t=i.clientX;a=i.clientY}else if(e.pageX!==undefined){t=e.pageX;a=e.pageY}}r.currentX=t;r.currentY=a};var now=function(e){return e.timeStamp||Date.now()};export{createGesture};","var getTimeGivenProgression=function(t,r,a,e,o){return solveCubicBezier(t[1],r[1],a[1],e[1],o).map((function(o){return solveCubicParametricEquation(t[0],r[0],a[0],e[0],o)}))};var solveCubicParametricEquation=function(t,r,a,e,o){var i=3*r*Math.pow(o-1,2);var n=-3*a*o+3*a+e*o;var u=t*Math.pow(o-1,3);return o*(i+o*n)-u};var solveCubicBezier=function(t,r,a,e,o){t-=o;r-=o;a-=o;e-=o;var i=solveCubicEquation(e-3*a+3*r-t,3*a-6*r+3*t,3*r-3*t,t);return i.filter((function(t){return t>=0&&t<=1}))};var solveQuadraticEquation=function(t,r,a){var e=r*r-4*t*a;if(e<0){return[]}else{return[(-r+Math.sqrt(e))/(2*t),(-r-Math.sqrt(e))/(2*t)]}};var solveCubicEquation=function(t,r,a,e){if(t===0){return solveQuadraticEquation(r,a,e)}r/=t;a/=t;e/=t;var o=(3*a-r*r)/3;var i=(2*r*r*r-9*r*a+27*e)/27;if(o===0){return[Math.pow(-i,1/3)]}else if(i===0){return[Math.sqrt(-o),-Math.sqrt(-o)]}var n=Math.pow(i/2,2)+Math.pow(o/3,3);if(n===0){return[Math.pow(i/2,1/2)-r/3]}else if(n>0){return[Math.pow(-(i/2)+Math.sqrt(n),1/3)-Math.pow(i/2+Math.sqrt(n),1/3)-r/3]}var u=Math.sqrt(Math.pow(-(o/3),3));var s=Math.acos(-(i/(2*Math.sqrt(Math.pow(-(o/3),3)))));var v=2*Math.pow(u,1/3);return[v*Math.cos(s/3)-r/3,v*Math.cos((s+2*Math.PI)/3)-r/3,v*Math.cos((s+4*Math.PI)/3)-r/3]};export{getTimeGivenProgression as g};","var sanitizeDOMString=function(e){try{if(e instanceof IonicSafeString){return e.value}if(!isSanitizerEnabled()||typeof e!==\"string\"||e===\"\"){return e}var r=document.createDocumentFragment();var n=document.createElement(\"div\");r.appendChild(n);n.innerHTML=e;blockedTags.forEach((function(e){var n=r.querySelectorAll(e);for(var t=n.length-1;t>=0;t--){var i=n[t];if(i.parentNode){i.parentNode.removeChild(i)}else{r.removeChild(i)}var a=getElementChildren(i);for(var l=0;l<a.length;l++){sanitizeElement(a[l])}}}));var t=getElementChildren(r);for(var i=0;i<t.length;i++){sanitizeElement(t[i])}var a=document.createElement(\"div\");a.appendChild(r);var l=a.querySelector(\"div\");return l!==null?l.innerHTML:a.innerHTML}catch(o){console.error(o);return\"\"}};var sanitizeElement=function(e){if(e.nodeType&&e.nodeType!==1){return}for(var r=e.attributes.length-1;r>=0;r--){var n=e.attributes.item(r);var t=n.name;if(!allowedAttributes.includes(t.toLowerCase())){e.removeAttribute(t);continue}var i=n.value;if(i!=null&&i.toLowerCase().includes(\"javascript:\")){e.removeAttribute(t)}}var a=getElementChildren(e);for(var r=0;r<a.length;r++){sanitizeElement(a[r])}};var getElementChildren=function(e){return e.children!=null?e.children:e.childNodes};var isSanitizerEnabled=function(){var e=window;var r=e&&e.Ionic&&e.Ionic.config;if(r){if(r.get){return r.get(\"sanitizerEnabled\",true)}else{return r.sanitizerEnabled===true||r.sanitizerEnabled===undefined}}return true};var allowedAttributes=[\"class\",\"id\",\"href\",\"src\",\"name\",\"slot\"];var blockedTags=[\"script\",\"style\",\"iframe\",\"meta\",\"link\",\"object\",\"embed\"];var IonicSafeString=function(){function e(e){this.value=e}return e}();export{IonicSafeString as I,sanitizeDOMString as s};","import{__awaiter,__generator}from\"tslib\";import{MENU_BACK_BUTTON_PRIORITY}from\"./hardware-back-button-4a6b37fb.js\";import{c as componentOnReady}from\"./helpers-1457892a.js\";import{b as getIonMode}from\"./ionic-global-63a97a32.js\";import{c as createAnimation}from\"./animation-822d986b.js\";var baseAnimation=function(n){return createAnimation().duration(n?400:300)};var menuOverlayAnimation=function(n){var e;var r;var t=n.width+8;var i=createAnimation();var a=createAnimation();if(n.isEndSide){e=t+\"px\";r=\"0px\"}else{e=-t+\"px\";r=\"0px\"}i.addElement(n.menuInnerEl).fromTo(\"transform\",\"translateX(\"+e+\")\",\"translateX(\"+r+\")\");var o=getIonMode(n);var u=o===\"ios\";var s=u?.2:.25;a.addElement(n.backdropEl).fromTo(\"opacity\",.01,s);return baseAnimation(u).addAnimation([i,a])};var menuPushAnimation=function(n){var e;var r;var t=getIonMode(n);var i=n.width;if(n.isEndSide){e=-i+\"px\";r=i+\"px\"}else{e=i+\"px\";r=-i+\"px\"}var a=createAnimation().addElement(n.menuInnerEl).fromTo(\"transform\",\"translateX(\"+r+\")\",\"translateX(0px)\");var o=createAnimation().addElement(n.contentEl).fromTo(\"transform\",\"translateX(0px)\",\"translateX(\"+e+\")\");var u=createAnimation().addElement(n.backdropEl).fromTo(\"opacity\",.01,.32);return baseAnimation(t===\"ios\").addAnimation([a,o,u])};var menuRevealAnimation=function(n){var e=getIonMode(n);var r=n.width*(n.isEndSide?-1:1)+\"px\";var t=createAnimation().addElement(n.contentEl).fromTo(\"transform\",\"translateX(0px)\",\"translateX(\"+r+\")\");return baseAnimation(e===\"ios\").addAnimation(t)};var createMenuController=function(){var n=new Map;var e=[];var r=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:return[4,c(n)];case 1:e=r.sent();if(e){return[2,e.open()]}return[2,false]}}))}))};var t=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:return[4,n!==undefined?c(n):f()];case 1:e=r.sent();if(e!==undefined){return[2,e.close()]}return[2,false]}}))}))};var i=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:return[4,c(n)];case 1:e=r.sent();if(e){return[2,e.toggle()]}return[2,false]}}))}))};var a=function(n,e){return __awaiter(void 0,void 0,void 0,(function(){var r;return __generator(this,(function(t){switch(t.label){case 0:return[4,c(e)];case 1:r=t.sent();if(r){r.disabled=!n}return[2,r]}}))}))};var o=function(n,e){return __awaiter(void 0,void 0,void 0,(function(){var r;return __generator(this,(function(t){switch(t.label){case 0:return[4,c(e)];case 1:r=t.sent();if(r){r.swipeGesture=n}return[2,r]}}))}))};var u=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e,e;return __generator(this,(function(r){switch(r.label){case 0:if(!(n!=null))return[3,2];return[4,c(n)];case 1:e=r.sent();return[2,e!==undefined&&e.isOpen()];case 2:return[4,f()];case 3:e=r.sent();return[2,e!==undefined]}}))}))};var s=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:return[4,c(n)];case 1:e=r.sent();if(e){return[2,!e.disabled]}return[2,false]}}))}))};var c=function(n){return __awaiter(void 0,void 0,void 0,(function(){var r,t;return __generator(this,(function(i){switch(i.label){case 0:return[4,O()];case 1:i.sent();if(n===\"start\"||n===\"end\"){r=E((function(e){return e.side===n&&!e.disabled}));if(r){return[2,r]}return[2,E((function(e){return e.side===n}))]}else if(n!=null){return[2,E((function(e){return e.menuId===n}))]}t=E((function(n){return!n.disabled}));if(t){return[2,t]}return[2,e.length>0?e[0].el:undefined]}}))}))};var f=function(){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return[4,O()];case 1:n.sent();return[2,g()]}}))}))};var d=function(){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return[4,O()];case 1:n.sent();return[2,w()]}}))}))};var v=function(){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return[4,O()];case 1:n.sent();return[2,A()]}}))}))};var l=function(e,r){n.set(e,r)};var m=function(n){if(e.indexOf(n)<0){if(!n.disabled){p(n)}e.push(n)}};var _=function(n){var r=e.indexOf(n);if(r>-1){e.splice(r,1)}};var p=function(n){var r=n.side;e.filter((function(e){return e.side===r&&e!==n})).forEach((function(n){return n.disabled=true}))};var h=function(n,e,r){return __awaiter(void 0,void 0,void 0,(function(){var t;return __generator(this,(function(i){switch(i.label){case 0:if(A()){return[2,false]}if(!e)return[3,3];return[4,f()];case 1:t=i.sent();if(!(t&&n.el!==t))return[3,3];return[4,t.setOpen(false,false)];case 2:i.sent();i.label=3;case 3:return[2,n._setOpen(e,r)]}}))}))};var b=function(e,r){var t=n.get(e);if(!t){throw new Error(\"animation not registered\")}var i=t(r);return i};var g=function(){return E((function(n){return n._isOpen}))};var w=function(){return e.map((function(n){return n.el}))};var A=function(){return e.some((function(n){return n.isAnimating}))};var E=function(n){var r=e.find(n);if(r!==undefined){return r.el}return undefined};var O=function(){return Promise.all(Array.from(document.querySelectorAll(\"ion-menu\")).map((function(n){return new Promise((function(e){return componentOnReady(n,e)}))})))};l(\"reveal\",menuRevealAnimation);l(\"push\",menuPushAnimation);l(\"overlay\",menuOverlayAnimation);if(typeof document!==\"undefined\"){document.addEventListener(\"ionBackButton\",(function(n){var e=g();if(e){n.detail.register(MENU_BACK_BUTTON_PRIORITY,(function(){return e.close()}))}}))}return{registerAnimation:l,get:c,getMenus:d,getOpen:f,isEnabled:s,swipeGesture:o,isAnimating:v,isOpen:u,enable:a,toggle:i,close:t,open:r,_getOpenSync:g,_createAnimation:b,_register:m,_unregister:_,_setOpen:h,_setActiveMenu:p}};var menuController=createMenuController();export{menuController as m};","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n\n  error.request = request;\n  error.response = response;\n  error.isAxiosError = true;\n\n  error.toJSON = function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code\n    };\n  };\n  return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n    var responseType = config.responseType;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?\n        request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(createError(\n        timeoutErrorMessage,\n        config,\n        config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  var valueFromConfig2Keys = ['url', 'method', 'data'];\n  var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n  var defaultToConfig2Keys = [\n    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n    'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n    'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n    'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n  ];\n  var directMergeKeys = ['validateStatus'];\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    }\n  });\n\n  utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n  utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  utils.forEach(directMergeKeys, function merge(prop) {\n    if (prop in config2) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  var axiosKeys = valueFromConfig2Keys\n    .concat(mergeDeepPropertiesKeys)\n    .concat(defaultToConfig2Keys)\n    .concat(directMergeKeys);\n\n  var otherKeys = Object\n    .keys(config1)\n    .concat(Object.keys(config2))\n    .filter(function filterAxiosKeys(key) {\n      return axiosKeys.indexOf(key) === -1;\n    });\n\n  utils.forEach(otherKeys, mergeDeepProperties);\n\n  return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","var jws = require('jws');\n\nmodule.exports = function (jwt, options) {\n  options = options || {};\n  var decoded = jws.decode(jwt, options);\n  if (!decoded) { return null; }\n  var payload = decoded.payload;\n\n  //try parse the payload\n  if(typeof payload === 'string') {\n    try {\n      var obj = JSON.parse(payload);\n      if(obj !== null && typeof obj === 'object') {\n        payload = obj;\n      }\n    } catch (e) { }\n  }\n\n  //return header if `complete` option is enabled.  header includes claims\n  //such as `kid` and `alg` used to select the key within a JWKS needed to\n  //verify the signature\n  if (options.complete === true) {\n    return {\n      header: decoded.header,\n      payload: payload,\n      signature: decoded.signature\n    };\n  }\n  return payload;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n  this.buffer = null;\n  this.writable = true;\n  this.readable = true;\n\n  // No input\n  if (!data) {\n    this.buffer = Buffer.alloc(0);\n    return this;\n  }\n\n  // Stream\n  if (typeof data.pipe === 'function') {\n    this.buffer = Buffer.alloc(0);\n    data.pipe(this);\n    return this;\n  }\n\n  // Buffer or String\n  // or Object (assumedly a passworded key)\n  if (data.length || typeof data === 'object') {\n    this.buffer = data;\n    this.writable = false;\n    process.nextTick(function () {\n      this.emit('end', data);\n      this.readable = false;\n      this.emit('close');\n    }.bind(this));\n    return this;\n  }\n\n  throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n  this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n  this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n  if (data)\n    this.write(data);\n  this.emit('end', data);\n  this.emit('close');\n  this.writable = false;\n  this.readable = false;\n};\n\nmodule.exports = DataStream;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var readableHwm = options.readableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    pna.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, { hasUnpiped: false });\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        pna.nextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    pna.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._readableState.highWaterMark;\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    pna.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        pna.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        pna.nextTick(emitErrorNT, this, err);\n      }\n    }\n\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        pna.nextTick(emitErrorNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        pna.nextTick(emitErrorNT, _this, err);\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n\n  return this;\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return this.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n\n  cb(er);\n\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function') {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this2 = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this2.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}","var bufferEqual = require('buffer-equal-constant-time');\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n  Supported algorithms are:\\n  \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n  MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n  MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n  if (Buffer.isBuffer(key)) {\n    return;\n  }\n\n  if (typeof key === 'string') {\n    return;\n  }\n\n  if (!supportsKeyObjects) {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key !== 'object') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key.type !== 'string') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key.asymmetricKeyType !== 'string') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key.export !== 'function') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n};\n\nfunction checkIsPrivateKey(key) {\n  if (Buffer.isBuffer(key)) {\n    return;\n  }\n\n  if (typeof key === 'string') {\n    return;\n  }\n\n  if (typeof key === 'object') {\n    return;\n  }\n\n  throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n  if (Buffer.isBuffer(key)) {\n    return;\n  }\n\n  if (typeof key === 'string') {\n    return key;\n  }\n\n  if (!supportsKeyObjects) {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n\n  if (typeof key !== 'object') {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n\n  if (key.type !== 'secret') {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n\n  if (typeof key.export !== 'function') {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n}\n\nfunction fromBase64(base64) {\n  return base64\n    .replace(/=/g, '')\n    .replace(/\\+/g, '-')\n    .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n  base64url = base64url.toString();\n\n  var padding = 4 - base64url.length % 4;\n  if (padding !== 4) {\n    for (var i = 0; i < padding; ++i) {\n      base64url += '=';\n    }\n  }\n\n  return base64url\n    .replace(/\\-/g, '+')\n    .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n  var args = [].slice.call(arguments, 1);\n  var errMsg = util.format.bind(util, template).apply(null, args);\n  return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n  return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n  if (!bufferOrString(thing))\n    thing = JSON.stringify(thing);\n  return thing;\n}\n\nfunction createHmacSigner(bits) {\n  return function sign(thing, secret) {\n    checkIsSecretKey(secret);\n    thing = normalizeInput(thing);\n    var hmac = crypto.createHmac('sha' + bits, secret);\n    var sig = (hmac.update(thing), hmac.digest('base64'))\n    return fromBase64(sig);\n  }\n}\n\nfunction createHmacVerifier(bits) {\n  return function verify(thing, signature, secret) {\n    var computedSig = createHmacSigner(bits)(thing, secret);\n    return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n  }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n    checkIsPrivateKey(privateKey);\n    thing = normalizeInput(thing);\n    // Even though we are specifying \"RSA\" here, this works with ECDSA\n    // keys as well.\n    var signer = crypto.createSign('RSA-SHA' + bits);\n    var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n    return fromBase64(sig);\n  }\n}\n\nfunction createKeyVerifier(bits) {\n  return function verify(thing, signature, publicKey) {\n    checkIsPublicKey(publicKey);\n    thing = normalizeInput(thing);\n    signature = toBase64(signature);\n    var verifier = crypto.createVerify('RSA-SHA' + bits);\n    verifier.update(thing);\n    return verifier.verify(publicKey, signature, 'base64');\n  }\n}\n\nfunction createPSSKeySigner(bits) {\n  return function sign(thing, privateKey) {\n    checkIsPrivateKey(privateKey);\n    thing = normalizeInput(thing);\n    var signer = crypto.createSign('RSA-SHA' + bits);\n    var sig = (signer.update(thing), signer.sign({\n      key: privateKey,\n      padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n      saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n    }, 'base64'));\n    return fromBase64(sig);\n  }\n}\n\nfunction createPSSKeyVerifier(bits) {\n  return function verify(thing, signature, publicKey) {\n    checkIsPublicKey(publicKey);\n    thing = normalizeInput(thing);\n    signature = toBase64(signature);\n    var verifier = crypto.createVerify('RSA-SHA' + bits);\n    verifier.update(thing);\n    return verifier.verify({\n      key: publicKey,\n      padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n      saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n    }, signature, 'base64');\n  }\n}\n\nfunction createECDSASigner(bits) {\n  var inner = createKeySigner(bits);\n  return function sign() {\n    var signature = inner.apply(null, arguments);\n    signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n    return signature;\n  };\n}\n\nfunction createECDSAVerifer(bits) {\n  var inner = createKeyVerifier(bits);\n  return function verify(thing, signature, publicKey) {\n    signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n    var result = inner(thing, signature, publicKey);\n    return result;\n  };\n}\n\nfunction createNoneSigner() {\n  return function sign() {\n    return '';\n  }\n}\n\nfunction createNoneVerifier() {\n  return function verify(thing, signature) {\n    return signature === '';\n  }\n}\n\nmodule.exports = function jwa(algorithm) {\n  var signerFactories = {\n    hs: createHmacSigner,\n    rs: createKeySigner,\n    ps: createPSSKeySigner,\n    es: createECDSASigner,\n    none: createNoneSigner,\n  }\n  var verifierFactories = {\n    hs: createHmacVerifier,\n    rs: createKeyVerifier,\n    ps: createPSSKeyVerifier,\n    es: createECDSAVerifer,\n    none: createNoneVerifier,\n  }\n  var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n  if (!match)\n    throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n  var algo = (match[1] || match[3]).toLowerCase();\n  var bits = match[2];\n\n  return {\n    sign: signerFactories[algo](bits),\n    verify: verifierFactories[algo](bits),\n  }\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n  if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n    throw new TypeError(prefix + ' must be a string or a buffer')\n  }\n}\n\nfunction HashBase (blockSize) {\n  Transform.call(this)\n\n  this._block = Buffer.allocUnsafe(blockSize)\n  this._blockSize = blockSize\n  this._blockOffset = 0\n  this._length = [0, 0, 0, 0]\n\n  this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n  var error = null\n  try {\n    this.update(chunk, encoding)\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n  var error = null\n  try {\n    this.push(this.digest())\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n  throwIfNotStringOrBuffer(data, 'Data')\n  if (this._finalized) throw new Error('Digest already called')\n  if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n  // consume data\n  var block = this._block\n  var offset = 0\n  while (this._blockOffset + data.length - offset >= this._blockSize) {\n    for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n    this._update()\n    this._blockOffset = 0\n  }\n  while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n  // update length\n  for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n    this._length[j] += carry\n    carry = (this._length[j] / 0x0100000000) | 0\n    if (carry > 0) this._length[j] -= 0x0100000000 * carry\n  }\n\n  return this\n}\n\nHashBase.prototype._update = function () {\n  throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n  if (this._finalized) throw new Error('Digest already called')\n  this._finalized = true\n\n  var digest = this._digest()\n  if (encoding !== undefined) digest = digest.toString(encoding)\n\n  // reset state\n  this._block.fill(0)\n  this._blockOffset = 0\n  for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n  return digest\n}\n\nHashBase.prototype._digest = function () {\n  throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n  0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n  0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n  0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n  0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n  0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n  0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n  0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n  0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n  0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n  0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n  0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n  0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n  0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n  0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n  0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n  this._a = 0x6a09e667\n  this._b = 0xbb67ae85\n  this._c = 0x3c6ef372\n  this._d = 0xa54ff53a\n  this._e = 0x510e527f\n  this._f = 0x9b05688c\n  this._g = 0x1f83d9ab\n  this._h = 0x5be0cd19\n\n  return this\n}\n\nfunction ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n  return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n  return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n  return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n  return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n  var f = this._f | 0\n  var g = this._g | 0\n  var h = this._h | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n  for (var j = 0; j < 64; ++j) {\n    var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n    var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n    h = g\n    g = f\n    f = e\n    e = (d + T1) | 0\n    d = c\n    c = b\n    b = a\n    a = (T1 + T2) | 0\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n  this._f = (f + this._f) | 0\n  this._g = (g + this._g) | 0\n  this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(32)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n  H.writeInt32BE(this._h, 28)\n\n  return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n  this._ah = 0x6a09e667\n  this._bh = 0xbb67ae85\n  this._ch = 0x3c6ef372\n  this._dh = 0xa54ff53a\n  this._eh = 0x510e527f\n  this._fh = 0x9b05688c\n  this._gh = 0x1f83d9ab\n  this._hh = 0x5be0cd19\n\n  this._al = 0xf3bcc908\n  this._bl = 0x84caa73b\n  this._cl = 0xfe94f82b\n  this._dl = 0x5f1d36f1\n  this._el = 0xade682d1\n  this._fl = 0x2b3e6c1f\n  this._gl = 0xfb41bd6b\n  this._hl = 0x137e2179\n\n  return this\n}\n\nfunction Ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n  return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n  return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n  return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n  var W = this._w\n\n  var ah = this._ah | 0\n  var bh = this._bh | 0\n  var ch = this._ch | 0\n  var dh = this._dh | 0\n  var eh = this._eh | 0\n  var fh = this._fh | 0\n  var gh = this._gh | 0\n  var hh = this._hh | 0\n\n  var al = this._al | 0\n  var bl = this._bl | 0\n  var cl = this._cl | 0\n  var dl = this._dl | 0\n  var el = this._el | 0\n  var fl = this._fl | 0\n  var gl = this._gl | 0\n  var hl = this._hl | 0\n\n  for (var i = 0; i < 32; i += 2) {\n    W[i] = M.readInt32BE(i * 4)\n    W[i + 1] = M.readInt32BE(i * 4 + 4)\n  }\n  for (; i < 160; i += 2) {\n    var xh = W[i - 15 * 2]\n    var xl = W[i - 15 * 2 + 1]\n    var gamma0 = Gamma0(xh, xl)\n    var gamma0l = Gamma0l(xl, xh)\n\n    xh = W[i - 2 * 2]\n    xl = W[i - 2 * 2 + 1]\n    var gamma1 = Gamma1(xh, xl)\n    var gamma1l = Gamma1l(xl, xh)\n\n    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n    var Wi7h = W[i - 7 * 2]\n    var Wi7l = W[i - 7 * 2 + 1]\n\n    var Wi16h = W[i - 16 * 2]\n    var Wi16l = W[i - 16 * 2 + 1]\n\n    var Wil = (gamma0l + Wi7l) | 0\n    var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n    Wil = (Wil + gamma1l) | 0\n    Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n    Wil = (Wil + Wi16l) | 0\n    Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n    W[i] = Wih\n    W[i + 1] = Wil\n  }\n\n  for (var j = 0; j < 160; j += 2) {\n    Wih = W[j]\n    Wil = W[j + 1]\n\n    var majh = maj(ah, bh, ch)\n    var majl = maj(al, bl, cl)\n\n    var sigma0h = sigma0(ah, al)\n    var sigma0l = sigma0(al, ah)\n    var sigma1h = sigma1(eh, el)\n    var sigma1l = sigma1(el, eh)\n\n    // t1 = h + sigma1 + ch + K[j] + W[j]\n    var Kih = K[j]\n    var Kil = K[j + 1]\n\n    var chh = Ch(eh, fh, gh)\n    var chl = Ch(el, fl, gl)\n\n    var t1l = (hl + sigma1l) | 0\n    var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n    t1l = (t1l + chl) | 0\n    t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n    t1l = (t1l + Kil) | 0\n    t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n    t1l = (t1l + Wil) | 0\n    t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n    // t2 = sigma0 + maj\n    var t2l = (sigma0l + majl) | 0\n    var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n    hh = gh\n    hl = gl\n    gh = fh\n    gl = fl\n    fh = eh\n    fl = el\n    el = (dl + t1l) | 0\n    eh = (dh + t1h + getCarry(el, dl)) | 0\n    dh = ch\n    dl = cl\n    ch = bh\n    cl = bl\n    bh = ah\n    bl = al\n    al = (t1l + t2l) | 0\n    ah = (t1h + t2h + getCarry(al, t1l)) | 0\n  }\n\n  this._al = (this._al + al) | 0\n  this._bl = (this._bl + bl) | 0\n  this._cl = (this._cl + cl) | 0\n  this._dl = (this._dl + dl) | 0\n  this._el = (this._el + el) | 0\n  this._fl = (this._fl + fl) | 0\n  this._gl = (this._gl + gl) | 0\n  this._hl = (this._hl + hl) | 0\n\n  this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n  this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n  this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n  this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n  this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n  this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n  this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n  this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(64)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n  writeInt64BE(this._gh, this._gl, 48)\n  writeInt64BE(this._hh, this._hl, 56)\n\n  return H\n}\n\nmodule.exports = Sha512\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  this._alg = alg\n  this._key = key\n  if (key.length > blocksize) {\n    var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n    key = hash.update(key).digest()\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n  this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n  this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._hash.digest()\n  var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n  return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n  alg = alg.toLowerCase()\n  if (alg === 'rmd160' || alg === 'ripemd160') {\n    return new Hmac('rmd160', key)\n  }\n  if (alg === 'md5') {\n    return new Legacy(md5, key)\n  }\n  return new Hmac(alg, key)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n  return new MD5().update(buffer).digest()\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n  if (typeof iterations !== 'number') {\n    throw new TypeError('Iterations not a number')\n  }\n\n  if (iterations < 0) {\n    throw new TypeError('Bad iterations')\n  }\n\n  if (typeof keylen !== 'number') {\n    throw new TypeError('Key length not a number')\n  }\n\n  if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n    throw new TypeError('Bad key length')\n  }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n  defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n  var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n  defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n  defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n  md5: 16,\n  sha1: 20,\n  sha224: 28,\n  sha256: 32,\n  sha384: 48,\n  sha512: 64,\n  rmd160: 20,\n  ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n  var hash = getDigest(alg)\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  if (key.length > blocksize) {\n    key = hash(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n  ipad.copy(ipad1, 0, 0, blocksize)\n  this.ipad1 = ipad1\n  this.ipad2 = ipad\n  this.opad = opad\n  this.alg = alg\n  this.blocksize = blocksize\n  this.hash = hash\n  this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n  data.copy(ipad, this.blocksize)\n  var h = this.hash(ipad)\n  h.copy(this.opad, this.blocksize)\n  return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n  function shaFunc (data) {\n    return sha(alg).update(data).digest()\n  }\n  function rmd160Func (data) {\n    return new RIPEMD160().update(data).digest()\n  }\n\n  if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n  if (alg === 'md5') return md5\n  return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n  checkParameters(iterations, keylen)\n  password = toBuffer(password, defaultEncoding, 'Password')\n  salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n  digest = digest || 'sha1'\n\n  var hmac = new Hmac(digest, password, salt.length)\n\n  var DK = Buffer.allocUnsafe(keylen)\n  var block1 = Buffer.allocUnsafe(salt.length + 4)\n  salt.copy(block1, 0, 0, salt.length)\n\n  var destPos = 0\n  var hLen = sizes[digest]\n  var l = Math.ceil(keylen / hLen)\n\n  for (var i = 1; i <= l; i++) {\n    block1.writeUInt32BE(i, salt.length)\n\n    var T = hmac.run(block1, hmac.ipad1)\n    var U = T\n\n    for (var j = 1; j < iterations; j++) {\n      U = hmac.run(U, hmac.ipad2)\n      for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n    }\n\n    T.copy(DK, destPos)\n    destPos += hLen\n  }\n\n  return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n  if (Buffer.isBuffer(thing)) {\n    return thing\n  } else if (typeof thing === 'string') {\n    return Buffer.from(thing, encoding)\n  } else if (ArrayBuffer.isView(thing)) {\n    return Buffer.from(thing.buffer)\n  } else {\n    throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n  }\n}\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n  var res =  (bytes[0 + off] << 24) |\n             (bytes[1 + off] << 16) |\n             (bytes[2 + off] << 8) |\n             bytes[3 + off];\n  return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n  bytes[0 + off] = value >>> 24;\n  bytes[1 + off] = (value >>> 16) & 0xff;\n  bytes[2 + off] = (value >>> 8) & 0xff;\n  bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 0; i < 4; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n  for (var i = 4; i < 8; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  // 7, 15, 23, 31, 39, 47, 55, 63\n  // 6, 14, 22, 30, 39, 47, 55, 63\n  // 5, 13, 21, 29, 39, 47, 55, 63\n  // 4, 12, 20, 28\n  for (var i = 7; i >= 5; i--) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outL <<= 1;\n    outL |= (inR >> (j + i)) & 1;\n  }\n\n  // 1, 9, 17, 25, 33, 41, 49, 57\n  // 2, 10, 18, 26, 34, 42, 50, 58\n  // 3, 11, 19, 27, 35, 43, 51, 59\n  // 36, 44, 52, 60\n  for (var i = 1; i <= 3; i++) {\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outR <<= 1;\n    outR |= (inL >> (j + i)) & 1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n  return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n  // inL => outL\n  14, 11, 17, 4, 27, 23, 25, 0,\n  13, 22, 7, 18, 5, 9, 16, 24,\n  2, 20, 12, 21, 1, 8, 15, 26,\n\n  // inR => outR\n  15, 4, 25, 19, 9, 1, 26, 16,\n  5, 11, 23, 8, 12, 7, 17, 0,\n  22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  var len = pc2table.length >>> 1;\n  for (var i = 0; i < len; i++) {\n    outL <<= 1;\n    outL |= (inL >>> pc2table[i]) & 0x1;\n  }\n  for (var i = len; i < pc2table.length; i++) {\n    outR <<= 1;\n    outR |= (inR >>> pc2table[i]) & 0x1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  outL = ((r & 1) << 5) | (r >>> 27);\n  for (var i = 23; i >= 15; i -= 4) {\n    outL <<= 6;\n    outL |= (r >>> i) & 0x3f;\n  }\n  for (var i = 11; i >= 3; i -= 4) {\n    outR |= (r >>> i) & 0x3f;\n    outR <<= 6;\n  }\n  outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n  14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n  3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n  4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n  15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n  15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n  9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n  0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n  5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n  10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n  1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n  13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n  11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n  7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n  1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n  10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n  15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n  2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n  8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n  4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n  15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n  12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n  0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n  9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n  7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n  4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n  3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n  1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n  10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n  13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n  10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n  7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n  0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n  var out = 0;\n  for (var i = 0; i < 4; i++) {\n    var b = (inL >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  for (var i = 0; i < 4; i++) {\n    var b = (inR >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  return out >>> 0;\n};\n\nvar permuteTable = [\n  16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n  30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n  var out = 0;\n  for (var i = 0; i < permuteTable.length; i++) {\n    out <<= 1;\n    out |= (num >>> permuteTable[i]) & 0x1;\n  }\n  return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n  var str = num.toString(2);\n  while (str.length < size)\n    str = '0' + str;\n\n  var out = [];\n  for (var i = 0; i < size; i += group)\n    out.push(str.slice(i, i + group));\n  return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n  this.tmp = new Array(2);\n  this.keys = null;\n}\n\nfunction DES(options) {\n  Cipher.call(this, options);\n\n  var state = new DESState();\n  this._desState = state;\n\n  this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n  return new DES(options);\n};\n\nvar shiftTable = [\n  1, 1, 2, 2, 2, 2, 2, 2,\n  1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n  state.keys = new Array(16 * 2);\n\n  assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n  var kL = utils.readUInt32BE(key, 0);\n  var kR = utils.readUInt32BE(key, 4);\n\n  utils.pc1(kL, kR, state.tmp, 0);\n  kL = state.tmp[0];\n  kR = state.tmp[1];\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var shift = shiftTable[i >>> 1];\n    kL = utils.r28shl(kL, shift);\n    kR = utils.r28shl(kR, shift);\n    utils.pc2(kL, kR, state.keys, i);\n  }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._desState;\n\n  var l = utils.readUInt32BE(inp, inOff);\n  var r = utils.readUInt32BE(inp, inOff + 4);\n\n  // Initial Permutation\n  utils.ip(l, r, state.tmp, 0);\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  if (this.type === 'encrypt')\n    this._encrypt(state, l, r, state.tmp, 0);\n  else\n    this._decrypt(state, l, r, state.tmp, 0);\n\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  utils.writeUInt32BE(out, l, outOff);\n  utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n  if (this.padding === false) {\n    return false;\n  }\n\n  var value = buffer.length - off;\n  for (var i = off; i < buffer.length; i++)\n    buffer[i] = value;\n\n  return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n  if (this.padding === false) {\n    return buffer;\n  }\n\n  var pad = buffer[buffer.length - 1];\n  for (var i = buffer.length - pad; i < buffer.length; i++)\n    assert.equal(buffer[i], pad);\n\n  return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n  var l = lStart;\n  var r = rStart;\n\n  // Apply f() x16 times\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(r, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = r;\n    r = (l ^ f) >>> 0;\n    l = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n  var l = rStart;\n  var r = lStart;\n\n  // Apply f() x16 times\n  for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(l, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = l;\n    l = (r ^ f) >>> 0;\n    r = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(l, r, out, off);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n  var out = self._cipher.encryptBlockRaw(self._prev)\n  incr32(self._prev)\n  return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n  var chunkNum = Math.ceil(chunk.length / blockSize)\n  var start = self._cache.length\n  self._cache = Buffer.concat([\n    self._cache,\n    Buffer.allocUnsafe(chunkNum * blockSize)\n  ])\n  for (var i = 0; i < chunkNum; i++) {\n    var out = getBlock(self)\n    var offset = start + i * blockSize\n    self._cache.writeUInt32BE(out[0], offset + 0)\n    self._cache.writeUInt32BE(out[1], offset + 4)\n    self._cache.writeUInt32BE(out[2], offset + 8)\n    self._cache.writeUInt32BE(out[3], offset + 12)\n  }\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n","function incr32 (iv) {\n  var len = iv.length\n  var item\n  while (len--) {\n    item = iv.readUInt8(len)\n    if (item === 255) {\n      iv.writeUInt8(0, len)\n    } else {\n      item++\n      iv.writeUInt8(item, len)\n      break\n    }\n  }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n  var out = 0\n  if (a.length !== b.length) out++\n\n  var len = Math.min(a.length, b.length)\n  for (var i = 0; i < len; ++i) {\n    out += (a[i] ^ b[i])\n  }\n\n  return out\n}\n\nfunction calcIv (self, iv, ck) {\n  if (iv.length === 12) {\n    self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n    return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n  }\n  var ghash = new GHASH(ck)\n  var len = iv.length\n  var toPad = len % 16\n  ghash.update(iv)\n  if (toPad) {\n    toPad = 16 - toPad\n    ghash.update(Buffer.alloc(toPad, 0))\n  }\n  ghash.update(Buffer.alloc(8, 0))\n  var ivBits = len * 8\n  var tail = Buffer.alloc(8)\n  tail.writeUIntBE(ivBits, 0, 8)\n  ghash.update(tail)\n  self._finID = ghash.state\n  var out = Buffer.from(self._finID)\n  incr32(out)\n  return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  var h = Buffer.alloc(4, 0)\n\n  this._cipher = new aes.AES(key)\n  var ck = this._cipher.encryptBlock(h)\n  this._ghash = new GHASH(ck)\n  iv = calcIv(this, iv, ck)\n\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._alen = 0\n  this._len = 0\n  this._mode = mode\n\n  this._authTag = null\n  this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  if (!this._called && this._alen) {\n    var rump = 16 - (this._alen % 16)\n    if (rump < 16) {\n      rump = Buffer.alloc(rump, 0)\n      this._ghash.update(rump)\n    }\n  }\n\n  this._called = true\n  var out = this._mode.encrypt(this, chunk)\n  if (this._decrypt) {\n    this._ghash.update(chunk)\n  } else {\n    this._ghash.update(out)\n  }\n  this._len += chunk.length\n  return out\n}\n\nStreamCipher.prototype._final = function () {\n  if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n  var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n  if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n  this._authTag = tag\n  this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n  if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n  return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n  if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n  this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n  if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n  this._ghash.update(buf)\n  this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n  this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n  if (primes !== null)\n    return primes;\n\n  var limit = 0x100000;\n  var res = [];\n  res[0] = 2;\n  for (var i = 1, k = 3; k < limit; k += 2) {\n    var sqrt = Math.ceil(Math.sqrt(k));\n    for (var j = 0; j < i && res[j] <= sqrt; j++)\n      if (k % res[j] === 0)\n        break;\n\n    if (i !== j && res[j] <= sqrt)\n      continue;\n\n    res[i++] = k;\n  }\n  primes = res;\n  return res;\n}\n\nfunction simpleSieve(p) {\n  var primes = _getPrimes();\n\n  for (var i = 0; i < primes.length; i++)\n    if (p.modn(primes[i]) === 0) {\n      if (p.cmpn(primes[i]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n\n  return true;\n}\n\nfunction fermatTest(p) {\n  var red = BN.mont(p);\n  return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n  if (bits < 16) {\n    // this is what openssl does\n    if (gen === 2 || gen === 5) {\n      return new BN([0x8c, 0x7b]);\n    } else {\n      return new BN([0x8c, 0x27]);\n    }\n  }\n  gen = new BN(gen);\n\n  var num, n2;\n\n  while (true) {\n    num = new BN(randomBytes(Math.ceil(bits / 8)));\n    while (num.bitLength() > bits) {\n      num.ishrn(1);\n    }\n    if (num.isEven()) {\n      num.iadd(ONE);\n    }\n    if (!num.testn(1)) {\n      num.iadd(TWO);\n    }\n    if (!gen.cmp(TWO)) {\n      while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        num.iadd(FOUR);\n      }\n    } else if (!gen.cmp(FIVE)) {\n      while (num.mod(TEN).cmp(THREE)) {\n        num.iadd(FOUR);\n      }\n    }\n    n2 = num.shrn(1);\n    if (simpleSieve(n2) && simpleSieve(num) &&\n      fermatTest(n2) && fermatTest(num) &&\n      millerRabin.test(n2) && millerRabin.test(num)) {\n      return num;\n    }\n  }\n\n}\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n  this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n  return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n  var len = n.bitLength();\n  var min_bytes = Math.ceil(len / 8);\n\n  // Generage random bytes until a number less than n is found.\n  // This ensures that 0..n-1 have an equal probability of being selected.\n  do\n    var a = new bn(this.rand.generate(min_bytes));\n  while (a.cmp(n) >= 0);\n\n  return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n  // Generate a random number greater than or equal to start and less than stop.\n  var size = stop.sub(start);\n  return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  var prime = true;\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n    if (cb)\n      cb(a);\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return false;\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s)\n      return false;\n  }\n\n  return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n\n    var g = n.gcd(a);\n    if (g.cmpn(1) !== 0)\n      return g;\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return x.fromRed().subn(1).gcd(n);\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s) {\n      x = x.redSqr();\n      return x.fromRed().subn(1).gcd(n);\n    }\n  }\n\n  return false;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg !== 'string') {\n    for (var i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n    return res;\n  }\n  if (enc === 'hex') {\n    msg = msg.replace(/[^a-z0-9]+/ig, '');\n    if (msg.length % 2 !== 0)\n      msg = '0' + msg;\n    for (var i = 0; i < msg.length; i += 2)\n      res.push(parseInt(msg[i] + msg[i + 1], 16));\n  } else {\n    for (var i = 0; i < msg.length; i++) {\n      var c = msg.charCodeAt(i);\n      var hi = c >> 8;\n      var lo = c & 0xff;\n      if (hi)\n        res.push(hi, lo);\n      else\n        res.push(lo);\n    }\n  }\n  return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n  if (enc === 'hex')\n    return toHex(arr);\n  else\n    return arr;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n  if (s === 0)\n    return ch32(x, y, z);\n  if (s === 1 || s === 3)\n    return p32(x, y, z);\n  if (s === 2)\n    return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n  return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n  return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n  return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n  if (!(this instanceof SHA256))\n    return new SHA256();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n    0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n  ];\n  this.k = sha256_K;\n  this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i++)\n    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n  var f = this.h[5];\n  var g = this.h[6];\n  var h = this.h[7];\n\n  assert(this.k.length === W.length);\n  for (i = 0; i < W.length; i++) {\n    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n    var T2 = sum32(s0_256(a), maj32(a, b, c));\n    h = g;\n    g = f;\n    f = e;\n    e = sum32(d, T1);\n    d = c;\n    c = b;\n    b = a;\n    a = sum32(T1, T2);\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n  this.h[5] = sum32(this.h[5], f);\n  this.h[6] = sum32(this.h[6], g);\n  this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n  if (!(this instanceof SHA512))\n    return new SHA512();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xf3bcc908,\n    0xbb67ae85, 0x84caa73b,\n    0x3c6ef372, 0xfe94f82b,\n    0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1,\n    0x9b05688c, 0x2b3e6c1f,\n    0x1f83d9ab, 0xfb41bd6b,\n    0x5be0cd19, 0x137e2179 ];\n  this.k = sha512_K;\n  this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n  var W = this.W;\n\n  // 32 x 32bit words\n  for (var i = 0; i < 32; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i += 2) {\n    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2\n    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n    var c1_hi = W[i - 14];  // i - 7\n    var c1_lo = W[i - 13];\n    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15\n    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n    var c3_hi = W[i - 32];  // i - 16\n    var c3_lo = W[i - 31];\n\n    W[i] = sum64_4_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n    W[i + 1] = sum64_4_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n  }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n  this._prepareBlock(msg, start);\n\n  var W = this.W;\n\n  var ah = this.h[0];\n  var al = this.h[1];\n  var bh = this.h[2];\n  var bl = this.h[3];\n  var ch = this.h[4];\n  var cl = this.h[5];\n  var dh = this.h[6];\n  var dl = this.h[7];\n  var eh = this.h[8];\n  var el = this.h[9];\n  var fh = this.h[10];\n  var fl = this.h[11];\n  var gh = this.h[12];\n  var gl = this.h[13];\n  var hh = this.h[14];\n  var hl = this.h[15];\n\n  assert(this.k.length === W.length);\n  for (var i = 0; i < W.length; i += 2) {\n    var c0_hi = hh;\n    var c0_lo = hl;\n    var c1_hi = s1_512_hi(eh, el);\n    var c1_lo = s1_512_lo(eh, el);\n    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n    var c3_hi = this.k[i];\n    var c3_lo = this.k[i + 1];\n    var c4_hi = W[i];\n    var c4_lo = W[i + 1];\n\n    var T1_hi = sum64_5_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n    var T1_lo = sum64_5_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n\n    c0_hi = s0_512_hi(ah, al);\n    c0_lo = s0_512_lo(ah, al);\n    c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n    c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n    hh = gh;\n    hl = gl;\n\n    gh = fh;\n    gl = fl;\n\n    fh = eh;\n    fl = el;\n\n    eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n    el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n    dh = ch;\n    dl = cl;\n\n    ch = bh;\n    cl = bl;\n\n    bh = ah;\n    bl = al;\n\n    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n  }\n\n  sum64(this.h, 0, ah, al);\n  sum64(this.h, 2, bh, bl);\n  sum64(this.h, 4, ch, cl);\n  sum64(this.h, 6, dh, dl);\n  sum64(this.h, 8, eh, el);\n  sum64(this.h, 10, fh, fl);\n  sum64(this.h, 12, gh, gl);\n  sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ ((~xh) & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ ((~xl) & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 28);\n  var c1_hi = rotr64_hi(xl, xh, 2);  // 34\n  var c2_hi = rotr64_hi(xl, xh, 7);  // 39\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 28);\n  var c1_lo = rotr64_lo(xl, xh, 2);  // 34\n  var c2_lo = rotr64_lo(xl, xh, 7);  // 39\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 14);\n  var c1_hi = rotr64_hi(xh, xl, 18);\n  var c2_hi = rotr64_hi(xl, xh, 9);  // 41\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 14);\n  var c1_lo = rotr64_lo(xh, xl, 18);\n  var c2_lo = rotr64_lo(xl, xh, 9);  // 41\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 1);\n  var c1_hi = rotr64_hi(xh, xl, 8);\n  var c2_hi = shr64_hi(xh, xl, 7);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 1);\n  var c1_lo = rotr64_lo(xh, xl, 8);\n  var c2_lo = shr64_lo(xh, xl, 7);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 19);\n  var c1_hi = rotr64_hi(xl, xh, 29);  // 61\n  var c2_hi = shr64_hi(xh, xl, 6);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 19);\n  var c1_lo = rotr64_lo(xl, xh, 29);  // 61\n  var c2_lo = shr64_lo(xh, xl, 6);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n  return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n  primitive,\n  cls,\n  content) {\n  const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n  // Short form\n  if (content.length < 0x80) {\n    const header = Buffer.alloc(2);\n    header[0] = encodedTag;\n    header[1] = content.length;\n    return this._createEncoderBuffer([ header, content ]);\n  }\n\n  // Long form\n  // Count octets required to store length\n  let lenOctets = 1;\n  for (let i = content.length; i >= 0x100; i >>= 8)\n    lenOctets++;\n\n  const header = Buffer.alloc(1 + 1 + lenOctets);\n  header[0] = encodedTag;\n  header[1] = 0x80 | lenOctets;\n\n  for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n    header[i] = j & 0xff;\n\n  return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n  if (tag === 'bitstr') {\n    return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n  } else if (tag === 'bmpstr') {\n    const buf = Buffer.alloc(str.length * 2);\n    for (let i = 0; i < str.length; i++) {\n      buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n    }\n    return this._createEncoderBuffer(buf);\n  } else if (tag === 'numstr') {\n    if (!this._isNumstr(str)) {\n      return this.reporter.error('Encoding of string type: numstr supports ' +\n                                 'only digits and space');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'printstr') {\n    if (!this._isPrintstr(str)) {\n      return this.reporter.error('Encoding of string type: printstr supports ' +\n                                 'only latin upper and lower case letters, ' +\n                                 'digits, space, apostrophe, left and rigth ' +\n                                 'parenthesis, plus sign, comma, hyphen, ' +\n                                 'dot, slash, colon, equal sign, ' +\n                                 'question mark');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (/str$/.test(tag)) {\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'objDesc') {\n    return this._createEncoderBuffer(str);\n  } else {\n    return this.reporter.error('Encoding of string type: ' + tag +\n                               ' unsupported');\n  }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n  if (typeof id === 'string') {\n    if (!values)\n      return this.reporter.error('string objid given, but no values map found');\n    if (!values.hasOwnProperty(id))\n      return this.reporter.error('objid not found in values map');\n    id = values[id].split(/[\\s.]+/g);\n    for (let i = 0; i < id.length; i++)\n      id[i] |= 0;\n  } else if (Array.isArray(id)) {\n    id = id.slice();\n    for (let i = 0; i < id.length; i++)\n      id[i] |= 0;\n  }\n\n  if (!Array.isArray(id)) {\n    return this.reporter.error('objid() should be either array or string, ' +\n                               'got: ' + JSON.stringify(id));\n  }\n\n  if (!relative) {\n    if (id[1] >= 40)\n      return this.reporter.error('Second objid identifier OOB');\n    id.splice(0, 2, id[0] * 40 + id[1]);\n  }\n\n  // Count number of octets\n  let size = 0;\n  for (let i = 0; i < id.length; i++) {\n    let ident = id[i];\n    for (size++; ident >= 0x80; ident >>= 7)\n      size++;\n  }\n\n  const objid = Buffer.alloc(size);\n  let offset = objid.length - 1;\n  for (let i = id.length - 1; i >= 0; i--) {\n    let ident = id[i];\n    objid[offset--] = ident & 0x7f;\n    while ((ident >>= 7) > 0)\n      objid[offset--] = 0x80 | (ident & 0x7f);\n  }\n\n  return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n  if (num < 10)\n    return '0' + num;\n  else\n    return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n  let str;\n  const date = new Date(time);\n\n  if (tag === 'gentime') {\n    str = [\n      two(date.getUTCFullYear()),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else if (tag === 'utctime') {\n    str = [\n      two(date.getUTCFullYear() % 100),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else {\n    this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n  }\n\n  return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n  return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n  if (typeof num === 'string') {\n    if (!values)\n      return this.reporter.error('String int or enum given, but no values map');\n    if (!values.hasOwnProperty(num)) {\n      return this.reporter.error('Values map doesn\\'t contain: ' +\n                                 JSON.stringify(num));\n    }\n    num = values[num];\n  }\n\n  // Bignum, assume big endian\n  if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n    const numArray = num.toArray();\n    if (!num.sign && numArray[0] & 0x80) {\n      numArray.unshift(0);\n    }\n    num = Buffer.from(numArray);\n  }\n\n  if (Buffer.isBuffer(num)) {\n    let size = num.length;\n    if (num.length === 0)\n      size++;\n\n    const out = Buffer.alloc(size);\n    num.copy(out);\n    if (num.length === 0)\n      out[0] = 0;\n    return this._createEncoderBuffer(out);\n  }\n\n  if (num < 0x80)\n    return this._createEncoderBuffer(num);\n\n  if (num < 0x100)\n    return this._createEncoderBuffer([0, num]);\n\n  let size = 1;\n  for (let i = num; i >= 0x100; i >>= 8)\n    size++;\n\n  const out = new Array(size);\n  for (let i = out.length - 1; i >= 0; i--) {\n    out[i] = num & 0xff;\n    num >>= 8;\n  }\n  if(out[0] & 0x80) {\n    out.unshift(0);\n  }\n\n  return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n  return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n  const state = this._baseState;\n  let i;\n  if (state['default'] === null)\n    return false;\n\n  const data = dataBuffer.join();\n  if (state.defaultBuffer === undefined)\n    state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n  if (data.length !== state.defaultBuffer.length)\n    return false;\n\n  for (i=0; i < data.length; i++)\n    if (data[i] !== state.defaultBuffer[i])\n      return false;\n\n  return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n  let res;\n\n  if (tag === 'seqof')\n    tag = 'seq';\n  else if (tag === 'setof')\n    tag = 'set';\n\n  if (der.tagByName.hasOwnProperty(tag))\n    res = der.tagByName[tag];\n  else if (typeof tag === 'number' && (tag | 0) === tag)\n    res = tag;\n  else\n    return reporter.error('Unknown tag: ' + tag);\n\n  if (res >= 0x1f)\n    return reporter.error('Multi-octet tag encoding unsupported');\n\n  if (!primitive)\n    res |= 0x20;\n\n  res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n  return res;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n  if (!DecoderBuffer.isDecoderBuffer(data)) {\n    data = new DecoderBuffer(data, options);\n  }\n\n  return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n  if (buffer.isEmpty())\n    return false;\n\n  const state = buffer.save();\n  const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  buffer.restore(state);\n\n  return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n    (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n  const decodedTag = derDecodeTag(buffer,\n    'Failed to decode tag of \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  let len = derDecodeLen(buffer,\n    decodedTag.primitive,\n    'Failed to get length of \"' + tag + '\"');\n\n  // Failure\n  if (buffer.isError(len))\n    return len;\n\n  if (!any &&\n      decodedTag.tag !== tag &&\n      decodedTag.tagStr !== tag &&\n      decodedTag.tagStr + 'of' !== tag) {\n    return buffer.error('Failed to match tag: \"' + tag + '\"');\n  }\n\n  if (decodedTag.primitive || len !== null)\n    return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n  // Indefinite length... find END tag\n  const state = buffer.save();\n  const res = this._skipUntilEnd(\n    buffer,\n    'Failed to skip indefinite length body: \"' + this.tag + '\"');\n  if (buffer.isError(res))\n    return res;\n\n  len = buffer.offset - state.offset;\n  buffer.restore(state);\n  return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n  for (;;) {\n    const tag = derDecodeTag(buffer, fail);\n    if (buffer.isError(tag))\n      return tag;\n    const len = derDecodeLen(buffer, tag.primitive, fail);\n    if (buffer.isError(len))\n      return len;\n\n    let res;\n    if (tag.primitive || len !== null)\n      res = buffer.skip(len);\n    else\n      res = this._skipUntilEnd(buffer, fail);\n\n    // Failure\n    if (buffer.isError(res))\n      return res;\n\n    if (tag.tagStr === 'end')\n      break;\n  }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n  options) {\n  const result = [];\n  while (!buffer.isEmpty()) {\n    const possibleEnd = this._peekTag(buffer, 'end');\n    if (buffer.isError(possibleEnd))\n      return possibleEnd;\n\n    const res = decoder.decode(buffer, 'der', options);\n    if (buffer.isError(res) && possibleEnd)\n      break;\n    result.push(res);\n  }\n  return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n  if (tag === 'bitstr') {\n    const unused = buffer.readUInt8();\n    if (buffer.isError(unused))\n      return unused;\n    return { unused: unused, data: buffer.raw() };\n  } else if (tag === 'bmpstr') {\n    const raw = buffer.raw();\n    if (raw.length % 2 === 1)\n      return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n    let str = '';\n    for (let i = 0; i < raw.length / 2; i++) {\n      str += String.fromCharCode(raw.readUInt16BE(i * 2));\n    }\n    return str;\n  } else if (tag === 'numstr') {\n    const numstr = buffer.raw().toString('ascii');\n    if (!this._isNumstr(numstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'numstr unsupported characters');\n    }\n    return numstr;\n  } else if (tag === 'octstr') {\n    return buffer.raw();\n  } else if (tag === 'objDesc') {\n    return buffer.raw();\n  } else if (tag === 'printstr') {\n    const printstr = buffer.raw().toString('ascii');\n    if (!this._isPrintstr(printstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'printstr unsupported characters');\n    }\n    return printstr;\n  } else if (/str$/.test(tag)) {\n    return buffer.raw().toString();\n  } else {\n    return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n  }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n  let result;\n  const identifiers = [];\n  let ident = 0;\n  let subident = 0;\n  while (!buffer.isEmpty()) {\n    subident = buffer.readUInt8();\n    ident <<= 7;\n    ident |= subident & 0x7f;\n    if ((subident & 0x80) === 0) {\n      identifiers.push(ident);\n      ident = 0;\n    }\n  }\n  if (subident & 0x80)\n    identifiers.push(ident);\n\n  const first = (identifiers[0] / 40) | 0;\n  const second = identifiers[0] % 40;\n\n  if (relative)\n    result = identifiers;\n  else\n    result = [first, second].concat(identifiers.slice(1));\n\n  if (values) {\n    let tmp = values[result.join(' ')];\n    if (tmp === undefined)\n      tmp = values[result.join('.')];\n    if (tmp !== undefined)\n      result = tmp;\n  }\n\n  return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n  const str = buffer.raw().toString();\n\n  let year;\n  let mon;\n  let day;\n  let hour;\n  let min;\n  let sec;\n  if (tag === 'gentime') {\n    year = str.slice(0, 4) | 0;\n    mon = str.slice(4, 6) | 0;\n    day = str.slice(6, 8) | 0;\n    hour = str.slice(8, 10) | 0;\n    min = str.slice(10, 12) | 0;\n    sec = str.slice(12, 14) | 0;\n  } else if (tag === 'utctime') {\n    year = str.slice(0, 2) | 0;\n    mon = str.slice(2, 4) | 0;\n    day = str.slice(4, 6) | 0;\n    hour = str.slice(6, 8) | 0;\n    min = str.slice(8, 10) | 0;\n    sec = str.slice(10, 12) | 0;\n    if (year < 70)\n      year = 2000 + year;\n    else\n      year = 1900 + year;\n  } else {\n    return buffer.error('Decoding ' + tag + ' time is not supported yet');\n  }\n\n  return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n  return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n  const res = buffer.readUInt8();\n  if (buffer.isError(res))\n    return res;\n  else\n    return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n  // Bigint, return as it is (assume big endian)\n  const raw = buffer.raw();\n  let res = new bignum(raw);\n\n  if (values)\n    res = values[res.toString(10)] || res;\n\n  return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n  let tag = buf.readUInt8(fail);\n  if (buf.isError(tag))\n    return tag;\n\n  const cls = der.tagClass[tag >> 6];\n  const primitive = (tag & 0x20) === 0;\n\n  // Multi-octet tag - load\n  if ((tag & 0x1f) === 0x1f) {\n    let oct = tag;\n    tag = 0;\n    while ((oct & 0x80) === 0x80) {\n      oct = buf.readUInt8(fail);\n      if (buf.isError(oct))\n        return oct;\n\n      tag <<= 7;\n      tag |= oct & 0x7f;\n    }\n  } else {\n    tag &= 0x1f;\n  }\n  const tagStr = der.tag[tag];\n\n  return {\n    cls: cls,\n    primitive: primitive,\n    tag: tag,\n    tagStr: tagStr\n  };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n  let len = buf.readUInt8(fail);\n  if (buf.isError(len))\n    return len;\n\n  // Indefinite form\n  if (!primitive && len === 0x80)\n    return null;\n\n  // Definite form\n  if ((len & 0x80) === 0) {\n    // Short form\n    return len;\n  }\n\n  // Long form\n  const num = len & 0x7f;\n  if (num > 4)\n    return buf.error('length octect is too long');\n\n  len = 0;\n  for (let i = 0; i < num; i++) {\n    len <<= 8;\n    const j = buf.readUInt8(fail);\n    if (buf.isError(j))\n      return j;\n    len |= j;\n  }\n\n  return len;\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n  var t = Buffer.alloc(0)\n  var i = 0\n  var c\n  while (t.length < len) {\n    c = i2ops(i++)\n    t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n  }\n  return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n  var out = Buffer.allocUnsafe(4)\n  out.writeUInt32BE(c, 0)\n  return out\n}\n","module.exports = function xor (a, b) {\n  var len = a.length\n  var i = -1\n  while (++i < len) {\n    a[i] ^= b[i]\n  }\n  return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n  return Buffer.from(paddedMsg\n    .toRed(BN.mont(key.modulus))\n    .redPow(new BN(key.publicExponent))\n    .fromRed()\n    .toArray())\n}\n\nmodule.exports = withPublic\n","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n  if (typeof obj === 'string')\n    return obj;\n  if (typeof obj === 'number' || Buffer.isBuffer(obj))\n    return obj.toString();\n  return JSON.stringify(obj);\n};\n","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar NotBeforeError = function (message, date) {\n  JsonWebTokenError.call(this, message);\n  this.name = 'NotBeforeError';\n  this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\n\nNotBeforeError.prototype.constructor = NotBeforeError;\n\nmodule.exports = NotBeforeError;","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar TokenExpiredError = function (message, expiredAt) {\n  JsonWebTokenError.call(this, message);\n  this.name = 'TokenExpiredError';\n  this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\n\nTokenExpiredError.prototype.constructor = TokenExpiredError;\n\nmodule.exports = TokenExpiredError;","var ms = require('ms');\n\nmodule.exports = function (time, iat) {\n  var timestamp = iat || Math.floor(Date.now() / 1000);\n\n  if (typeof time === 'string') {\n    var milliseconds = ms(time);\n    if (typeof milliseconds === 'undefined') {\n      return;\n    }\n    return Math.floor(timestamp + milliseconds / 1000);\n  } else if (typeof time === 'number') {\n    return timestamp + time;\n  } else {\n    return;\n  }\n\n};","var semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.add = add;\nexports.showConfirm = exports.removeByType = exports.remove = exports.hideConfirm = exports.clean = void 0;\n\nvar _constants = require(\"./constants\");\n\nvar _utils = require(\"./utils\");\n\nvar _reducer = require(\"./reducer\");\n\nvar _config = _interopRequireDefault(require(\"./config\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction add(toastr) {\n  if (_config[\"default\"].preventDuplicates && (0, _utils.preventDuplication)(_reducer.toastrsCache, toastr)) {\n    return {\n      type: _constants.ADD_TOASTR,\n      payload: {\n        ignoreToastr: true\n      }\n    };\n  }\n\n  return {\n    type: _constants.ADD_TOASTR,\n    payload: toastr\n  };\n}\n\nvar clean = function clean() {\n  return {\n    type: _constants.CLEAN_TOASTR\n  };\n};\n\nexports.clean = clean;\n\nvar remove = function remove(payload) {\n  return {\n    type: _constants.REMOVE_TOASTR,\n    payload: payload\n  };\n};\n\nexports.remove = remove;\n\nvar showConfirm = function showConfirm(payload) {\n  return {\n    type: _constants.SHOW_CONFIRM,\n    payload: payload\n  };\n};\n\nexports.showConfirm = showConfirm;\n\nvar hideConfirm = function hideConfirm() {\n  return {\n    type: _constants.HIDE_CONFIRM\n  };\n};\n\nexports.hideConfirm = hideConfirm;\n\nvar removeByType = function removeByType(payload) {\n  return {\n    type: _constants.REMOVE_BY_TYPE,\n    payload: payload\n  };\n};\n\nexports.removeByType = removeByType;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.toastrsCache = exports[\"default\"] = void 0;\n\nvar _utils = require(\"./utils.js\");\n\nvar _config = _interopRequireDefault(require(\"./config\"));\n\nvar _constants = require(\"./constants\");\n\nvar _createReducer;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// TOTO: find a better way of handling this issue\n// We will cache data so we can check for duplicated before fire the add action.\nvar toastrsCache = [];\nexports.toastrsCache = toastrsCache;\nvar initialState = {\n  toastrs: [],\n  confirm: null\n};\n\nvar _default = (0, _utils.createReducer)(initialState, (_createReducer = {}, _defineProperty(_createReducer, _constants.ADD_TOASTR, function (state, toastr) {\n  if (toastr.ignoreToastr) {\n    return state;\n  }\n\n  var newToastr = _objectSpread({\n    id: (0, _utils.guid)(),\n    position: _config[\"default\"].position\n  }, toastr);\n\n  if (!newToastr.a11yId && toastr && toastr.hasOwnProperty('id') && !toastr.hasOwnProperty('a11yId')) {\n    newToastr.a11yId = toastr.id;\n  }\n\n  var newState = {};\n\n  if (!_config[\"default\"].newestOnTop) {\n    newState = _objectSpread(_objectSpread({}, state), {}, {\n      toastrs: [].concat(_toConsumableArray(state.toastrs), [newToastr])\n    });\n  } else {\n    newState = _objectSpread(_objectSpread({}, state), {}, {\n      toastrs: [newToastr].concat(_toConsumableArray(state.toastrs))\n    });\n  }\n\n  exports.toastrsCache = toastrsCache = newState.toastrs;\n  return newState;\n}), _defineProperty(_createReducer, _constants.REMOVE_TOASTR, function (state, id) {\n  var newState = _objectSpread(_objectSpread({}, state), {}, {\n    toastrs: state.toastrs.filter(function (toastr) {\n      return toastr.id !== id;\n    })\n  });\n\n  exports.toastrsCache = toastrsCache = newState.toastrs;\n  return newState;\n}), _defineProperty(_createReducer, _constants.REMOVE_BY_TYPE, function (state, type) {\n  var newState = _objectSpread(_objectSpread({}, state), {}, {\n    toastrs: state.toastrs.filter(function (toastr) {\n      return toastr.type !== type;\n    })\n  });\n\n  exports.toastrsCache = toastrsCache = newState.toastrs;\n  return newState;\n}), _defineProperty(_createReducer, _constants.CLEAN_TOASTR, function (state) {\n  exports.toastrsCache = toastrsCache = [];\n  return _objectSpread(_objectSpread({}, state), {}, {\n    toastrs: []\n  });\n}), _defineProperty(_createReducer, _constants.SHOW_CONFIRM, function (state, _ref) {\n  var id = _ref.id,\n      message = _ref.message,\n      options = _ref.options;\n  return _objectSpread(_objectSpread({}, state), {}, {\n    confirm: {\n      id: id || (0, _utils.guid)(),\n      show: true,\n      message: message,\n      options: options || {}\n    }\n  });\n}), _defineProperty(_createReducer, _constants.HIDE_CONFIRM, function (state) {\n  return _objectSpread(_objectSpread({}, state), {}, {\n    confirm: null\n  });\n}), _createReducer));\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.toastrEmitter = exports.EE = void 0;\n\nvar _utils = require(\"./utils.js\");\n\nvar _eventemitter = _interopRequireDefault(require(\"eventemitter3\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar emitter = new _eventemitter[\"default\"]();\n\nvar addToToastr = function addToToastr(type, array) {\n  return emitter.emit('add/toastr', (0, _utils.mapToToastrMessage)(type, array));\n};\n\nvar actions = {};\n['light', 'message', 'info', 'success', 'warning', 'error'].forEach(function (item) {\n  actions[item] = function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return addToToastr(item, args);\n  };\n});\n\nactions.clean = function () {\n  return emitter.emit('clean/toastr');\n};\n/**\n * @params: can be a ID or a object that with a property type: 'success'\n * and by passing this we will remove all toastr with that type.\n */\n\n\nactions.removeByType = function (type) {\n  return emitter.emit('removeByType/toastr', type);\n};\n\nactions.remove = function (id) {\n  return emitter.emit('remove/toastr', id);\n};\n\nactions.confirm = function () {\n  emitter.emit('toastr/confirm', {\n    message: arguments.length <= 0 ? undefined : arguments[0],\n    options: (arguments.length <= 1 ? undefined : arguments[1]) || {}\n  });\n};\n\nvar EE = emitter;\nexports.EE = EE;\nvar toastrEmitter = actions;\nexports.toastrEmitter = toastrEmitter;","var __extends=this&&this.__extends||function(){var e=function(t,n){e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n))e[n]=t[n]};return e(t,n)};return function(t,n){if(typeof n!==\"function\"&&n!==null)throw new TypeError(\"Class extends value \"+String(n)+\" is not a constructor or null\");e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();var __awaiter=this&&this.__awaiter||function(e,t,n,r){function a(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function i(e){try{l(r[\"throw\"](e))}catch(e){o(e)}}function l(e){e.done?n(e.value):a(e.value).then(s,i)}l((r=r.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,a,o,s;return s={next:i(0),throw:i(1),return:i(2)},typeof Symbol===\"function\"&&(s[Symbol.iterator]=function(){return this}),s;function i(e){return function(t){return l([e,t])}}function l(s){if(r)throw new TypeError(\"Generator is already executing.\");while(n)try{if(r=1,a&&(o=s[0]&2?a[\"return\"]:s[0]?a[\"throw\"]||((o=a[\"return\"])&&o.call(a),0):a.next)&&!(o=o.call(a,s[1])).done)return o;if(a=0,o)s=[s[0]&2,o.value];switch(s[0]){case 0:case 1:o=s;break;case 4:n.label++;return{value:s[1],done:false};case 5:n.label++;a=s[1];s=[0];continue;case 7:s=n.ops.pop();n.trys.pop();continue;default:if(!(o=n.trys,o=o.length>0&&o[o.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!o||s[1]>o[0]&&s[1]<o[3])){n.label=s[1];break}if(s[0]===6&&n.label<o[1]){n.label=o[1];o=s;break}if(o&&n.label<o[2]){n.label=o[2];n.ops.push(s);break}if(o[2])n.ops.pop();n.trys.pop();continue}s=t.call(e,n)}catch(e){s=[6,e];a=0}finally{r=o=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,a=e.length;n<r;n++,a++)e[a]=t[n];return e};var NAMESPACE=\"ionicons\";var scopeId;var hostTagName;var isSvgMode=false;var queuePending=false;var win=typeof window!==\"undefined\"?window:{};var doc=win.document||{head:{}};var plt={$flags$:0,$resourcesUrl$:\"\",jmp:function(e){return e()},raf:function(e){return requestAnimationFrame(e)},ael:function(e,t,n,r){return e.addEventListener(t,n,r)},rel:function(e,t,n,r){return e.removeEventListener(t,n,r)},ce:function(e,t){return new CustomEvent(e,t)}};var promiseResolve=function(e){return Promise.resolve(e)};var supportsConstructibleStylesheets=function(){try{new CSSStyleSheet;return typeof(new CSSStyleSheet).replace===\"function\"}catch(e){}return false}();var HYDRATED_CSS=\"{visibility:hidden}.hydrated{visibility:inherit}\";var createTime=function(e,t){if(t===void 0){t=\"\"}{return function(){return}}};var uniqueTime=function(e,t){{return function(){return}}};var rootAppliedStyles=new WeakMap;var registerStyle=function(e,t,n){var r=styles.get(e);if(supportsConstructibleStylesheets&&n){r=r||new CSSStyleSheet;r.replace(t)}else{r=t}styles.set(e,r)};var addStyle=function(e,t,n,r){var a=getScopeId(t);var o=styles.get(a);e=e.nodeType===11?e:doc;if(o){if(typeof o===\"string\"){e=e.head||e;var s=rootAppliedStyles.get(e);var i=void 0;if(!s){rootAppliedStyles.set(e,s=new Set)}if(!s.has(a)){{{i=doc.createElement(\"style\");i.innerHTML=o}e.insertBefore(i,e.querySelector(\"link\"))}if(s){s.add(a)}}}else if(!e.adoptedStyleSheets.includes(o)){e.adoptedStyleSheets=__spreadArray(__spreadArray([],e.adoptedStyleSheets),[o])}}return a};var attachStyles=function(e){var t=e.$cmpMeta$;var n=e.$hostElement$;var r=t.$flags$;var a=createTime(\"attachStyles\",t.$tagName$);var o=addStyle(n.shadowRoot?n.shadowRoot:n.getRootNode(),t);if(r&10){n[\"s-sc\"]=o;n.classList.add(o+\"-h\")}a()};var getScopeId=function(e,t){return\"sc-\"+e.$tagName$};var EMPTY_OBJ={};var isDef=function(e){return e!=null};var isComplexType=function(e){e=typeof e;return e===\"object\"||e===\"function\"};var h=function(e,t){var n=[];for(var r=2;r<arguments.length;r++){n[r-2]=arguments[r]}var a=null;var o=false;var s=false;var i=[];var l=function(t){for(var n=0;n<t.length;n++){a=t[n];if(Array.isArray(a)){l(a)}else if(a!=null&&typeof a!==\"boolean\"){if(o=typeof e!==\"function\"&&!isComplexType(a)){a=String(a)}if(o&&s){i[i.length-1].$text$+=a}else{i.push(o?newVNode(null,a):a)}s=o}}};l(n);if(t){{var u=t.className||t.class;if(u){t.class=typeof u!==\"object\"?u:Object.keys(u).filter((function(e){return u[e]})).join(\" \")}}}var c=newVNode(e,null);c.$attrs$=t;if(i.length>0){c.$children$=i}return c};var newVNode=function(e,t){var n={$flags$:0,$tag$:e,$text$:t,$elm$:null,$children$:null};{n.$attrs$=null}return n};var Host={};var isHost=function(e){return e&&e.$tag$===Host};var setAccessor=function(e,t,n,r,a,o){if(n!==r){var s=isMemberInElement(e,t);t.toLowerCase();if(t===\"class\"){var i=e.classList;var l=parseClassList(n);var u=parseClassList(r);i.remove.apply(i,l.filter((function(e){return e&&!u.includes(e)})));i.add.apply(i,u.filter((function(e){return e&&!l.includes(e)})))}else{var c=isComplexType(r);if((s||c&&r!==null)&&!a){try{if(!e.tagName.includes(\"-\")){var f=r==null?\"\":r;if(t===\"list\"){s=false}else if(n==null||e[t]!=f){e[t]=f}}else{e[t]=r}}catch(e){}}if(r==null||r===false){if(r!==false||e.getAttribute(t)===\"\"){{e.removeAttribute(t)}}}else if((!s||o&4||a)&&!c){r=r===true?\"\":r;{e.setAttribute(t,r)}}}}};var parseClassListRegex=/\\s/;var parseClassList=function(e){return!e?[]:e.split(parseClassListRegex)};var updateElement=function(e,t,n,r){var a=t.$elm$.nodeType===11&&t.$elm$.host?t.$elm$.host:t.$elm$;var o=e&&e.$attrs$||EMPTY_OBJ;var s=t.$attrs$||EMPTY_OBJ;{for(r in o){if(!(r in s)){setAccessor(a,r,o[r],undefined,n,t.$flags$)}}}for(r in s){setAccessor(a,r,o[r],s[r],n,t.$flags$)}};var createElm=function(e,t,n,r){var a=t.$children$[n];var o=0;var s;var i;if(a.$text$!==null){s=a.$elm$=doc.createTextNode(a.$text$)}else{s=a.$elm$=doc.createElement(a.$tag$);{updateElement(null,a,isSvgMode)}if(isDef(scopeId)&&s[\"s-si\"]!==scopeId){s.classList.add(s[\"s-si\"]=scopeId)}if(a.$children$){for(o=0;o<a.$children$.length;++o){i=createElm(e,a,o);if(i){s.appendChild(i)}}}}return s};var addVnodes=function(e,t,n,r,a,o){var s=e;var i;if(s.shadowRoot&&s.tagName===hostTagName){s=s.shadowRoot}for(;a<=o;++a){if(r[a]){i=createElm(null,n,a);if(i){r[a].$elm$=i;s.insertBefore(i,t)}}}};var removeVnodes=function(e,t,n,r,a){for(;t<=n;++t){if(r=e[t]){a=r.$elm$;a.remove()}}};var updateChildren=function(e,t,n,r){var a=0;var o=0;var s=t.length-1;var i=t[0];var l=t[s];var u=r.length-1;var c=r[0];var f=r[u];var $;while(a<=s&&o<=u){if(i==null){i=t[++a]}else if(l==null){l=t[--s]}else if(c==null){c=r[++o]}else if(f==null){f=r[--u]}else if(isSameVnode(i,c)){patch(i,c);i=t[++a];c=r[++o]}else if(isSameVnode(l,f)){patch(l,f);l=t[--s];f=r[--u]}else if(isSameVnode(i,f)){patch(i,f);e.insertBefore(i.$elm$,l.$elm$.nextSibling);i=t[++a];f=r[--u]}else if(isSameVnode(l,c)){patch(l,c);e.insertBefore(l.$elm$,i.$elm$);l=t[--s];c=r[++o]}else{{$=createElm(t&&t[o],n,o);c=r[++o]}if($){{i.$elm$.parentNode.insertBefore($,i.$elm$)}}}}if(a>s){addVnodes(e,r[u+1]==null?null:r[u+1].$elm$,n,r,o,u)}else if(o>u){removeVnodes(t,a,s)}};var isSameVnode=function(e,t){if(e.$tag$===t.$tag$){return true}return false};var patch=function(e,t){var n=t.$elm$=e.$elm$;var r=e.$children$;var a=t.$children$;var o=t.$text$;if(o===null){{{updateElement(e,t,isSvgMode)}}if(r!==null&&a!==null){updateChildren(n,r,t,a)}else if(a!==null){if(e.$text$!==null){n.textContent=\"\"}addVnodes(n,null,t,a,0,a.length-1)}else if(r!==null){removeVnodes(r,0,r.length-1)}}else if(e.$text$!==o){n.data=o}};var renderVdom=function(e,t){var n=e.$hostElement$;var r=e.$cmpMeta$;var a=e.$vnode$||newVNode(null,null);var o=isHost(t)?t:h(null,null,t);hostTagName=n.tagName;if(r.$attrsToReflect$){o.$attrs$=o.$attrs$||{};r.$attrsToReflect$.map((function(e){var t=e[0],r=e[1];return o.$attrs$[r]=n[t]}))}o.$tag$=null;o.$flags$|=4;e.$vnode$=o;o.$elm$=a.$elm$=n.shadowRoot||n;{scopeId=n[\"s-sc\"]}patch(a,o)};var getElement=function(e){return getHostRef(e).$hostElement$};var emitEvent=function(e,t,n){var r=plt.ce(t,n);e.dispatchEvent(r);return r};var attachToAncestor=function(e,t){if(t&&!e.$onRenderResolve$&&t[\"s-p\"]){t[\"s-p\"].push(new Promise((function(t){return e.$onRenderResolve$=t})))}};var scheduleUpdate=function(e,t){{e.$flags$|=16}if(e.$flags$&4){e.$flags$|=512;return}attachToAncestor(e,e.$ancestorComponent$);var n=function(){return dispatchHooks(e,t)};return writeTask(n)};var dispatchHooks=function(e,t){var n=createTime(\"scheduleUpdate\",e.$cmpMeta$.$tagName$);var r=e.$lazyInstance$;var a;n();return then(a,(function(){return updateComponent(e,r,t)}))};var updateComponent=function(e,t,n){return __awaiter(void 0,void 0,void 0,(function(){var r,a,o,s,i,l;return __generator(this,(function(u){r=e.$hostElement$;a=createTime(\"update\",e.$cmpMeta$.$tagName$);o=r[\"s-rc\"];if(n){attachStyles(e)}s=createTime(\"render\",e.$cmpMeta$.$tagName$);{callRender(e,t)}if(o){o.map((function(e){return e()}));r[\"s-rc\"]=undefined}s();a();{i=r[\"s-p\"];l=function(){return postUpdateComponent(e)};if(i.length===0){l()}else{Promise.all(i).then(l);e.$flags$|=4;i.length=0}}return[2]}))}))};var callRender=function(e,t,n){try{t=t.render();{e.$flags$&=~16}{e.$flags$|=2}{{{renderVdom(e,t)}}}}catch(t){consoleError(t,e.$hostElement$)}return null};var postUpdateComponent=function(e){var t=e.$cmpMeta$.$tagName$;var n=e.$hostElement$;var r=createTime(\"postUpdate\",t);var a=e.$ancestorComponent$;if(!(e.$flags$&64)){e.$flags$|=64;{addHydratedFlag(n)}r();{e.$onReadyResolve$(n);if(!a){appDidLoad()}}}else{r()}{if(e.$onRenderResolve$){e.$onRenderResolve$();e.$onRenderResolve$=undefined}if(e.$flags$&512){nextTick((function(){return scheduleUpdate(e,false)}))}e.$flags$&=~(4|512)}};var appDidLoad=function(e){{addHydratedFlag(doc.documentElement)}nextTick((function(){return emitEvent(win,\"appload\",{detail:{namespace:NAMESPACE}})}))};var safeCall=function(e,t,n){if(e&&e[t]){try{return e[t](n)}catch(e){consoleError(e)}}return undefined};var then=function(e,t){return e&&e.then?e.then(t):t()};var addHydratedFlag=function(e){return e.classList.add(\"hydrated\")};var parsePropertyValue=function(e,t){if(e!=null&&!isComplexType(e)){if(t&4){return e===\"false\"?false:e===\"\"||!!e}if(t&1){return String(e)}return e}return e};var getValue=function(e,t){return getHostRef(e).$instanceValues$.get(t)};var setValue=function(e,t,n,r){var a=getHostRef(e);var o=a.$hostElement$;var s=a.$instanceValues$.get(t);var i=a.$flags$;var l=a.$lazyInstance$;n=parsePropertyValue(n,r.$members$[t][0]);if((!(i&8)||s===undefined)&&n!==s){a.$instanceValues$.set(t,n);if(l){if(r.$watchers$&&i&128){var u=r.$watchers$[t];if(u){u.map((function(e){try{l[e](n,s,t)}catch(e){consoleError(e,o)}}))}}if((i&(2|16))===2){scheduleUpdate(a,false)}}}};var proxyComponent=function(e,t,n){if(t.$members$){if(e.watchers){t.$watchers$=e.watchers}var r=Object.entries(t.$members$);var a=e.prototype;r.map((function(e){var r=e[0],o=e[1][0];if(o&31||n&2&&o&32){Object.defineProperty(a,r,{get:function(){return getValue(this,r)},set:function(e){setValue(this,r,e,t)},configurable:true,enumerable:true})}}));if(n&1){var o=new Map;a.attributeChangedCallback=function(e,t,n){var r=this;plt.jmp((function(){var t=o.get(e);if(r.hasOwnProperty(t)){n=r[t];delete r[t]}else if(a.hasOwnProperty(t)&&typeof r[t]===\"number\"&&r[t]==n){return}r[t]=n===null&&typeof r[t]===\"boolean\"?false:n}))};e.observedAttributes=r.filter((function(e){var t=e[0],n=e[1];return n[0]&15})).map((function(e){var n=e[0],r=e[1];var a=r[1]||n;o.set(a,n);if(r[0]&512){t.$attrsToReflect$.push([n,a])}return a}))}}return e};var initializeComponent=function(e,t,n,r,a){return __awaiter(void 0,void 0,void 0,(function(){var e,r,o,s,i,l,u;return __generator(this,(function(c){switch(c.label){case 0:if(!((t.$flags$&32)===0))return[3,3];t.$flags$|=32;a=loadModule(n);if(!a.then)return[3,2];e=uniqueTime();return[4,a];case 1:a=c.sent();e();c.label=2;case 2:if(!a.isProxied){{n.$watchers$=a.watchers}proxyComponent(a,n,2);a.isProxied=true}r=createTime(\"createInstance\",n.$tagName$);{t.$flags$|=8}try{new a(t)}catch(e){consoleError(e)}{t.$flags$&=~8}{t.$flags$|=128}r();fireConnectedCallback(t.$lazyInstance$);if(a.style){o=a.style;s=getScopeId(n);if(!styles.has(s)){i=createTime(\"registerStyles\",n.$tagName$);registerStyle(s,o,!!(n.$flags$&1));i()}}c.label=3;case 3:l=t.$ancestorComponent$;u=function(){return scheduleUpdate(t,true)};if(l&&l[\"s-rc\"]){l[\"s-rc\"].push(u)}else{u()}return[2]}}))}))};var fireConnectedCallback=function(e){{safeCall(e,\"connectedCallback\")}};var connectedCallback=function(e){if((plt.$flags$&1)===0){var t=getHostRef(e);var n=t.$cmpMeta$;var r=createTime(\"connectedCallback\",n.$tagName$);if(!(t.$flags$&1)){t.$flags$|=1;{var a=e;while(a=a.parentNode||a.host){if(a[\"s-p\"]){attachToAncestor(t,t.$ancestorComponent$=a);break}}}if(n.$members$){Object.entries(n.$members$).map((function(t){var n=t[0],r=t[1][0];if(r&31&&e.hasOwnProperty(n)){var a=e[n];delete e[n];e[n]=a}}))}{initializeComponent(e,t,n)}}else{fireConnectedCallback(t.$lazyInstance$)}r()}};var disconnectedCallback=function(e){if((plt.$flags$&1)===0){var t=getHostRef(e);var n=t.$lazyInstance$;{safeCall(n,\"disconnectedCallback\")}}};var bootstrapLazy=function(e,t){if(t===void 0){t={}}var n=createTime();var r=[];var a=t.exclude||[];var o=win.customElements;var s=doc.head;var i=s.querySelector(\"meta[charset]\");var l=doc.createElement(\"style\");var u=[];var c;var f=true;Object.assign(plt,t);plt.$resourcesUrl$=new URL(t.resourcesUrl||\"./\",doc.baseURI).href;e.map((function(e){e[1].map((function(t){var n={$flags$:t[0],$tagName$:t[1],$members$:t[2],$listeners$:t[3]};{n.$members$=t[2]}{n.$attrsToReflect$=[]}{n.$watchers$={}}var s=n.$tagName$;var i=function(e){__extends(t,e);function t(t){var r=e.call(this,t)||this;t=r;registerHost(t,n);if(n.$flags$&1){{{t.attachShadow({mode:\"open\"})}}}return r}t.prototype.connectedCallback=function(){var e=this;if(c){clearTimeout(c);c=null}if(f){u.push(this)}else{plt.jmp((function(){return connectedCallback(e)}))}};t.prototype.disconnectedCallback=function(){var e=this;plt.jmp((function(){return disconnectedCallback(e)}))};t.prototype.componentOnReady=function(){return getHostRef(this).$onReadyPromise$};return t}(HTMLElement);n.$lazyBundleId$=e[0];if(!a.includes(s)&&!o.get(s)){r.push(s);o.define(s,proxyComponent(i,n,1))}}))}));{l.innerHTML=r+HYDRATED_CSS;l.setAttribute(\"data-styles\",\"\");s.insertBefore(l,i?i.nextSibling:s.firstChild)}f=false;if(u.length){u.map((function(e){return e.connectedCallback()}))}else{{plt.jmp((function(){return c=setTimeout(appDidLoad,30)}))}}n()};var getAssetPath=function(e){var t=new URL(e,plt.$resourcesUrl$);return t.origin!==win.location.origin?t.href:t.pathname};var hostRefs=new WeakMap;var getHostRef=function(e){return hostRefs.get(e)};var registerInstance=function(e,t){return hostRefs.set(t.$lazyInstance$=e,t)};var registerHost=function(e,t){var n={$flags$:0,$hostElement$:e,$cmpMeta$:t,$instanceValues$:new Map};{n.$onReadyPromise$=new Promise((function(e){return n.$onReadyResolve$=e}));e[\"s-p\"]=[];e[\"s-rc\"]=[]}return hostRefs.set(e,n)};var isMemberInElement=function(e,t){return t in e};var consoleError=function(e,t){return(0,console.error)(e,t)};var cmpModules=new Map;var loadModule=function(e,t,n){var r=e.$tagName$.replace(/-/g,\"_\");var a=e.$lazyBundleId$;var o=cmpModules.get(a);if(o){return o[r]}return import(\"./\"+a+\".entry.js\"+\"\").then((function(e){{cmpModules.set(a,e)}return e[r]}),consoleError)};var styles=new Map;var queueDomReads=[];var queueDomWrites=[];var queueTask=function(e,t){return function(n){e.push(n);if(!queuePending){queuePending=true;if(t&&plt.$flags$&4){nextTick(flush)}else{plt.raf(flush)}}}};var consume=function(e){for(var t=0;t<e.length;t++){try{e[t](performance.now())}catch(e){consoleError(e)}}e.length=0};var flush=function(){consume(queueDomReads);{consume(queueDomWrites);if(queuePending=queueDomReads.length>0){plt.raf(flush)}}};var nextTick=function(e){return promiseResolve().then(e)};var writeTask=queueTask(queueDomWrites,true);export{Host as H,getElement as a,bootstrapLazy as b,getAssetPath as g,h,promiseResolve as p,registerInstance as r};","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n    var i      = 0,\n        length = collection.length,\n        cont;\n\n    for(i; i < length; i++) {\n        cont = fn(collection[i], i);\n        if(cont === false) {\n            break; //allow early exit\n        }\n    }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n    return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n    return typeof target === 'function';\n}\n\nmodule.exports = {\n    isFunction : isFunction,\n    isArray : isArray,\n    each : each\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.formatShortMonth = exports.formatMonth = void 0;\nexports.getFormatter = getFormatter;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar formatterCache = new Map();\n\nfunction getFormatter(options) {\n  return function (locale, date) {\n    var localeWithDefault = locale || (0, _getUserLocale[\"default\"])();\n\n    if (!formatterCache.has(localeWithDefault)) {\n      formatterCache.set(localeWithDefault, new Map());\n    }\n\n    var formatterCacheLocale = formatterCache.get(localeWithDefault);\n\n    if (!formatterCacheLocale.has(options)) {\n      formatterCacheLocale.set(options, new Intl.DateTimeFormat(localeWithDefault, options).format);\n    }\n\n    return formatterCacheLocale.get(options)(date);\n  };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\n\n\nfunction toSafeHour(date) {\n  var safeDate = new Date(date);\n  return new Date(safeDate.setHours(12));\n}\n\nfunction getSafeFormatter(options) {\n  return function (locale, date) {\n    return getFormatter(options)(locale, toSafeHour(date));\n  };\n}\n\nvar formatMonthOptions = {\n  month: 'long'\n};\nvar formatShortMonthOptions = {\n  month: 'short'\n};\nvar formatMonth = getSafeFormatter(formatMonthOptions);\nexports.formatMonth = formatMonth;\nvar formatShortMonth = getSafeFormatter(formatShortMonthOptions);\nexports.formatShortMonth = formatShortMonth;","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L  M  Q  H\r\n  1, 1, 1, 1,\r\n  1, 1, 1, 1,\r\n  1, 1, 2, 2,\r\n  1, 2, 2, 4,\r\n  1, 2, 4, 4,\r\n  2, 4, 4, 4,\r\n  2, 4, 6, 5,\r\n  2, 4, 6, 6,\r\n  2, 5, 8, 8,\r\n  4, 5, 8, 8,\r\n  4, 5, 8, 11,\r\n  4, 8, 10, 11,\r\n  4, 9, 12, 16,\r\n  4, 9, 16, 16,\r\n  6, 10, 12, 18,\r\n  6, 10, 17, 16,\r\n  6, 11, 16, 19,\r\n  6, 13, 18, 21,\r\n  7, 14, 21, 25,\r\n  8, 16, 20, 25,\r\n  8, 17, 23, 25,\r\n  9, 17, 23, 34,\r\n  9, 18, 25, 30,\r\n  10, 20, 27, 32,\r\n  12, 21, 29, 35,\r\n  12, 23, 34, 37,\r\n  12, 25, 34, 40,\r\n  13, 26, 35, 42,\r\n  14, 28, 38, 45,\r\n  15, 29, 40, 48,\r\n  16, 31, 43, 51,\r\n  17, 33, 45, 54,\r\n  18, 35, 48, 57,\r\n  19, 37, 51, 60,\r\n  19, 38, 53, 63,\r\n  20, 40, 56, 66,\r\n  21, 43, 59, 70,\r\n  22, 45, 62, 74,\r\n  24, 47, 65, 77,\r\n  25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L  M  Q  H\r\n  7, 10, 13, 17,\r\n  10, 16, 22, 28,\r\n  15, 26, 36, 44,\r\n  20, 36, 52, 64,\r\n  26, 48, 72, 88,\r\n  36, 64, 96, 112,\r\n  40, 72, 108, 130,\r\n  48, 88, 132, 156,\r\n  60, 110, 160, 192,\r\n  72, 130, 192, 224,\r\n  80, 150, 224, 264,\r\n  96, 176, 260, 308,\r\n  104, 198, 288, 352,\r\n  120, 216, 320, 384,\r\n  132, 240, 360, 432,\r\n  144, 280, 408, 480,\r\n  168, 308, 448, 532,\r\n  180, 338, 504, 588,\r\n  196, 364, 546, 650,\r\n  224, 416, 600, 700,\r\n  224, 442, 644, 750,\r\n  252, 476, 690, 816,\r\n  270, 504, 750, 900,\r\n  300, 560, 810, 960,\r\n  312, 588, 870, 1050,\r\n  336, 644, 952, 1110,\r\n  360, 700, 1020, 1200,\r\n  390, 728, 1050, 1260,\r\n  420, 784, 1140, 1350,\r\n  450, 812, 1200, 1440,\r\n  480, 868, 1290, 1530,\r\n  510, 924, 1350, 1620,\r\n  540, 980, 1440, 1710,\r\n  570, 1036, 1530, 1800,\r\n  570, 1064, 1590, 1890,\r\n  600, 1120, 1680, 1980,\r\n  630, 1204, 1770, 2100,\r\n  660, 1260, 1860, 2220,\r\n  720, 1316, 1950, 2310,\r\n  750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param  {Number} version              QR Code version\r\n * @param  {Number} errorCorrectionLevel Error correction level\r\n * @return {Number}                      Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n  switch (errorCorrectionLevel) {\r\n    case ECLevel.L:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n    case ECLevel.M:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n    case ECLevel.Q:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n    case ECLevel.H:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n    default:\r\n      return undefined\r\n  }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param  {Number} version              QR Code version\r\n * @param  {Number} errorCorrectionLevel Error correction level\r\n * @return {Number}                      Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n  switch (errorCorrectionLevel) {\r\n    case ECLevel.L:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n    case ECLevel.M:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n    case ECLevel.Q:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n    case ECLevel.H:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n    default:\r\n      return undefined\r\n  }\r\n}\r\n","/**\n * Check if QR Code version is valid\n *\n * @param  {Number}  version QR Code version\n * @return {Boolean}         true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n  return !isNaN(version) && version >= 1 && version <= 40\n}\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n  '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n  '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n  '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n  return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n  return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n  return TEST_ALPHANUMERIC.test(str)\n}\n","function hex2rgba (hex) {\n  if (typeof hex === 'number') {\n    hex = hex.toString()\n  }\n\n  if (typeof hex !== 'string') {\n    throw new Error('Color should be defined as hex string')\n  }\n\n  let hexCode = hex.slice().replace('#', '').split('')\n  if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n    throw new Error('Invalid hex color: ' + hex)\n  }\n\n  // Convert from short to long form (fff -> ffffff)\n  if (hexCode.length === 3 || hexCode.length === 4) {\n    hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n      return [c, c]\n    }))\n  }\n\n  // Add default alpha value\n  if (hexCode.length === 6) hexCode.push('F', 'F')\n\n  const hexValue = parseInt(hexCode.join(''), 16)\n\n  return {\n    r: (hexValue >> 24) & 255,\n    g: (hexValue >> 16) & 255,\n    b: (hexValue >> 8) & 255,\n    a: hexValue & 255,\n    hex: '#' + hexCode.slice(0, 6).join('')\n  }\n}\n\nexports.getOptions = function getOptions (options) {\n  if (!options) options = {}\n  if (!options.color) options.color = {}\n\n  const margin = typeof options.margin === 'undefined' ||\n    options.margin === null ||\n    options.margin < 0\n    ? 4\n    : options.margin\n\n  const width = options.width && options.width >= 21 ? options.width : undefined\n  const scale = options.scale || 4\n\n  return {\n    width: width,\n    scale: width ? 4 : scale,\n    margin: margin,\n    color: {\n      dark: hex2rgba(options.color.dark || '#000000ff'),\n      light: hex2rgba(options.color.light || '#ffffffff')\n    },\n    type: options.type,\n    rendererOpts: options.rendererOpts || {}\n  }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n  return opts.width && opts.width >= qrSize + opts.margin * 2\n    ? opts.width / (qrSize + opts.margin * 2)\n    : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n  const scale = exports.getScale(qrSize, opts)\n  return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n  const size = qr.modules.size\n  const data = qr.modules.data\n  const scale = exports.getScale(size, opts)\n  const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n  const scaledMargin = opts.margin * scale\n  const palette = [opts.color.light, opts.color.dark]\n\n  for (let i = 0; i < symbolSize; i++) {\n    for (let j = 0; j < symbolSize; j++) {\n      let posDst = (i * symbolSize + j) * 4\n      let pxColor = opts.color.light\n\n      if (i >= scaledMargin && j >= scaledMargin &&\n        i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n        const iSrc = Math.floor((i - scaledMargin) / scale)\n        const jSrc = Math.floor((j - scaledMargin) / scale)\n        pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n      }\n\n      imgData[posDst++] = pxColor.r\n      imgData[posDst++] = pxColor.g\n      imgData[posDst++] = pxColor.b\n      imgData[posDst] = pxColor.a\n    }\n  }\n}\n","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default 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}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import { IonRouteProps } from '@ionic/react';\nimport React from 'react';\nimport { Route } from 'react-router';\n\nexport class IonRouteInner extends React.PureComponent<IonRouteProps> {\n  render() {\n    return (\n      <Route\n        path={this.props.path}\n        exact={this.props.exact}\n        render={this.props.render}\n        computedMatch={(this.props as any).computedMatch}\n      />\n    );\n  }\n}\n","import {\n  IonRoute,\n  RouteInfo,\n  ViewItem,\n  ViewLifeCycleManager,\n  ViewStacks,\n  generateId,\n} from '@ionic/react';\nimport React from 'react';\nimport { matchPath } from 'react-router';\n\nexport class ReactRouterViewStack extends ViewStacks {\n  constructor() {\n    super();\n    this.createViewItem = this.createViewItem.bind(this);\n    this.findViewItemByRouteInfo = this.findViewItemByRouteInfo.bind(this);\n    this.findLeavingViewItemByRouteInfo = this.findLeavingViewItemByRouteInfo.bind(this);\n    this.getChildrenToRender = this.getChildrenToRender.bind(this);\n    this.findViewItemByPathname = this.findViewItemByPathname.bind(this);\n  }\n\n  createViewItem(\n    outletId: string,\n    reactElement: React.ReactElement,\n    routeInfo: RouteInfo,\n    page?: HTMLElement\n  ) {\n    const viewItem: ViewItem = {\n      id: generateId('viewItem'),\n      outletId,\n      ionPageElement: page,\n      reactElement,\n      mount: true,\n      ionRoute: false,\n    };\n\n    const matchProps = {\n      exact: reactElement.props.exact,\n      path: reactElement.props.path || reactElement.props.from,\n      component: reactElement.props.component,\n    };\n\n    const match = matchPath(routeInfo.pathname, matchProps);\n\n    if (reactElement.type === IonRoute) {\n      viewItem.ionRoute = true;\n      viewItem.disableIonPageManagement = reactElement.props.disableIonPageManagement;\n    }\n\n    viewItem.routeData = {\n      match,\n      childProps: reactElement.props,\n    };\n\n    return viewItem;\n  }\n\n  getChildrenToRender(outletId: string, ionRouterOutlet: React.ReactElement, routeInfo: RouteInfo) {\n    const viewItems = this.getViewItemsForOutlet(outletId);\n\n    // Sync latest routes with viewItems\n    React.Children.forEach(ionRouterOutlet.props.children, (child: React.ReactElement) => {\n      const viewItem = viewItems.find((v) => {\n        return matchComponent(child, v.routeData.childProps.path || v.routeData.childProps.from);\n      });\n      if (viewItem) {\n        viewItem.reactElement = child;\n      }\n    });\n\n    const children = viewItems.map((viewItem) => {\n      let clonedChild;\n      if (viewItem.ionRoute && !viewItem.disableIonPageManagement) {\n        clonedChild = (\n          <ViewLifeCycleManager\n            key={`view-${viewItem.id}`}\n            mount={viewItem.mount}\n            removeView={() => this.remove(viewItem)}\n          >\n            {React.cloneElement(viewItem.reactElement, {\n              computedMatch: viewItem.routeData.match,\n            })}\n          </ViewLifeCycleManager>\n        );\n      } else {\n        const match = matchComponent(viewItem.reactElement, routeInfo.pathname);\n        clonedChild = (\n          <ViewLifeCycleManager\n            key={`view-${viewItem.id}`}\n            mount={viewItem.mount}\n            removeView={() => this.remove(viewItem)}\n          >\n            {React.cloneElement(viewItem.reactElement, {\n              computedMatch: viewItem.routeData.match,\n            })}\n          </ViewLifeCycleManager>\n        );\n\n        if (!match && viewItem.routeData.match) {\n          viewItem.routeData.match = undefined;\n          viewItem.mount = false;\n        }\n      }\n\n      return clonedChild;\n    });\n    return children;\n  }\n\n  findViewItemByRouteInfo(routeInfo: RouteInfo, outletId?: string) {\n    const { viewItem, match } = this.findViewItemByPath(routeInfo.pathname, outletId);\n    if (viewItem && match) {\n      viewItem.routeData.match = match;\n    }\n    return viewItem;\n  }\n\n  findLeavingViewItemByRouteInfo(routeInfo: RouteInfo, outletId?: string, mustBeIonRoute = true) {\n    const { viewItem } = this.findViewItemByPath(\n      routeInfo.lastPathname!,\n      outletId,\n      false,\n      mustBeIonRoute\n    );\n    return viewItem;\n  }\n\n  findViewItemByPathname(pathname: string, outletId?: string) {\n    const { viewItem } = this.findViewItemByPath(pathname, outletId);\n    return viewItem;\n  }\n\n  private findViewItemByPath(\n    pathname: string,\n    outletId?: string,\n    forceExact?: boolean,\n    mustBeIonRoute?: boolean\n  ) {\n    let viewItem: ViewItem | undefined;\n    let match: ReturnType<typeof matchPath> | undefined;\n    let viewStack: ViewItem[];\n\n    if (outletId) {\n      viewStack = this.getViewItemsForOutlet(outletId);\n      viewStack.some(matchView);\n      if (!viewItem) {\n        viewStack.some(matchDefaultRoute);\n      }\n    } else {\n      const viewItems = this.getAllViewItems();\n      viewItems.some(matchView);\n      if (!viewItem) {\n        viewItems.some(matchDefaultRoute);\n      }\n    }\n\n    return { viewItem, match };\n\n    function matchView(v: ViewItem) {\n      if (mustBeIonRoute && !v.ionRoute) {\n        return false;\n      }\n      const matchProps = {\n        exact: forceExact ? true : v.routeData.childProps.exact,\n        path: v.routeData.childProps.path || v.routeData.childProps.from,\n        component: v.routeData.childProps.component,\n      };\n      const myMatch = matchPath(pathname, matchProps);\n      if (myMatch) {\n        viewItem = v;\n        match = myMatch;\n        return true;\n      }\n      return false;\n    }\n\n    function matchDefaultRoute(v: ViewItem) {\n      // try to find a route that doesn't have a path or from prop, that will be our default route\n      if (!v.routeData.childProps.path && !v.routeData.childProps.from) {\n        match = {\n          path: pathname,\n          url: pathname,\n          isExact: true,\n          params: {},\n        };\n        viewItem = v;\n        return true;\n      }\n      return false;\n    }\n  }\n}\n\nfunction matchComponent(node: React.ReactElement, pathname: string, forceExact?: boolean) {\n  const matchProps = {\n    exact: forceExact ? true : node.props.exact,\n    path: node.props.path || node.props.from,\n    component: node.props.component,\n  };\n  const match = matchPath(pathname, matchProps);\n\n  return match;\n}\n","export function clonePageElement(leavingViewHtml: string | HTMLElement) {\n  let html: string;\n  if (typeof leavingViewHtml === 'string') {\n    html = leavingViewHtml;\n  } else {\n    html = leavingViewHtml.outerHTML;\n  }\n  if (document) {\n    const newEl = document.createElement('div');\n    newEl.innerHTML = html;\n    newEl.style.zIndex = '';\n    // Remove an existing back button so the new element doesn't get two of them\n    const ionBackButton = newEl.getElementsByTagName('ion-back-button');\n    if (ionBackButton[0]) {\n      ionBackButton[0].remove();\n    }\n    return newEl.firstChild as HTMLElement;\n  }\n  return undefined;\n}\n","import {\n  RouteInfo,\n  RouteManagerContext,\n  StackContext,\n  StackContextState,\n  ViewItem,\n  generateId,\n  getConfig,\n} from '@ionic/react';\nimport React from 'react';\nimport { matchPath } from 'react-router-dom';\n\nimport { clonePageElement } from './clonePageElement';\n\ninterface StackManagerProps {\n  routeInfo: RouteInfo;\n}\n\ninterface StackManagerState {}\n\nexport class StackManager extends React.PureComponent<StackManagerProps, StackManagerState> {\n  id: string;\n  context!: React.ContextType<typeof RouteManagerContext>;\n  ionRouterOutlet?: React.ReactElement;\n  routerOutletElement: HTMLIonRouterOutletElement | undefined;\n\n  stackContextValue: StackContextState = {\n    registerIonPage: this.registerIonPage.bind(this),\n    isInOutlet: () => true,\n  };\n\n  constructor(props: StackManagerProps) {\n    super(props);\n    this.registerIonPage = this.registerIonPage.bind(this);\n    this.transitionPage = this.transitionPage.bind(this);\n    this.handlePageTransition = this.handlePageTransition.bind(this);\n    this.id = generateId('routerOutlet');\n  }\n\n  componentDidMount() {\n    if (this.routerOutletElement) {\n      this.setupRouterOutlet(this.routerOutletElement);\n      // console.log(`SM Mount - ${this.routerOutletElement.id} (${this.id})`);\n      this.handlePageTransition(this.props.routeInfo);\n    }\n  }\n\n  componentDidUpdate(prevProps: StackManagerProps) {\n    if (this.props.routeInfo.pathname !== prevProps.routeInfo.pathname) {\n      this.handlePageTransition(this.props.routeInfo);\n    }\n  }\n\n  componentWillUnmount() {\n    // console.log(`SM UNMount - ${(this.routerOutletElement?.id as any).id} (${this.id})`);\n    this.context.clearOutlet(this.id);\n  }\n\n  async handlePageTransition(routeInfo: RouteInfo) {\n    // If routerOutlet isn't quite ready, give it another try in a moment\n    if (!this.routerOutletElement || !this.routerOutletElement.commit) {\n      setTimeout(() => this.handlePageTransition(routeInfo), 10);\n    } else {\n      let enteringViewItem = this.context.findViewItemByRouteInfo(routeInfo, this.id);\n      let leavingViewItem = this.context.findLeavingViewItemByRouteInfo(routeInfo, this.id);\n\n      if (!leavingViewItem && routeInfo.prevRouteLastPathname) {\n        leavingViewItem = this.context.findViewItemByPathname(\n          routeInfo.prevRouteLastPathname,\n          this.id\n        );\n      }\n\n      // Check if leavingViewItem should be unmounted\n      if (leavingViewItem) {\n        if (routeInfo.routeAction === 'replace') {\n          leavingViewItem.mount = false;\n        } else if (!(routeInfo.routeAction === 'push' && routeInfo.routeDirection === 'forward')) {\n          if (routeInfo.routeDirection !== 'none' && enteringViewItem !== leavingViewItem) {\n            leavingViewItem.mount = false;\n          }\n        } else if (routeInfo.routeOptions?.unmount) {\n          leavingViewItem.mount = false;\n        }\n      }\n\n      const enteringRoute = matchRoute(\n        this.ionRouterOutlet?.props.children,\n        routeInfo\n      ) as React.ReactElement;\n      if (enteringViewItem) {\n        enteringViewItem.reactElement = enteringRoute;\n      }\n      if (!enteringViewItem) {\n        if (enteringRoute) {\n          enteringViewItem = this.context.createViewItem(this.id, enteringRoute, routeInfo);\n          this.context.addViewItem(enteringViewItem);\n        }\n      }\n      if (enteringViewItem && enteringViewItem.ionPageElement) {\n        this.transitionPage(routeInfo, enteringViewItem, leavingViewItem);\n      } else if (leavingViewItem && !enteringRoute && !enteringViewItem) {\n        // If we have a leavingView but no entering view/route, we are probably leaving to\n        // another outlet, so hide this leavingView. We do it in a timeout to give time for a\n        // transition to finish.\n        // setTimeout(() => {\n        if (leavingViewItem.ionPageElement) {\n          leavingViewItem.ionPageElement.classList.add('ion-page-hidden');\n          leavingViewItem.ionPageElement.setAttribute('aria-hidden', 'true');\n        }\n        // }, 250);\n      }\n\n      this.forceUpdate();\n    }\n  }\n\n  registerIonPage(page: HTMLElement, routeInfo: RouteInfo) {\n    const foundView = this.context.findViewItemByRouteInfo(routeInfo, this.id);\n    if (foundView) {\n      foundView.ionPageElement = page;\n      foundView.ionRoute = true;\n    }\n    this.handlePageTransition(routeInfo);\n  }\n\n  async setupRouterOutlet(routerOutlet: HTMLIonRouterOutletElement) {\n    const canStart = () => {\n      const config = getConfig();\n      const swipeEnabled = config && config.get('swipeBackEnabled', routerOutlet.mode === 'ios');\n      if (swipeEnabled) {\n        return this.context.canGoBack();\n      } else {\n        return false;\n      }\n    };\n\n    const onStart = () => {\n      this.context.goBack();\n    };\n    routerOutlet.swipeHandler = {\n      canStart,\n      onStart,\n      onEnd: (_shouldContinue) => true,\n    };\n  }\n\n  async transitionPage(\n    routeInfo: RouteInfo,\n    enteringViewItem: ViewItem,\n    leavingViewItem?: ViewItem\n  ) {\n    const routerOutlet = this.routerOutletElement!;\n\n    const direction =\n      routeInfo.routeDirection === 'none' || routeInfo.routeDirection === 'root'\n        ? undefined\n        : routeInfo.routeDirection;\n\n    if (enteringViewItem && enteringViewItem.ionPageElement && this.routerOutletElement) {\n      if (\n        leavingViewItem &&\n        leavingViewItem.ionPageElement &&\n        enteringViewItem === leavingViewItem\n      ) {\n        // If a page is transitioning to another version of itself\n        // we clone it so we can have an animation to show\n\n        const match = matchComponent(leavingViewItem.reactElement, routeInfo.pathname, true);\n        if (match) {\n          const newLeavingElement = clonePageElement(leavingViewItem.ionPageElement.outerHTML);\n          if (newLeavingElement) {\n            this.routerOutletElement.appendChild(newLeavingElement);\n            await runCommit(enteringViewItem.ionPageElement, newLeavingElement);\n            this.routerOutletElement.removeChild(newLeavingElement);\n          }\n        } else {\n          await runCommit(enteringViewItem.ionPageElement, undefined);\n        }\n      } else {\n        await runCommit(enteringViewItem.ionPageElement, leavingViewItem?.ionPageElement);\n        if (leavingViewItem && leavingViewItem.ionPageElement) {\n          leavingViewItem.ionPageElement.classList.add('ion-page-hidden');\n          leavingViewItem.ionPageElement.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n\n    async function runCommit(enteringEl: HTMLElement, leavingEl?: HTMLElement) {\n      enteringEl.classList.add('ion-page');\n      enteringEl.classList.add('ion-page-invisible');\n\n      await routerOutlet.commit(enteringEl, leavingEl, {\n        deepWait: true,\n        duration: direction === undefined ? 0 : undefined,\n        direction: direction as any,\n        showGoBack: !!routeInfo.pushedByRoute,\n        progressAnimation: false,\n        animationBuilder: routeInfo.routeAnimation,\n      });\n    }\n  }\n\n  render() {\n    const { children } = this.props;\n    const ionRouterOutlet = React.Children.only(children) as React.ReactElement;\n    this.ionRouterOutlet = ionRouterOutlet;\n\n    const components = this.context.getChildrenToRender(\n      this.id,\n      this.ionRouterOutlet,\n      this.props.routeInfo,\n      () => {\n        this.forceUpdate();\n      }\n    );\n\n    return (\n      <StackContext.Provider value={this.stackContextValue}>\n        {React.cloneElement(\n          ionRouterOutlet as any,\n          {\n            ref: (node: HTMLIonRouterOutletElement) => {\n              if (ionRouterOutlet.props.setRef) {\n                ionRouterOutlet.props.setRef(node);\n              }\n              if (ionRouterOutlet.props.forwardedRef) {\n                ionRouterOutlet.props.forwardedRef.current = node;\n              }\n              this.routerOutletElement = node;\n              const { ref } = ionRouterOutlet as any;\n              if (typeof ref === 'function') {\n                ref(node);\n              }\n            },\n          },\n          components\n        )}\n      </StackContext.Provider>\n    );\n  }\n\n  static get contextType() {\n    return RouteManagerContext;\n  }\n}\n\nexport default StackManager;\n\nfunction matchRoute(node: React.ReactNode, routeInfo: RouteInfo) {\n  let matchedNode: React.ReactNode;\n  React.Children.forEach(node as React.ReactElement, (child: React.ReactElement) => {\n    const matchProps = {\n      exact: child.props.exact,\n      path: child.props.path || child.props.from,\n      component: child.props.component,\n    };\n    const match = matchPath(routeInfo.pathname, matchProps);\n    if (match) {\n      matchedNode = child;\n    }\n  });\n\n  if (matchedNode) {\n    return matchedNode;\n  }\n  // If we haven't found a node\n  // try to find one that doesn't have a path or from prop, that will be our not found route\n  React.Children.forEach(node as React.ReactElement, (child: React.ReactElement) => {\n    if (!(child.props.path || child.props.from)) {\n      matchedNode = child;\n    }\n  });\n\n  return matchedNode;\n}\n\nfunction matchComponent(node: React.ReactElement, pathname: string, forceExact?: boolean) {\n  const matchProps = {\n    exact: forceExact ? true : node.props.exact,\n    path: node.props.path || node.props.from,\n    component: node.props.component,\n  };\n  const match = matchPath(pathname, matchProps);\n\n  return match;\n}\n","import {\n  AnimationBuilder,\n  LocationHistory,\n  NavManager,\n  RouteAction,\n  RouteInfo,\n  RouteManagerContext,\n  RouteManagerContextState,\n  RouterDirection,\n  ViewItem,\n  generateId,\n  getConfig,\n} from '@ionic/react';\nimport { Action as HistoryAction, Location as HistoryLocation } from 'history';\nimport React from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { IonRouteInner } from './IonRouteInner';\nimport { ReactRouterViewStack } from './ReactRouterViewStack';\nimport StackManager from './StackManager';\n\nexport interface LocationState {\n  direction?: RouterDirection;\n  routerOptions?: { as?: string; unmount?: boolean };\n}\n\ninterface IonRouteProps extends RouteComponentProps<{}, {}, LocationState> {\n  registerHistoryListener: (\n    cb: (location: HistoryLocation<any>, action: HistoryAction) => void\n  ) => void;\n}\n\ninterface IonRouteState {\n  routeInfo: RouteInfo;\n}\n\nclass IonRouterInner extends React.PureComponent<IonRouteProps, IonRouteState> {\n  currentTab?: string;\n  exitViewFromOtherOutletHandlers: ((pathname: string) => ViewItem | undefined)[] = [];\n  incomingRouteParams?: Partial<RouteInfo>;\n  locationHistory = new LocationHistory();\n  viewStack = new ReactRouterViewStack();\n  routeMangerContextState: RouteManagerContextState = {\n    canGoBack: () => this.locationHistory.canGoBack(),\n    clearOutlet: this.viewStack.clear,\n    findViewItemByPathname: this.viewStack.findViewItemByPathname,\n    getChildrenToRender: this.viewStack.getChildrenToRender,\n    goBack: () => this.handleNavigateBack(),\n    createViewItem: this.viewStack.createViewItem,\n    findViewItemByRouteInfo: this.viewStack.findViewItemByRouteInfo,\n    findLeavingViewItemByRouteInfo: this.viewStack.findLeavingViewItemByRouteInfo,\n    addViewItem: this.viewStack.add,\n    unMountViewItem: this.viewStack.remove,\n  };\n\n  constructor(props: IonRouteProps) {\n    super(props);\n\n    const routeInfo = {\n      id: generateId('routeInfo'),\n      pathname: this.props.location.pathname,\n      search: this.props.location.search,\n    };\n\n    this.locationHistory.add(routeInfo);\n    this.handleChangeTab = this.handleChangeTab.bind(this);\n    this.handleResetTab = this.handleResetTab.bind(this);\n    this.handleNativeBack = this.handleNativeBack.bind(this);\n    this.handleNavigate = this.handleNavigate.bind(this);\n    this.handleNavigateBack = this.handleNavigateBack.bind(this);\n    this.props.registerHistoryListener(this.handleHistoryChange.bind(this));\n    this.handleSetCurrentTab = this.handleSetCurrentTab.bind(this);\n\n    this.state = {\n      routeInfo,\n    };\n  }\n\n  handleChangeTab(tab: string, path?: string, routeOptions?: any) {\n    if (!path) { return; }\n\n    const routeInfo = this.locationHistory.getCurrentRouteInfoForTab(tab);\n    const [pathname, search] = path.split('?');\n    if (routeInfo) {\n      this.incomingRouteParams = { ...routeInfo, routeAction: 'push', routeDirection: 'none' };\n      if (routeInfo.pathname === pathname) {\n        this.incomingRouteParams.routeOptions = routeOptions;\n        this.props.history.push(routeInfo.pathname + (routeInfo.search || ''));\n      } else {\n        this.incomingRouteParams.pathname = pathname;\n        this.incomingRouteParams.search = search ? '?' + search : undefined;\n        this.incomingRouteParams.routeOptions = routeOptions;\n        this.props.history.push(pathname + (search ? '?' + search : ''));\n      }\n    } else {\n      this.handleNavigate(pathname, 'push', 'none', undefined, routeOptions, tab);\n    }\n  }\n\n  handleHistoryChange(location: HistoryLocation<LocationState>, action: HistoryAction) {\n    let leavingLocationInfo: RouteInfo;\n    if (this.incomingRouteParams) {\n      if (this.incomingRouteParams.routeAction === 'replace') {\n        leavingLocationInfo = this.locationHistory.previous();\n      } else {\n        leavingLocationInfo = this.locationHistory.current();\n      }\n    } else {\n      leavingLocationInfo = this.locationHistory.current();\n    }\n\n    const leavingUrl = leavingLocationInfo.pathname + leavingLocationInfo.search;\n    if (leavingUrl !== location.pathname) {\n      if (!this.incomingRouteParams) {\n        if (action === 'REPLACE') {\n          this.incomingRouteParams = {\n            routeAction: 'replace',\n            routeDirection: 'none',\n            tab: this.currentTab, // TODO this isn't legit if replacing to a page that is not in the tabs\n          };\n        }\n        if (action === 'POP') {\n          const currentRoute = this.locationHistory.current();\n          if (currentRoute && currentRoute.pushedByRoute) {\n            const prevInfo = this.locationHistory.findLastLocation(currentRoute);\n            this.incomingRouteParams = { ...prevInfo, routeAction: 'pop', routeDirection: 'back' };\n          } else {\n            this.incomingRouteParams = {\n              routeAction: 'pop',\n              routeDirection: 'none',\n              tab: this.currentTab,\n            };\n          }\n        }\n        if (!this.incomingRouteParams) {\n          this.incomingRouteParams = {\n            routeAction: 'push',\n            routeDirection: location.state?.direction || 'forward',\n            routeOptions: location.state?.routerOptions,\n            tab: this.currentTab,\n          };\n        }\n      }\n\n      let routeInfo: RouteInfo;\n\n      if (this.incomingRouteParams?.id) {\n        routeInfo = {\n          ...(this.incomingRouteParams as RouteInfo),\n          lastPathname: leavingLocationInfo.pathname,\n        };\n        this.locationHistory.add(routeInfo);\n      } else {\n        const isPushed =\n          this.incomingRouteParams.routeAction === 'push' &&\n          this.incomingRouteParams.routeDirection === 'forward';\n        routeInfo = {\n          id: generateId('routeInfo'),\n          ...this.incomingRouteParams,\n          lastPathname: leavingLocationInfo.pathname,\n          pathname: location.pathname,\n          search: location.search,\n          params: this.props.match.params,\n          prevRouteLastPathname: leavingLocationInfo.lastPathname,\n        };\n        if (isPushed) {\n          routeInfo.tab = leavingLocationInfo.tab;\n          routeInfo.pushedByRoute = leavingLocationInfo.pathname;\n        } else if (routeInfo.routeAction === 'pop') {\n          const r = this.locationHistory.findLastLocation(routeInfo);\n          routeInfo.pushedByRoute = r?.pushedByRoute;\n        } else if (routeInfo.routeAction === 'push' && routeInfo.tab !== leavingLocationInfo.tab) {\n          // If we are switching tabs grab the last route info for the tab and use its pushedByRoute\n          const lastRoute = this.locationHistory.getCurrentRouteInfoForTab(routeInfo.tab);\n          routeInfo.pushedByRoute = lastRoute?.pushedByRoute;\n        } else if (routeInfo.routeAction === 'replace') {\n          // Make sure to set the lastPathname, etc.. to the current route so the page transitions out\n          const currentRouteInfo = this.locationHistory.current();\n\n          /**\n           * If going from /home to /child, then replacing from\n           * /child to /home, we don't want the route info to\n           * say that /home was pushed by /home which is not correct.\n           */\n          const currentPushedBy = currentRouteInfo?.pushedByRoute;\n          const pushedByRoute = (currentPushedBy !== undefined && currentPushedBy !== routeInfo.pathname) ? currentPushedBy : routeInfo.pushedByRoute;\n\n          routeInfo.lastPathname = currentRouteInfo?.pathname || routeInfo.lastPathname;\n          routeInfo.prevRouteLastPathname = currentRouteInfo?.lastPathname;\n          routeInfo.pushedByRoute = pushedByRoute;\n          routeInfo.routeDirection = currentRouteInfo?.routeDirection || routeInfo.routeDirection;\n          routeInfo.routeAnimation = currentRouteInfo?.routeAnimation || routeInfo.routeAnimation;\n        }\n\n        this.locationHistory.add(routeInfo);\n      }\n\n      this.setState({\n        routeInfo,\n      });\n    }\n\n    this.incomingRouteParams = undefined;\n  }\n\n  /**\n   * history@4.x uses goBack(), history@5.x uses back()\n   * TODO: If support for React Router <=5 is dropped\n   * this logic is no longer needed. We can just\n   * assume back() is available.\n   */\n  handleNativeBack() {\n    const history = this.props.history as any;\n    const goBack = history.goBack || history.back;\n    goBack();\n  }\n\n  handleNavigate(\n    path: string,\n    routeAction: RouteAction,\n    routeDirection?: RouterDirection,\n    routeAnimation?: AnimationBuilder,\n    routeOptions?: any,\n    tab?: string\n  ) {\n    this.incomingRouteParams = Object.assign(this.incomingRouteParams || {}, {\n      routeAction,\n      routeDirection,\n      routeOptions,\n      routeAnimation,\n      tab,\n    });\n\n    if (routeAction === 'push') {\n      this.props.history.push(path);\n    } else {\n      this.props.history.replace(path);\n    }\n  }\n\n  handleNavigateBack(defaultHref: string | RouteInfo = '/', routeAnimation?: AnimationBuilder) {\n    const config = getConfig();\n    defaultHref = defaultHref ? defaultHref : config && config.get('backButtonDefaultHref' as any);\n    const routeInfo = this.locationHistory.current();\n    if (routeInfo && routeInfo.pushedByRoute) {\n      const prevInfo = this.locationHistory.findLastLocation(routeInfo);\n      if (prevInfo) {\n        this.incomingRouteParams = {\n          ...prevInfo,\n          routeAction: 'pop',\n          routeDirection: 'back',\n          routeAnimation: routeAnimation || routeInfo.routeAnimation,\n        };\n        if (\n          routeInfo.lastPathname === routeInfo.pushedByRoute ||\n          (\n            /**\n             * We need to exclude tab switches/tab\n             * context changes here because tabbed\n             * navigation is not linear, but router.back()\n             * will go back in a linear fashion.\n             */\n            prevInfo.pathname === routeInfo.pushedByRoute &&\n            routeInfo.tab === '' && prevInfo.tab === ''\n          )\n        ) {\n          /**\n           * history@4.x uses goBack(), history@5.x uses back()\n           * TODO: If support for React Router <=5 is dropped\n           * this logic is no longer needed. We can just\n           * assume back() is available.\n           */\n          const history = this.props.history as any;\n          const goBack = history.goBack || history.back;\n          goBack();\n        } else {\n          this.handleNavigate(prevInfo.pathname + (prevInfo.search || ''), 'pop', 'back');\n        }\n      } else {\n        this.handleNavigate(defaultHref as string, 'pop', 'back');\n      }\n    } else {\n      this.handleNavigate(defaultHref as string, 'pop', 'back');\n    }\n  }\n\n  handleResetTab(tab: string, originalHref: string, originalRouteOptions: any) {\n    const routeInfo = this.locationHistory.getFirstRouteInfoForTab(tab);\n    if (routeInfo) {\n      const newRouteInfo = { ...routeInfo };\n      newRouteInfo.pathname = originalHref;\n      newRouteInfo.routeOptions = originalRouteOptions;\n      this.incomingRouteParams = { ...newRouteInfo, routeAction: 'pop', routeDirection: 'back' };\n      this.props.history.push(newRouteInfo.pathname + (newRouteInfo.search || ''));\n    }\n  }\n\n  handleSetCurrentTab(tab: string) {\n    this.currentTab = tab;\n    const ri = { ...this.locationHistory.current() };\n    if (ri.tab !== tab) {\n      ri.tab = tab;\n      this.locationHistory.update(ri);\n    }\n  }\n\n  render() {\n    return (\n      <RouteManagerContext.Provider value={this.routeMangerContextState}>\n        <NavManager\n          ionRoute={IonRouteInner}\n          ionRedirect={{}}\n          stackManager={StackManager}\n          routeInfo={this.state.routeInfo!}\n          onNativeBack={this.handleNativeBack}\n          onNavigateBack={this.handleNavigateBack}\n          onNavigate={this.handleNavigate}\n          onSetCurrentTab={this.handleSetCurrentTab}\n          onChangeTab={this.handleChangeTab}\n          onResetTab={this.handleResetTab}\n          locationHistory={this.locationHistory}\n        >\n          {this.props.children}\n        </NavManager>\n      </RouteManagerContext.Provider>\n    );\n  }\n}\n\nexport const IonRouter = withRouter(IonRouterInner);\nIonRouter.displayName = 'IonRouter';\n","import {\n  Action as HistoryAction,\n  History,\n  Location as HistoryLocation,\n  createBrowserHistory as createHistory,\n} from 'history';\nimport React from 'react';\nimport { BrowserRouterProps, Router } from 'react-router-dom';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactRouterProps extends BrowserRouterProps {\n  history?: History;\n}\n\nexport class IonReactRouter extends React.Component<IonReactRouterProps> {\n  historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n  history: History;\n\n  constructor(props: IonReactRouterProps) {\n    super(props);\n    const { history, ...rest } = props;\n    this.history = history || createHistory(rest);\n    this.history.listen(this.handleHistoryChange.bind(this));\n    this.registerHistoryListener = this.registerHistoryListener.bind(this);\n  }\n\n /**\n  * history@4.x passes separate location and action\n  * params. history@5.x passes location and action\n  * together as a single object.\n  * TODO: If support for React Router <=5 is dropped\n  * this logic is no longer needed. We can just assume\n  * a single object with both location and action.\n  */\n  handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n   const locationValue = (location as any).location || location;\n   const actionValue = (location as any).action || action;\n   if (this.historyListenHandler) {\n     this.historyListenHandler(locationValue, actionValue);\n   }\n }\n\n  registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n    this.historyListenHandler = cb;\n  }\n\n  render() {\n    const { children, ...props } = this.props;\n    return (\n      <Router history={this.history} {...props}>\n        <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n      </Router>\n    );\n  }\n}\n","import { Action as HistoryAction, Location as HistoryLocation, MemoryHistory } from 'history';\nimport React from 'react';\nimport { MemoryRouterProps, Router } from 'react-router';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactMemoryRouterProps extends MemoryRouterProps {\n  history: MemoryHistory;\n}\n\nexport class IonReactMemoryRouter extends React.Component<IonReactMemoryRouterProps> {\n  history: MemoryHistory;\n  historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n\n  constructor(props: IonReactMemoryRouterProps) {\n    super(props);\n    this.history = props.history;\n    this.history.listen(this.handleHistoryChange.bind(this));\n    this.registerHistoryListener = this.registerHistoryListener.bind(this);\n  }\n\n  /**\n   * history@4.x passes separate location and action\n   * params. history@5.x passes location and action\n   * together as a single object.\n   * TODO: If support for React Router <=5 is dropped\n   * this logic is no longer needed. We can just assume\n   * a single object with both location and action.\n   */\n  handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n    const locationValue = (location as any).location || location;\n    const actionValue = (location as any).action || action;\n    if (this.historyListenHandler) {\n      this.historyListenHandler(locationValue, actionValue);\n    }\n  }\n\n  registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n    this.historyListenHandler = cb;\n  }\n\n  render() {\n    const { children, ...props } = this.props;\n    return (\n      <Router {...props}>\n        <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n      </Router>\n    );\n  }\n}\n","import {\n  Action as HistoryAction,\n  History,\n  Location as HistoryLocation,\n  createHashHistory as createHistory,\n} from 'history';\nimport React from 'react';\nimport { BrowserRouterProps, Router } from 'react-router-dom';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactHashRouterProps extends BrowserRouterProps {\n  history?: History;\n}\n\nexport class IonReactHashRouter extends React.Component<IonReactHashRouterProps> {\n  history: History;\n  historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n\n  constructor(props: IonReactHashRouterProps) {\n    super(props);\n    const { history, ...rest } = props;\n    this.history = history || createHistory(rest);\n    this.history.listen(this.handleHistoryChange.bind(this));\n    this.registerHistoryListener = this.registerHistoryListener.bind(this);\n  }\n\n  /**\n   * history@4.x passes separate location and action\n   * params. history@5.x passes location and action\n   * together as a single object.\n   * TODO: If support for React Router <=5 is dropped\n   * this logic is no longer needed. We can just assume\n   * a single object with both location and action.\n   */\n  handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n    const locationValue = (location as any).location || location;\n    const actionValue = (location as any).action || action;\n    if (this.historyListenHandler) {\n      this.historyListenHandler(locationValue, actionValue);\n    }\n  }\n\n  registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n    this.historyListenHandler = cb;\n  }\n\n  render() {\n    const { children, ...props } = this.props;\n    return (\n      <Router history={this.history} {...props}>\n        <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n      </Router>\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';\n\nexport interface AppUpdateOptions {\n  authType?: string;\n  username?: string;\n  password?: string;\n  skipPromptDialog?: boolean;\n  skipProgressDialog?: boolean;\n}\n\n/**\n * @name App Update\n * @description\n * This plugin does self-update for android\n *\n * @usage\n *\n * You should first host an XML file on your server with the following data in it:\n * ```xml\n * <update>\n *     <version>302048</version>\n *     <name>APK Name</name>\n *     <url>https://your-remote-api.com/YourApp.apk</url>\n * </update>\n * ```\n *\n * Then use the following code:\n *\n * ```typescript\n * import { AppUpdate } from '@ionic-native/app-update/ngx';\n *\n * constructor(private appUpdate: AppUpdate) {\n *\n *    const updateUrl = 'https://your-remote-api.com/update.xml';\n *    this.appUpdate.checkAppUpdate(updateUrl).then(() => { console.log('Update available') });\n *\n * }\n * ```\n *\n * The plugin will compare the app version and update it automatically if the API has a newer version to install.\n * @interfaces\n * AppUpdateOptions\n */\n@Plugin({\n  pluginName: 'AppUpdate',\n  plugin: 'cordova-plugin-app-update',\n  pluginRef: 'AppUpdate',\n  repo: 'https://github.com/vaenow/cordova-plugin-app-update',\n  platforms: ['Android'],\n})\n@Injectable()\nexport class AppUpdate extends IonicNativePlugin {\n  /**\n   * Check and update\n   * @param {string} updateUrl update api url\n   * @param {AppUpdateOptions} [options] options\n   * @return {Promise<any>} Returns a promise that resolves when something happens\n   */\n  @Cordova({\n    callbackOrder: 'reverse',\n  })\n  checkAppUpdate(updateUrl: string, options?: AppUpdateOptions): Promise<any> {\n    return;\n  }\n}\n","export function checkReady() {\n  if (typeof process === 'undefined') {\n    const win: any = typeof window !== 'undefined' ? window : {};\n    const DEVICE_READY_TIMEOUT = 5000;\n\n    // To help developers using cordova, we listen for the device ready event and\n    // log an error if it didn't fire in a reasonable amount of time. Generally,\n    // when this happens, developers should remove and reinstall plugins, since\n    // an inconsistent plugin is often the culprit.\n    const before = Date.now();\n\n    let didFireReady = false;\n    win.document.addEventListener('deviceready', () => {\n      console.log(`Ionic Native: deviceready event fired after ${Date.now() - before} ms`);\n      didFireReady = true;\n    });\n\n    setTimeout(() => {\n      if (!didFireReady && win.cordova) {\n        console.warn(\n          `Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`\n        );\n      }\n    }, DEVICE_READY_TIMEOUT);\n  }\n}\n","var CapacitorWeb = /** @class */ (function () {\n    function CapacitorWeb() {\n        var _this = this;\n        this.platform = 'web';\n        this.isNative = false;\n        // Need to assign here to avoid having to define every plugin but still\n        // get the typed benefits of the provided plugins in PluginRegistry\n        this.Plugins = {};\n        // Gracefully degrade in non-Proxy supporting engines, e.g. IE11. This\n        // effectively means that trying to access an unavailable plugin will\n        // locally throw, but this is still better than throwing a syntax error.\n        if (typeof Proxy !== 'undefined') {\n            // Build a proxy for the Plugins object that returns the \"Noop Plugin\"\n            // if a plugin isn't available\n            this.Plugins = new Proxy(this.Plugins, {\n                get: function (target, prop) {\n                    if (typeof target[prop] === 'undefined') {\n                        var thisRef_1 = _this;\n                        return new Proxy({}, {\n                            get: function (_target, _prop) {\n                                if (typeof _target[_prop] === 'undefined') {\n                                    return thisRef_1.pluginMethodNoop.bind(thisRef_1, _target, _prop, prop);\n                                }\n                                else {\n                                    return _target[_prop];\n                                }\n                            }\n                        });\n                    }\n                    else {\n                        return target[prop];\n                    }\n                }\n            });\n        }\n    }\n    CapacitorWeb.prototype.pluginMethodNoop = function (_target, _prop, pluginName) {\n        return Promise.reject(pluginName + \" does not have web implementation.\");\n    };\n    CapacitorWeb.prototype.getPlatform = function () {\n        return this.platform;\n    };\n    CapacitorWeb.prototype.isPluginAvailable = function (name) {\n        return this.Plugins.hasOwnProperty(name);\n    };\n    CapacitorWeb.prototype.convertFileSrc = function (filePath) {\n        return filePath;\n    };\n    CapacitorWeb.prototype.handleError = function (e) {\n        console.error(e);\n    };\n    return CapacitorWeb;\n}());\nexport { CapacitorWeb };\n//# sourceMappingURL=web-runtime.js.map","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import { getGlobalObject } from './global';\nimport { isString } from './is';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown, keyAttrs?: string[]): string {\n  type SimpleNode = {\n    parentNode: SimpleNode;\n  } | null;\n\n  // try/catch both:\n  // - accessing event.target (see getsentry/raven-js#838, #768)\n  // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n  // - can throw an exception in some circumstances.\n  try {\n    let currentElem = elem as SimpleNode;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const MAX_OUTPUT_LEN = 80;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n\n    // eslint-disable-next-line no-plusplus\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n        break;\n      }\n\n      out.push(nextStr);\n\n      len += nextStr.length;\n      currentElem = currentElem.parentNode;\n    }\n\n    return out.reverse().join(separator);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n  const elem = el as {\n    tagName?: string;\n    id?: string;\n    className?: string;\n    getAttribute(key: string): string;\n  };\n\n  const out = [];\n  let className;\n  let classes;\n  let key;\n  let attr;\n  let i;\n\n  if (!elem || !elem.tagName) {\n    return '';\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs =\n    keyAttrs && keyAttrs.length\n      ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n      : null;\n\n  if (keyAttrPairs && keyAttrPairs.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    // eslint-disable-next-line prefer-const\n    className = elem.className;\n    if (className && isString(className)) {\n      classes = className.split(/\\s+/);\n      for (i = 0; i < classes.length; i++) {\n        out.push(`.${classes[i]}`);\n      }\n    }\n  }\n  const allowedAttrs = ['type', 'name', 'title', 'alt'];\n  for (i = 0; i < allowedAttrs.length; i++) {\n    key = allowedAttrs[i];\n    attr = elem.getAttribute(key);\n    if (attr) {\n      out.push(`[${key}=\"${attr}\"]`);\n    }\n  }\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n  const global = getGlobalObject<Window>();\n  try {\n    return global.document.location.href;\n  } catch (oO) {\n    return '';\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n  // memoize\n  (obj: any) => boolean,\n  // unmemoize\n  (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n  const hasWeakSet = typeof WeakSet === 'function';\n  const inner: any = hasWeakSet ? new WeakSet() : [];\n  function memoize(obj: any): boolean {\n    if (hasWeakSet) {\n      if (inner.has(obj)) {\n        return true;\n      }\n      inner.add(obj);\n      return false;\n    }\n    // eslint-disable-next-line @typescript-eslint/prefer-for-of\n    for (let i = 0; i < inner.length; i++) {\n      const value = inner[i];\n      if (value === obj) {\n        return true;\n      }\n    }\n    inner.push(obj);\n    return false;\n  }\n\n  function unmemoize(obj: any): void {\n    if (hasWeakSet) {\n      inner.delete(obj);\n    } else {\n      for (let i = 0; i < inner.length; i++) {\n        if (inner[i] === obj) {\n          inner.splice(i, 1);\n          break;\n        }\n      }\n    }\n  }\n  return [memoize, unmemoize];\n}\n","export default function _objectDestructuringEmpty(obj) {\n  if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}","/*\n * This module exists for optimizations in the build process through rollup and terser.  We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n  return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n  // @ts-expect-error __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n  return __SENTRY_SDK_SOURCE__;\n}\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n  addInstrumentationHandler('error', errorCallback);\n  addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n  const activeTransaction = getActiveTransaction();\n  if (activeTransaction) {\n    const status: SpanStatusType = 'internal_error';\n    IS_DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n    activeTransaction.setStatus(status);\n  }\n}\n","import { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject } from './global';\nimport { logger } from './logger';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n  try {\n    new ErrorEvent('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n  try {\n    // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n    // 1 argument required, but only 0 present.\n    // @ts-ignore It really needs 1 argument, not 0.\n    new DOMError('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n  try {\n    new DOMException('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n  if (!('fetch' in getGlobalObject<Window>())) {\n    return false;\n  }\n\n  try {\n    new Headers();\n    new Request('');\n    new Response();\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n  return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  const global = getGlobalObject<Window>();\n\n  // Fast path to avoid DOM I/O\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  if (isNativeFetch(global.fetch)) {\n    return true;\n  }\n\n  // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n  // so create a \"pure\" iframe to see if that has native fetch\n  let result = false;\n  const doc = global.document;\n  // eslint-disable-next-line deprecation/deprecation\n  if (doc && typeof (doc.createElement as unknown) === 'function') {\n    try {\n      const sandbox = doc.createElement('iframe');\n      sandbox.hidden = true;\n      doc.head.appendChild(sandbox);\n      if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        result = isNativeFetch(sandbox.contentWindow.fetch);\n      }\n      doc.head.removeChild(sandbox);\n    } catch (err) {\n      IS_DEBUG_BUILD &&\n        logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n    }\n  }\n\n  return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n  return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n  // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n  // (see https://caniuse.com/#feat=referrer-policy),\n  // it doesn't. And it throws an exception instead of ignoring this parameter...\n  // REF: https://github.com/getsentry/raven-js/issues/1233\n\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  try {\n    new Request('_', {\n      referrerPolicy: 'origin' as ReferrerPolicy,\n    });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n  // NOTE: in Chrome App environment, touching history.pushState, *even inside\n  //       a try/catch block*, will cause Chrome to output an error to console.error\n  // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n  const global = getGlobalObject<Window>();\n  /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const chrome = (global as any).chrome;\n  const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n  /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n  const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n  return !isChromePackagedApp && hasHistoryApi;\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n  /** Display name of this error instance. */\n  public name: string;\n\n  public logLevel: ConsoleLevel;\n\n  public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n    super(message);\n\n    this.name = new.target.prototype.constructor.name;\n    // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n    // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n    // instances of `SentryError` fail `obj instanceof SentryError` checks.\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.logLevel = logLevel;\n  }\n}\n","import type {\n  DsnComponents,\n  Event,\n  EventEnvelope,\n  EventItem,\n  SdkInfo,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  SessionEnvelope,\n  SessionItem,\n} from '@sentry/types';\nimport {\n  createEnvelope,\n  createEventEnvelopeHeaders,\n  dsnToString,\n  getSdkMetadataForEnvelopeHeader,\n} from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n  if (!sdkInfo) {\n    return event;\n  }\n  event.sdk = event.sdk || {};\n  event.sdk.name = event.sdk.name || sdkInfo.name;\n  event.sdk.version = event.sdk.version || sdkInfo.version;\n  event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n  event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n  return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n  session: Session | SessionAggregates,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): SessionEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem: SessionItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope<SessionEnvelope>(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n  event: Event,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): EventEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjut a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem: EventItem = [{ type: eventType }, event];\n  return createEnvelope<EventEnvelope>(envelopeHeaders, [eventItem]);\n}\n","import type { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n  return urlEncode({\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    sentry_key: dsn.publicKey,\n    sentry_version: SENTRY_API_VERSION,\n    ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n  });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n  dsn: DsnComponents,\n  // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n  // options: ClientOptions = {} as ClientOptions,\n  tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n  // TODO (v8): Use this code instead\n  // const { tunnel, _metadata = {} } = options;\n  // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n  const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n  const sdkInfo =\n    typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n  dsnLike: DsnLike,\n  dialogOptions: {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    [key: string]: any;\n    user?: { name?: string; email?: string };\n  },\n): string {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === 'dsn') {\n      continue;\n    }\n\n    if (key === 'onClose') {\n      continue;\n    }\n\n    if (key === 'user') {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n","import { Integration, Transaction } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../../flags';\n\ntype Method =\n  | 'all'\n  | 'get'\n  | 'post'\n  | 'put'\n  | 'delete'\n  | 'patch'\n  | 'options'\n  | 'head'\n  | 'checkout'\n  | 'copy'\n  | 'lock'\n  | 'merge'\n  | 'mkactivity'\n  | 'mkcol'\n  | 'move'\n  | 'm-search'\n  | 'notify'\n  | 'purge'\n  | 'report'\n  | 'search'\n  | 'subscribe'\n  | 'trace'\n  | 'unlock'\n  | 'unsubscribe'\n  | 'use';\n\ntype Router = {\n  [method in Method]: (...args: any) => any; // eslint-disable-line @typescript-eslint/no-explicit-any\n};\n\ninterface ExpressResponse {\n  once(name: string, callback: () => void): void;\n}\n\n/**\n * Internal helper for `__sentry_transaction`\n * @hidden\n */\ninterface SentryTracingResponse {\n  __sentry_transaction?: Transaction;\n}\n\n/**\n * Express integration\n *\n * Provides an request and error handler for Express framework as well as tracing capabilities\n */\nexport class Express implements Integration {\n  /**\n   * @inheritDoc\n   */\n  public static id: string = 'Express';\n\n  /**\n   * @inheritDoc\n   */\n  public name: string = Express.id;\n\n  /**\n   * Express App instance\n   */\n  private readonly _router?: Router;\n  private readonly _methods?: Method[];\n\n  /**\n   * @inheritDoc\n   */\n  public constructor(options: { app?: Router; router?: Router; methods?: Method[] } = {}) {\n    this._router = options.router || options.app;\n    this._methods = (Array.isArray(options.methods) ? options.methods : []).concat('use');\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setupOnce(): void {\n    if (!this._router) {\n      IS_DEBUG_BUILD && logger.error('ExpressIntegration is missing an Express instance');\n      return;\n    }\n    instrumentMiddlewares(this._router, this._methods);\n  }\n}\n\n/**\n * Wraps original middleware function in a tracing call, which stores the info about the call as a span,\n * and finishes it once the middleware is done invoking.\n *\n * Express middlewares have 3 various forms, thus we have to take care of all of them:\n * // sync\n * app.use(function (req, res) { ... })\n * // async\n * app.use(function (req, res, next) { ... })\n * // error handler\n * app.use(function (err, req, res, next) { ... })\n *\n * They all internally delegate to the `router[method]` of the given application instance.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\nfunction wrap(fn: Function, method: Method): (...args: any[]) => void {\n  const arity = fn.length;\n\n  switch (arity) {\n    case 2: {\n      return function (this: NodeJS.Global, req: unknown, res: ExpressResponse & SentryTracingResponse): void {\n        const transaction = res.__sentry_transaction;\n        if (transaction) {\n          const span = transaction.startChild({\n            description: fn.name,\n            op: `express.middleware.${method}`,\n          });\n          res.once('finish', () => {\n            span.finish();\n          });\n        }\n        return fn.call(this, req, res);\n      };\n    }\n    case 3: {\n      return function (\n        this: NodeJS.Global,\n        req: unknown,\n        res: ExpressResponse & SentryTracingResponse,\n        next: () => void,\n      ): void {\n        const transaction = res.__sentry_transaction;\n        const span = transaction?.startChild({\n          description: fn.name,\n          op: `express.middleware.${method}`,\n        });\n        fn.call(this, req, res, function (this: NodeJS.Global, ...args: unknown[]): void {\n          span?.finish();\n          next.call(this, ...args);\n        });\n      };\n    }\n    case 4: {\n      return function (\n        this: NodeJS.Global,\n        err: Error,\n        req: Request,\n        res: Response & SentryTracingResponse,\n        next: () => void,\n      ): void {\n        const transaction = res.__sentry_transaction;\n        const span = transaction?.startChild({\n          description: fn.name,\n          op: `express.middleware.${method}`,\n        });\n        fn.call(this, err, req, res, function (this: NodeJS.Global, ...args: unknown[]): void {\n          span?.finish();\n          next.call(this, ...args);\n        });\n      };\n    }\n    default: {\n      throw new Error(`Express middleware takes 2-4 arguments. Got: ${arity}`);\n    }\n  }\n}\n\n/**\n * Takes all the function arguments passed to the original `app` or `router` method, eg. `app.use` or `router.use`\n * and wraps every function, as well as array of functions with a call to our `wrap` method.\n * We have to take care of the arrays as well as iterate over all of the arguments,\n * as `app.use` can accept middlewares in few various forms.\n *\n * app.use([<path>], <fn>)\n * app.use([<path>], <fn>, ...<fn>)\n * app.use([<path>], ...<fn>[])\n */\nfunction wrapMiddlewareArgs(args: unknown[], method: Method): unknown[] {\n  return args.map((arg: unknown) => {\n    if (typeof arg === 'function') {\n      return wrap(arg, method);\n    }\n\n    if (Array.isArray(arg)) {\n      return arg.map((a: unknown) => {\n        if (typeof a === 'function') {\n          return wrap(a, method);\n        }\n        return a;\n      });\n    }\n\n    return arg;\n  });\n}\n\n/**\n * Patches original router to utilize our tracing functionality\n */\nfunction patchMiddleware(router: Router, method: Method): Router {\n  const originalCallback = router[method];\n\n  router[method] = function (...args: unknown[]): void {\n    return originalCallback.call(this, ...wrapMiddlewareArgs(args, method));\n  };\n\n  return router;\n}\n\n/**\n * Patches original router methods\n */\nfunction instrumentMiddlewares(router: Router, methods: Method[] = []): void {\n  methods.forEach((method: Method) => patchMiddleware(router, method));\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../../flags';\n\ninterface PgClient {\n  prototype: {\n    query: () => void | Promise<unknown>;\n  };\n}\n\ninterface PgOptions {\n  usePgNative?: boolean;\n}\n\n/** Tracing integration for node-postgres package */\nexport class Postgres implements Integration {\n  /**\n   * @inheritDoc\n   */\n  public static id: string = 'Postgres';\n\n  /**\n   * @inheritDoc\n   */\n  public name: string = Postgres.id;\n\n  private _usePgNative: boolean;\n\n  public constructor(options: PgOptions = {}) {\n    this._usePgNative = !!options.usePgNative;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n    const pkg = loadModule<{ Client: PgClient; native: { Client: PgClient } }>('pg');\n\n    if (!pkg) {\n      IS_DEBUG_BUILD && logger.error('Postgres Integration was unable to require `pg` package.');\n      return;\n    }\n\n    if (this._usePgNative && !pkg.native?.Client) {\n      IS_DEBUG_BUILD && logger.error(\"Postgres Integration was unable to access 'pg-native' bindings.\");\n      return;\n    }\n\n    const { Client } = this._usePgNative ? pkg.native : pkg;\n\n    /**\n     * function (query, callback) => void\n     * function (query, params, callback) => void\n     * function (query) => Promise\n     * function (query, params) => Promise\n     * function (pg.Cursor) => pg.Cursor\n     */\n    fill(Client.prototype, 'query', function (orig: () => void | Promise<unknown>) {\n      return function (this: unknown, config: unknown, values: unknown, callback: unknown) {\n        const scope = getCurrentHub().getScope();\n        const parentSpan = scope?.getSpan();\n        const span = parentSpan?.startChild({\n          description: typeof config === 'string' ? config : (config as { text: string }).text,\n          op: 'db',\n        });\n\n        if (typeof callback === 'function') {\n          return orig.call(this, config, values, function (err: Error, result: unknown) {\n            span?.finish();\n            callback(err, result);\n          });\n        }\n\n        if (typeof values === 'function') {\n          return orig.call(this, config, function (err: Error, result: unknown) {\n            span?.finish();\n            values(err, result);\n          });\n        }\n\n        const rv = typeof values !== 'undefined' ? orig.call(this, config, values) : orig.call(this, config);\n\n        if (isThenable(rv)) {\n          return rv.then((res: unknown) => {\n            span?.finish();\n            return res;\n          });\n        }\n\n        span?.finish();\n        return rv;\n      };\n    });\n  }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration } from '@sentry/types';\nimport { fill, loadModule, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../../flags';\n\ninterface MysqlConnection {\n  createQuery: () => void;\n}\n\n/** Tracing integration for node-mysql package */\nexport class Mysql implements Integration {\n  /**\n   * @inheritDoc\n   */\n  public static id: string = 'Mysql';\n\n  /**\n   * @inheritDoc\n   */\n  public name: string = Mysql.id;\n\n  /**\n   * @inheritDoc\n   */\n  public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n    const pkg = loadModule<MysqlConnection>('mysql/lib/Connection.js');\n\n    if (!pkg) {\n      IS_DEBUG_BUILD && logger.error('Mysql Integration was unable to require `mysql` package.');\n      return;\n    }\n\n    // The original function will have one of these signatures:\n    //    function (callback) => void\n    //    function (options, callback) => void\n    //    function (options, values, callback) => void\n    fill(pkg, 'createQuery', function (orig: () => void) {\n      return function (this: unknown, options: unknown, values: unknown, callback: unknown) {\n        const scope = getCurrentHub().getScope();\n        const parentSpan = scope?.getSpan();\n        const span = parentSpan?.startChild({\n          description: typeof options === 'string' ? options : (options as { sql: string }).sql,\n          op: 'db',\n        });\n\n        if (typeof callback === 'function') {\n          return orig.call(this, options, values, function (err: Error, result: unknown, fields: unknown) {\n            span?.finish();\n            callback(err, result, fields);\n          });\n        }\n\n        if (typeof values === 'function') {\n          return orig.call(this, options, function (err: Error, result: unknown, fields: unknown) {\n            span?.finish();\n            values(err, result, fields);\n          });\n        }\n\n        return orig.call(this, options, values, callback);\n      };\n    });\n  }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration, SpanContext } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../../flags';\n\n// This allows us to use the same array for both defaults options and the type itself.\n// (note `as const` at the end to make it a union of string literal types (i.e. \"a\" | \"b\" | ... )\n// and not just a string[])\ntype Operation = typeof OPERATIONS[number];\nconst OPERATIONS = [\n  'aggregate', // aggregate(pipeline, options, callback)\n  'bulkWrite', // bulkWrite(operations, options, callback)\n  'countDocuments', // countDocuments(query, options, callback)\n  'createIndex', // createIndex(fieldOrSpec, options, callback)\n  'createIndexes', // createIndexes(indexSpecs, options, callback)\n  'deleteMany', // deleteMany(filter, options, callback)\n  'deleteOne', // deleteOne(filter, options, callback)\n  'distinct', // distinct(key, query, options, callback)\n  'drop', // drop(options, callback)\n  'dropIndex', // dropIndex(indexName, options, callback)\n  'dropIndexes', // dropIndexes(options, callback)\n  'estimatedDocumentCount', // estimatedDocumentCount(options, callback)\n  'find', // find(query, options, callback)\n  'findOne', // findOne(query, options, callback)\n  'findOneAndDelete', // findOneAndDelete(filter, options, callback)\n  'findOneAndReplace', // findOneAndReplace(filter, replacement, options, callback)\n  'findOneAndUpdate', // findOneAndUpdate(filter, update, options, callback)\n  'indexes', // indexes(options, callback)\n  'indexExists', // indexExists(indexes, options, callback)\n  'indexInformation', // indexInformation(options, callback)\n  'initializeOrderedBulkOp', // initializeOrderedBulkOp(options, callback)\n  'insertMany', // insertMany(docs, options, callback)\n  'insertOne', // insertOne(doc, options, callback)\n  'isCapped', // isCapped(options, callback)\n  'mapReduce', // mapReduce(map, reduce, options, callback)\n  'options', // options(options, callback)\n  'parallelCollectionScan', // parallelCollectionScan(options, callback)\n  'rename', // rename(newName, options, callback)\n  'replaceOne', // replaceOne(filter, doc, options, callback)\n  'stats', // stats(options, callback)\n  'updateMany', // updateMany(filter, update, options, callback)\n  'updateOne', // updateOne(filter, update, options, callback)\n] as const;\n\n// All of the operations above take `options` and `callback` as their final parameters, but some of them\n// take additional parameters as well. For those operations, this is a map of\n// { <operation name>:  [<names of additional parameters>] }, as a way to know what to call the operation's\n// positional arguments when we add them to the span's `data` object later\nconst OPERATION_SIGNATURES: {\n  [op in Operation]?: string[];\n} = {\n  // aggregate intentionally not included because `pipeline` arguments are too complex to serialize well\n  // see https://github.com/getsentry/sentry-javascript/pull/3102\n  bulkWrite: ['operations'],\n  countDocuments: ['query'],\n  createIndex: ['fieldOrSpec'],\n  createIndexes: ['indexSpecs'],\n  deleteMany: ['filter'],\n  deleteOne: ['filter'],\n  distinct: ['key', 'query'],\n  dropIndex: ['indexName'],\n  find: ['query'],\n  findOne: ['query'],\n  findOneAndDelete: ['filter'],\n  findOneAndReplace: ['filter', 'replacement'],\n  findOneAndUpdate: ['filter', 'update'],\n  indexExists: ['indexes'],\n  insertMany: ['docs'],\n  insertOne: ['doc'],\n  mapReduce: ['map', 'reduce'],\n  rename: ['newName'],\n  replaceOne: ['filter', 'doc'],\n  updateMany: ['filter', 'update'],\n  updateOne: ['filter', 'update'],\n};\n\ninterface MongoCollection {\n  collectionName: string;\n  dbName: string;\n  namespace: string;\n  prototype: {\n    [operation in Operation]: (...args: unknown[]) => unknown;\n  };\n}\n\ninterface MongoOptions {\n  operations?: Operation[];\n  describeOperations?: boolean | Operation[];\n  useMongoose?: boolean;\n}\n\n/** Tracing integration for mongo package */\nexport class Mongo implements Integration {\n  /**\n   * @inheritDoc\n   */\n  public static id: string = 'Mongo';\n\n  /**\n   * @inheritDoc\n   */\n  public name: string = Mongo.id;\n\n  private _operations: Operation[];\n  private _describeOperations?: boolean | Operation[];\n  private _useMongoose: boolean;\n\n  /**\n   * @inheritDoc\n   */\n  public constructor(options: MongoOptions = {}) {\n    this._operations = Array.isArray(options.operations) ? options.operations : (OPERATIONS as unknown as Operation[]);\n    this._describeOperations = 'describeOperations' in options ? options.describeOperations : true;\n    this._useMongoose = !!options.useMongoose;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n    const moduleName = this._useMongoose ? 'mongoose' : 'mongodb';\n    const pkg = loadModule<{ Collection: MongoCollection }>(moduleName);\n\n    if (!pkg) {\n      IS_DEBUG_BUILD && logger.error(`Mongo Integration was unable to require \\`${moduleName}\\` package.`);\n      return;\n    }\n\n    this._instrumentOperations(pkg.Collection, this._operations, getCurrentHub);\n  }\n\n  /**\n   * Patches original collection methods\n   */\n  private _instrumentOperations(collection: MongoCollection, operations: Operation[], getCurrentHub: () => Hub): void {\n    operations.forEach((operation: Operation) => this._patchOperation(collection, operation, getCurrentHub));\n  }\n\n  /**\n   * Patches original collection to utilize our tracing functionality\n   */\n  private _patchOperation(collection: MongoCollection, operation: Operation, getCurrentHub: () => Hub): void {\n    if (!(operation in collection.prototype)) return;\n\n    const getSpanContext = this._getSpanContextFromOperationArguments.bind(this);\n\n    fill(collection.prototype, operation, function (orig: () => void | Promise<unknown>) {\n      return function (this: unknown, ...args: unknown[]) {\n        const lastArg = args[args.length - 1];\n        const scope = getCurrentHub().getScope();\n        const parentSpan = scope?.getSpan();\n\n        // Check if the operation was passed a callback. (mapReduce requires a different check, as\n        // its (non-callback) arguments can also be functions.)\n        if (typeof lastArg !== 'function' || (operation === 'mapReduce' && args.length === 2)) {\n          const span = parentSpan?.startChild(getSpanContext(this, operation, args));\n          const maybePromise = orig.call(this, ...args) as Promise<unknown>;\n\n          if (isThenable(maybePromise)) {\n            return maybePromise.then((res: unknown) => {\n              span?.finish();\n              return res;\n            });\n          } else {\n            span?.finish();\n            return maybePromise;\n          }\n        }\n\n        const span = parentSpan?.startChild(getSpanContext(this, operation, args.slice(0, -1)));\n        return orig.call(this, ...args.slice(0, -1), function (err: Error, result: unknown) {\n          span?.finish();\n          lastArg(err, result);\n        });\n      };\n    });\n  }\n\n  /**\n   * Form a SpanContext based on the user input to a given operation.\n   */\n  private _getSpanContextFromOperationArguments(\n    collection: MongoCollection,\n    operation: Operation,\n    args: unknown[],\n  ): SpanContext {\n    const data: { [key: string]: string } = {\n      collectionName: collection.collectionName,\n      dbName: collection.dbName,\n      namespace: collection.namespace,\n    };\n    const spanContext: SpanContext = {\n      op: 'db',\n      description: operation,\n      data,\n    };\n\n    // If the operation takes no arguments besides `options` and `callback`, or if argument\n    // collection is disabled for this operation, just return early.\n    const signature = OPERATION_SIGNATURES[operation];\n    const shouldDescribe = Array.isArray(this._describeOperations)\n      ? this._describeOperations.includes(operation)\n      : this._describeOperations;\n\n    if (!signature || !shouldDescribe) {\n      return spanContext;\n    }\n\n    try {\n      // Special case for `mapReduce`, as the only one accepting functions as arguments.\n      if (operation === 'mapReduce') {\n        const [map, reduce] = args as { name?: string }[];\n        data[signature[0]] = typeof map === 'string' ? map : map.name || '<anonymous>';\n        data[signature[1]] = typeof reduce === 'string' ? reduce : reduce.name || '<anonymous>';\n      } else {\n        for (let i = 0; i < signature.length; i++) {\n          data[signature[i]] = JSON.stringify(args[i]);\n        }\n      }\n    } catch (_oO) {\n      // no-empty\n    }\n\n    return spanContext;\n  }\n}\n","import { getGlobalObject, logger } from '@sentry/utils';\n\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from '../constants';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { IdleTransaction } from '../idletransaction';\nimport { SpanStatusType } from '../span';\nimport { getActiveTransaction } from '../utils';\n\nconst global = getGlobalObject<Window>();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n  if (global && global.document) {\n    global.document.addEventListener('visibilitychange', () => {\n      const activeTransaction = getActiveTransaction() as IdleTransaction;\n      if (global.document.hidden && activeTransaction) {\n        const statusType: SpanStatusType = 'cancelled';\n\n        IS_DEBUG_BUILD &&\n          logger.log(\n            `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n          );\n        // We should not set status if it is already set, this prevent important statuses like\n        // error or data loss from being overwritten on transaction.\n        if (!activeTransaction.status) {\n          activeTransaction.setStatus(statusType);\n        }\n        activeTransaction.setTag('visibilitychange', 'document.hidden');\n        activeTransaction.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[2]);\n        activeTransaction.finish();\n      }\n    });\n  } else {\n    IS_DEBUG_BUILD && logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n  }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Metric, ReportHandler } from '../types';\n\nexport const bindReporter = (\n  callback: ReportHandler,\n  metric: Metric,\n  reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n  let prevValue: number;\n  return (forceReport?: boolean) => {\n    if (metric.value >= 0) {\n      if (forceReport || reportAllChanges) {\n        metric.delta = metric.value - (prevValue || 0);\n\n        // Report the metric if there's a non-zero delta or if no previous\n        // value exists (which can happen in the case of the document becoming\n        // hidden when the metric value is 0).\n        // See: https://github.com/GoogleChrome/web-vitals/issues/14\n        if (metric.delta || prevValue === undefined) {\n          prevValue = metric.value;\n          callback(metric);\n        }\n      }\n    }\n  };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n  return {\n    name,\n    value: value ?? -1,\n    delta: 0,\n    entries: [],\n    id: generateUniqueID(),\n  };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n  return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PerformanceEntryHandler {\n  (entry: PerformanceEntry): void;\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (type: string, callback: PerformanceEntryHandler): PerformanceObserver | undefined => {\n  try {\n    if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n      // More extensive feature detect needed for Firefox due to:\n      // https://github.com/GoogleChrome/web-vitals/issues/142\n      if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n        return;\n      }\n\n      const po: PerformanceObserver = new PerformanceObserver(l => l.getEntries().map(callback));\n\n      po.observe({ type, buffered: true });\n      return po;\n    }\n  } catch (e) {\n    // Do nothing.\n  }\n  return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nexport interface OnHiddenCallback {\n  (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n  const onHiddenOrPageHide = (event: Event): void => {\n    if (event.type === 'pagehide' || getGlobalObject<Window>().document.visibilityState === 'hidden') {\n      cb(event);\n      if (once) {\n        removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n        removeEventListener('pagehide', onHiddenOrPageHide, true);\n      }\n    }\n  };\n  addEventListener('visibilitychange', onHiddenOrPageHide, true);\n  // Some browsers have buggy implementations of visibilitychange,\n  // so we use pagehide in addition, just to be safe.\n  addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): number => {\n  return getGlobalObject<Window>().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nconst trackChanges = (): void => {\n  // Update the time if/when the document becomes hidden.\n  onHidden(({ timeStamp }) => {\n    firstHiddenTime = timeStamp;\n  }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n  readonly firstHiddenTime: number;\n} => {\n  if (firstHiddenTime < 0) {\n    // If the document is hidden when this code runs, assume it was hidden\n    // since navigation start. This isn't a perfect heuristic, but it's the\n    // best we can do until an API is available to support querying past\n    // visibilityState.\n    firstHiddenTime = initHiddenTime();\n    trackChanges();\n  }\n  return {\n    get firstHiddenTime() {\n      return firstHiddenTime;\n    },\n  };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\nexport interface LargestContentfulPaint extends PerformanceEntry {\n  renderTime: DOMHighResTimeStamp;\n  loadTime: DOMHighResTimeStamp;\n  size: number;\n  id: string;\n  url: string;\n  element?: Element;\n  toJSON(): Record<string, string>;\n}\n\nconst reportedMetricIDs: Record<string, boolean> = {};\n\nexport const getLCP = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n  const visibilityWatcher = getVisibilityWatcher();\n  const metric = initMetric('LCP');\n  let report: ReturnType<typeof bindReporter>;\n\n  const entryHandler = (entry: PerformanceEntry): void => {\n    // The startTime attribute returns the value of the renderTime if it is not 0,\n    // and the value of the loadTime otherwise.\n    const value = entry.startTime;\n\n    // If the page was hidden prior to paint time of the entry,\n    // ignore it and mark the metric as final, otherwise add the entry.\n    if (value < visibilityWatcher.firstHiddenTime) {\n      metric.value = value;\n      metric.entries.push(entry);\n    }\n\n    if (report) {\n      report();\n    }\n  };\n\n  const po = observe('largest-contentful-paint', entryHandler);\n\n  if (po) {\n    report = bindReporter(onReport, metric, reportAllChanges);\n\n    const stopListening = (): void => {\n      if (!reportedMetricIDs[metric.id]) {\n        po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n        po.disconnect();\n        reportedMetricIDs[metric.id] = true;\n        report(true);\n      }\n    };\n\n    // Stop listening after input. Note: while scrolling is an input that\n    // stop LCP observation, it's unreliable since it can be programmatically\n    // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n    ['keydown', 'click'].forEach(type => {\n      addEventListener(type, stopListening, { once: true, capture: true });\n    });\n\n    onHidden(stopListening, true);\n  }\n};\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Measurements, SpanContext } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, isNodeEnv, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { Span } from '../span';\nimport { Transaction } from '../transaction';\nimport { msToSec } from '../utils';\nimport { getCLS, LayoutShift } from './web-vitals/getCLS';\nimport { getFID } from './web-vitals/getFID';\nimport { getLCP, LargestContentfulPaint } from './web-vitals/getLCP';\nimport { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher';\nimport { NavigatorDeviceMemory, NavigatorNetworkInformation } from './web-vitals/types';\n\nconst global = getGlobalObject<Window>();\n\n/** Class tracking metrics  */\nexport class MetricsInstrumentation {\n  private _measurements: Measurements = {};\n\n  private _performanceCursor: number = 0;\n  private _lcpEntry: LargestContentfulPaint | undefined;\n  private _clsEntry: LayoutShift | undefined;\n\n  public constructor(private _reportAllChanges: boolean = false) {\n    if (!isNodeEnv() && global && global.performance && global.document) {\n      if (global.performance.mark) {\n        global.performance.mark('sentry-tracing-init');\n      }\n\n      this._trackCLS();\n      this._trackLCP();\n      this._trackFID();\n    }\n  }\n\n  /** Add performance related spans to a transaction */\n  public addPerformanceEntries(transaction: Transaction): void {\n    if (!global || !global.performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n      // Gatekeeper if performance API not available\n      return;\n    }\n\n    IS_DEBUG_BUILD && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n\n    const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n    let responseStartTimestamp: number | undefined;\n    let requestStartTimestamp: number | undefined;\n\n    global.performance\n      .getEntries()\n      .slice(this._performanceCursor)\n      .forEach((entry: Record<string, any>) => {\n        const startTime = msToSec(entry.startTime as number);\n        const duration = msToSec(entry.duration as number);\n\n        if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n          return;\n        }\n\n        switch (entry.entryType) {\n          case 'navigation': {\n            addNavigationSpans(transaction, entry, timeOrigin);\n            responseStartTimestamp = timeOrigin + msToSec(entry.responseStart as number);\n            requestStartTimestamp = timeOrigin + msToSec(entry.requestStart as number);\n            break;\n          }\n          case 'mark':\n          case 'paint':\n          case 'measure': {\n            const startTimestamp = addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n            // capture web vitals\n\n            const firstHidden = getVisibilityWatcher();\n            // Only report if the page wasn't hidden prior to the web vital.\n            const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n            if (entry.name === 'first-paint' && shouldRecord) {\n              IS_DEBUG_BUILD && logger.log('[Measurements] Adding FP');\n              this._measurements['fp'] = { value: entry.startTime };\n              this._measurements['mark.fp'] = { value: startTimestamp };\n            }\n\n            if (entry.name === 'first-contentful-paint' && shouldRecord) {\n              IS_DEBUG_BUILD && logger.log('[Measurements] Adding FCP');\n              this._measurements['fcp'] = { value: entry.startTime };\n              this._measurements['mark.fcp'] = { value: startTimestamp };\n            }\n\n            break;\n          }\n          case 'resource': {\n            const resourceName = (entry.name as string).replace(global.location.origin, '');\n            addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n            break;\n          }\n          default:\n          // Ignore other entry types.\n        }\n      });\n\n    this._performanceCursor = Math.max(performance.getEntries().length - 1, 0);\n\n    this._trackNavigator(transaction);\n\n    // Measurements are only available for pageload transactions\n    if (transaction.op === 'pageload') {\n      // normalize applicable web vital values to be relative to transaction.startTimestamp\n\n      const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n      // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n      // start of the response in milliseconds\n      if (typeof responseStartTimestamp === 'number') {\n        IS_DEBUG_BUILD && logger.log('[Measurements] Adding TTFB');\n        this._measurements['ttfb'] = { value: (responseStartTimestamp - transaction.startTimestamp) * 1000 };\n\n        if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n          // Capture the time spent making the request and receiving the first byte of the response.\n          // This is the time between the start of the request and the start of the response in milliseconds.\n          this._measurements['ttfb.requestTime'] = { value: (responseStartTimestamp - requestStartTimestamp) * 1000 };\n        }\n      }\n\n      ['fcp', 'fp', 'lcp'].forEach(name => {\n        if (!this._measurements[name] || timeOrigin >= transaction.startTimestamp) {\n          return;\n        }\n\n        // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n        // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n        // to be adjusted to be relative to transaction.startTimestamp.\n\n        const oldValue = this._measurements[name].value;\n        const measurementTimestamp = timeOrigin + msToSec(oldValue);\n        // normalizedValue should be in milliseconds\n        const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n\n        const delta = normalizedValue - oldValue;\n        IS_DEBUG_BUILD &&\n          logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n\n        this._measurements[name].value = normalizedValue;\n      });\n\n      if (this._measurements['mark.fid'] && this._measurements['fid']) {\n        // create span for FID\n\n        _startChild(transaction, {\n          description: 'first input delay',\n          endTimestamp: this._measurements['mark.fid'].value + msToSec(this._measurements['fid'].value),\n          op: 'web.vitals',\n          startTimestamp: this._measurements['mark.fid'].value,\n        });\n      }\n\n      // If FCP is not recorded we should not record the cls value\n      // according to the new definition of CLS.\n      if (!('fcp' in this._measurements)) {\n        delete this._measurements.cls;\n      }\n\n      transaction.setMeasurements(this._measurements);\n      tagMetricInfo(transaction, this._lcpEntry, this._clsEntry);\n      transaction.setTag('sentry_reportAllChanges', this._reportAllChanges);\n    }\n  }\n\n  /**\n   * Capture the information of the user agent.\n   */\n  private _trackNavigator(transaction: Transaction): void {\n    const navigator = global.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n    if (!navigator) {\n      return;\n    }\n\n    // track network connectivity\n    const connection = navigator.connection;\n    if (connection) {\n      if (connection.effectiveType) {\n        transaction.setTag('effectiveConnectionType', connection.effectiveType);\n      }\n\n      if (connection.type) {\n        transaction.setTag('connectionType', connection.type);\n      }\n\n      if (isMeasurementValue(connection.rtt)) {\n        this._measurements['connection.rtt'] = { value: connection.rtt as number };\n      }\n\n      if (isMeasurementValue(connection.downlink)) {\n        this._measurements['connection.downlink'] = { value: connection.downlink as number };\n      }\n    }\n\n    if (isMeasurementValue(navigator.deviceMemory)) {\n      transaction.setTag('deviceMemory', String(navigator.deviceMemory));\n    }\n\n    if (isMeasurementValue(navigator.hardwareConcurrency)) {\n      transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n    }\n  }\n\n  /** Starts tracking the Cumulative Layout Shift on the current page. */\n  private _trackCLS(): void {\n    // See:\n    // https://web.dev/evolving-cls/\n    // https://web.dev/cls-web-tooling/\n    getCLS(metric => {\n      const entry = metric.entries.pop();\n      if (!entry) {\n        return;\n      }\n\n      IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS');\n      this._measurements['cls'] = { value: metric.value };\n      this._clsEntry = entry as LayoutShift;\n    });\n  }\n\n  /** Starts tracking the Largest Contentful Paint on the current page. */\n  private _trackLCP(): void {\n    getLCP(metric => {\n      const entry = metric.entries.pop();\n      if (!entry) {\n        return;\n      }\n\n      const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n      const startTime = msToSec(entry.startTime);\n      IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP');\n      this._measurements['lcp'] = { value: metric.value };\n      this._measurements['mark.lcp'] = { value: timeOrigin + startTime };\n      this._lcpEntry = entry as LargestContentfulPaint;\n    }, this._reportAllChanges);\n  }\n\n  /** Starts tracking the First Input Delay on the current page. */\n  private _trackFID(): void {\n    getFID(metric => {\n      const entry = metric.entries.pop();\n      if (!entry) {\n        return;\n      }\n\n      const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n      const startTime = msToSec(entry.startTime);\n      IS_DEBUG_BUILD && logger.log('[Measurements] Adding FID');\n      this._measurements['fid'] = { value: metric.value };\n      this._measurements['mark.fid'] = { value: timeOrigin + startTime };\n    });\n  }\n}\n\n/** Instrument navigation entries */\nfunction addNavigationSpans(transaction: Transaction, entry: Record<string, any>, timeOrigin: number): void {\n  ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n    addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n  });\n  addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n  addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n  addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n  addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create measure related spans */\nfunction addMeasureSpans(\n  transaction: Transaction,\n  entry: Record<string, any>,\n  startTime: number,\n  duration: number,\n  timeOrigin: number,\n): number {\n  const measureStartTimestamp = timeOrigin + startTime;\n  const measureEndTimestamp = measureStartTimestamp + duration;\n\n  _startChild(transaction, {\n    description: entry.name as string,\n    endTimestamp: measureEndTimestamp,\n    op: entry.entryType as string,\n    startTimestamp: measureStartTimestamp,\n  });\n\n  return measureStartTimestamp;\n}\n\nexport interface ResourceEntry extends Record<string, unknown> {\n  initiatorType?: string;\n  transferSize?: number;\n  encodedBodySize?: number;\n  decodedBodySize?: number;\n}\n\n/** Create resource-related spans */\nexport function addResourceSpans(\n  transaction: Transaction,\n  entry: ResourceEntry,\n  resourceName: string,\n  startTime: number,\n  duration: number,\n  timeOrigin: number,\n): void {\n  // we already instrument based on fetch and xhr, so we don't need to\n  // duplicate spans here.\n  if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n    return;\n  }\n\n  const data: Record<string, any> = {};\n  if ('transferSize' in entry) {\n    data['Transfer Size'] = entry.transferSize;\n  }\n  if ('encodedBodySize' in entry) {\n    data['Encoded Body Size'] = entry.encodedBodySize;\n  }\n  if ('decodedBodySize' in entry) {\n    data['Decoded Body Size'] = entry.decodedBodySize;\n  }\n\n  const startTimestamp = timeOrigin + startTime;\n  const endTimestamp = startTimestamp + duration;\n\n  _startChild(transaction, {\n    description: resourceName,\n    endTimestamp,\n    op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n    startTimestamp,\n    data,\n  });\n}\n\n/** Create performance navigation related spans */\nfunction addPerformanceNavigationTiming(\n  transaction: Transaction,\n  entry: Record<string, any>,\n  event: string,\n  timeOrigin: number,\n  description?: string,\n  eventEnd?: string,\n): void {\n  const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n  const start = entry[`${event}Start`] as number | undefined;\n  if (!start || !end) {\n    return;\n  }\n  _startChild(transaction, {\n    op: 'browser',\n    description: description ?? event,\n    startTimestamp: timeOrigin + msToSec(start),\n    endTimestamp: timeOrigin + msToSec(end),\n  });\n}\n\n/** Create request and response related spans */\nfunction addRequest(transaction: Transaction, entry: Record<string, any>, timeOrigin: number): void {\n  _startChild(transaction, {\n    op: 'browser',\n    description: 'request',\n    startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n    endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n  });\n\n  _startChild(transaction, {\n    op: 'browser',\n    description: 'response',\n    startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n    endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n  });\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n  if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n    transaction.startTimestamp = startTimestamp;\n  }\n\n  return transaction.startChild({\n    startTimestamp,\n    ...ctx,\n  });\n}\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value: any): boolean {\n  return typeof value === 'number' && isFinite(value);\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction tagMetricInfo(\n  transaction: Transaction,\n  lcpEntry: MetricsInstrumentation['_lcpEntry'],\n  clsEntry: MetricsInstrumentation['_clsEntry'],\n): void {\n  if (lcpEntry) {\n    IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP Data');\n\n    // Capture Properties of the LCP element that contributes to the LCP.\n\n    if (lcpEntry.element) {\n      transaction.setTag('lcp.element', htmlTreeAsString(lcpEntry.element));\n    }\n\n    if (lcpEntry.id) {\n      transaction.setTag('lcp.id', lcpEntry.id);\n    }\n\n    if (lcpEntry.url) {\n      // Trim URL to the first 200 characters.\n      transaction.setTag('lcp.url', lcpEntry.url.trim().slice(0, 200));\n    }\n\n    transaction.setTag('lcp.size', lcpEntry.size);\n  }\n\n  // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n  if (clsEntry && clsEntry.sources) {\n    IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS Data');\n    clsEntry.sources.forEach((source, index) =>\n      transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n    );\n  }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/layout-instability/#sec-layout-shift\nexport interface LayoutShift extends PerformanceEntry {\n  value: number;\n  hadRecentInput: boolean;\n  sources: Array<LayoutShiftAttribution>;\n  toJSON(): Record<string, unknown>;\n}\n\nexport interface LayoutShiftAttribution {\n  node?: Node;\n  previousRect: DOMRectReadOnly;\n  currentRect: DOMRectReadOnly;\n}\n\nexport const getCLS = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n  const metric = initMetric('CLS', 0);\n  let report: ReturnType<typeof bindReporter>;\n\n  let sessionValue = 0;\n  let sessionEntries: PerformanceEntry[] = [];\n\n  const entryHandler = (entry: LayoutShift): void => {\n    // Only count layout shifts without recent user input.\n    // TODO: Figure out why entry can be undefined\n    if (entry && !entry.hadRecentInput) {\n      const firstSessionEntry = sessionEntries[0];\n      const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n      // If the entry occurred less than 1 second after the previous entry and\n      // less than 5 seconds after the first entry in the session, include the\n      // entry in the current session. Otherwise, start a new session.\n      if (\n        sessionValue &&\n        sessionEntries.length !== 0 &&\n        entry.startTime - lastSessionEntry.startTime < 1000 &&\n        entry.startTime - firstSessionEntry.startTime < 5000\n      ) {\n        sessionValue += entry.value;\n        sessionEntries.push(entry);\n      } else {\n        sessionValue = entry.value;\n        sessionEntries = [entry];\n      }\n\n      // If the current session value is larger than the current CLS value,\n      // update CLS and the entries contributing to it.\n      if (sessionValue > metric.value) {\n        metric.value = sessionValue;\n        metric.entries = sessionEntries;\n        if (report) {\n          report();\n        }\n      }\n    }\n  };\n\n  const po = observe('layout-shift', entryHandler as PerformanceEntryHandler);\n  if (po) {\n    report = bindReporter(onReport, metric, reportAllChanges);\n\n    onHidden(() => {\n      po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n      report(true);\n    });\n  }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { PerformanceEventTiming, ReportHandler } from './types';\n\nexport const getFID = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n  const visibilityWatcher = getVisibilityWatcher();\n  const metric = initMetric('FID');\n  let report: ReturnType<typeof bindReporter>;\n\n  const entryHandler = (entry: PerformanceEventTiming): void => {\n    // Only report if the page wasn't hidden prior to the first input.\n    if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n      metric.value = entry.processingStart - entry.startTime;\n      metric.entries.push(entry);\n      report(true);\n    }\n  };\n\n  const po = observe('first-input', entryHandler as PerformanceEntryHandler);\n  if (po) {\n    report = bindReporter(onReport, metric, reportAllChanges);\n    onHidden(() => {\n      po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n      po.disconnect();\n    }, true);\n  }\n};\n","import { addInstrumentationHandler, isInstanceOf, isMatchingPattern } from '@sentry/utils';\n\nimport { Span } from '../span';\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\n\nexport const DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n  /**\n   * List of strings / regex where the integration should create Spans out of. Additionally this will be used\n   * to define which outgoing requests the `sentry-trace` header will be attached to.\n   *\n   * Default: ['localhost', /^\\//] {@see DEFAULT_TRACING_ORIGINS}\n   */\n  tracingOrigins: Array<string | RegExp>;\n\n  /**\n   * Flag to disable patching all together for fetch requests.\n   *\n   * Default: true\n   */\n  traceFetch: boolean;\n\n  /**\n   * Flag to disable patching all together for xhr requests.\n   *\n   * Default: true\n   */\n  traceXHR: boolean;\n\n  /**\n   * This function will be called before creating a span for a request with the given url.\n   * Return false if you don't want a span for the given url.\n   *\n   * By default it uses the `tracingOrigins` options as a url match.\n   */\n  shouldCreateSpanForRequest?(url: string): boolean;\n}\n\n/** Data returned from fetch callback */\nexport interface FetchData {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  args: any[]; // the arguments passed to the fetch call itself\n  fetchData?: {\n    method: string;\n    url: string;\n    // span_id\n    __span?: string;\n  };\n\n  // TODO Should this be unknown instead? If we vendor types, make it a Response\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  response?: any;\n  error?: unknown;\n\n  startTimestamp: number;\n  endTimestamp?: number;\n}\n\n/** Data returned from XHR request */\nexport interface XHRData {\n  xhr?: {\n    __sentry_xhr__?: {\n      method: string;\n      url: string;\n      status_code: number;\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      data: Record<string, any>;\n    };\n    __sentry_xhr_span_id__?: string;\n    setRequestHeader?: (key: string, val: string) => void;\n    __sentry_own_request__?: boolean;\n  };\n  startTimestamp: number;\n  endTimestamp?: number;\n}\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n  traceFetch: true,\n  traceXHR: true,\n  tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests  */\nexport function instrumentOutgoingRequests(_options?: Partial<RequestInstrumentationOptions>): void {\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n    ...defaultRequestInstrumentationOptions,\n    ..._options,\n  };\n\n  // We should cache url -> decision so that we don't have to compute\n  // regexp everytime we create a request.\n  const urlMap: Record<string, boolean> = {};\n\n  const defaultShouldCreateSpan = (url: string): boolean => {\n    if (urlMap[url]) {\n      return urlMap[url];\n    }\n    const origins = tracingOrigins;\n    urlMap[url] =\n      origins.some((origin: string | RegExp) => isMatchingPattern(url, origin)) &&\n      !isMatchingPattern(url, 'sentry_key');\n    return urlMap[url];\n  };\n\n  // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n  // That's why we filter out already unwanted Spans from tracingOrigins\n  let shouldCreateSpan = defaultShouldCreateSpan;\n  if (typeof shouldCreateSpanForRequest === 'function') {\n    shouldCreateSpan = (url: string) => {\n      return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n    };\n  }\n\n  const spans: Record<string, Span> = {};\n\n  if (traceFetch) {\n    addInstrumentationHandler('fetch', (handlerData: FetchData) => {\n      fetchCallback(handlerData, shouldCreateSpan, spans);\n    });\n  }\n\n  if (traceXHR) {\n    addInstrumentationHandler('xhr', (handlerData: XHRData) => {\n      xhrCallback(handlerData, shouldCreateSpan, spans);\n    });\n  }\n}\n\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(\n  handlerData: FetchData,\n  shouldCreateSpan: (url: string) => boolean,\n  spans: Record<string, Span>,\n): void {\n  if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n    return;\n  }\n\n  if (handlerData.endTimestamp) {\n    const spanId = handlerData.fetchData.__span;\n    if (!spanId) return;\n\n    const span = spans[spanId];\n    if (span) {\n      if (handlerData.response) {\n        // TODO (kmclb) remove this once types PR goes through\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        span.setHttpStatus(handlerData.response.status);\n      } else if (handlerData.error) {\n        span.setStatus('internal_error');\n      }\n      span.finish();\n\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete spans[spanId];\n    }\n    return;\n  }\n\n  const activeTransaction = getActiveTransaction();\n  if (activeTransaction) {\n    const span = activeTransaction.startChild({\n      data: {\n        ...handlerData.fetchData,\n        type: 'fetch',\n      },\n      description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n      op: 'http.client',\n    });\n\n    handlerData.fetchData.__span = span.spanId;\n    spans[span.spanId] = span;\n\n    const request = (handlerData.args[0] = handlerData.args[0] as string | Request);\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const options = (handlerData.args[1] = (handlerData.args[1] as { [key: string]: any }) || {});\n    let headers = options.headers;\n    if (isInstanceOf(request, Request)) {\n      headers = (request as Request).headers;\n    }\n    if (headers) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      if (typeof headers.append === 'function') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        headers.append('sentry-trace', span.toTraceparent());\n      } else if (Array.isArray(headers)) {\n        headers = [...headers, ['sentry-trace', span.toTraceparent()]];\n      } else {\n        headers = { ...headers, 'sentry-trace': span.toTraceparent() };\n      }\n    } else {\n      headers = { 'sentry-trace': span.toTraceparent() };\n    }\n    options.headers = headers;\n  }\n}\n\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(\n  handlerData: XHRData,\n  shouldCreateSpan: (url: string) => boolean,\n  spans: Record<string, Span>,\n): void {\n  if (\n    !hasTracingEnabled() ||\n    (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n    !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n  ) {\n    return;\n  }\n\n  const xhr = handlerData.xhr.__sentry_xhr__;\n\n  // check first if the request has finished and is tracked by an existing span which should now end\n  if (handlerData.endTimestamp) {\n    const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n    if (!spanId) return;\n\n    const span = spans[spanId];\n    if (span) {\n      span.setHttpStatus(xhr.status_code);\n      span.finish();\n\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete spans[spanId];\n    }\n    return;\n  }\n\n  // if not, create a new span to track it\n  const activeTransaction = getActiveTransaction();\n  if (activeTransaction) {\n    const span = activeTransaction.startChild({\n      data: {\n        ...xhr.data,\n        type: 'xhr',\n        method: xhr.method,\n        url: xhr.url,\n      },\n      description: `${xhr.method} ${xhr.url}`,\n      op: 'http.client',\n    });\n\n    handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n    spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n    if (handlerData.xhr.setRequestHeader) {\n      try {\n        handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n      } catch (_) {\n        // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n      }\n    }\n  }\n}\n","import { Transaction, TransactionContext } from '@sentry/types';\nimport { addInstrumentationHandler, getGlobalObject, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\nconst global = getGlobalObject<Window>();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults<T extends Transaction>(\n  customStartTransaction: (context: TransactionContext) => T | undefined,\n  startTransactionOnPageLoad: boolean = true,\n  startTransactionOnLocationChange: boolean = true,\n): void {\n  if (!global || !global.location) {\n    IS_DEBUG_BUILD && logger.warn('Could not initialize routing instrumentation due to invalid location');\n    return;\n  }\n\n  let startingUrl: string | undefined = global.location.href;\n\n  let activeTransaction: T | undefined;\n  if (startTransactionOnPageLoad) {\n    activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'pageload' });\n  }\n\n  if (startTransactionOnLocationChange) {\n    addInstrumentationHandler('history', ({ to, from }: { to: string; from?: string }) => {\n      /**\n       * This early return is there to account for some cases where a navigation transaction starts right after\n       * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n       * create an uneccessary navigation transaction.\n       *\n       * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n       * only be caused in certain development environments where the usage of a hot module reloader is causing\n       * errors.\n       */\n      if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n        startingUrl = undefined;\n        return;\n      }\n\n      if (from !== to) {\n        startingUrl = undefined;\n        if (activeTransaction) {\n          IS_DEBUG_BUILD && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n          // If there's an open transaction on the scope, we need to finish it before creating an new one.\n          activeTransaction.finish();\n        }\n        activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'navigation' });\n      }\n    });\n  }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration, Transaction, TransactionContext } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_IDLE_TIMEOUT, IdleTransaction } from '../idletransaction';\nimport { extractTraceparentData, secToMs } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { MetricsInstrumentation } from './metrics';\nimport {\n  defaultRequestInstrumentationOptions,\n  instrumentOutgoingRequests,\n  RequestInstrumentationOptions,\n} from './request';\nimport { instrumentRoutingWithDefaults } from './router';\n\nexport const DEFAULT_MAX_TRANSACTION_DURATION_SECONDS = 600;\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n  /**\n   * The time to wait in ms until the transaction will be finished. The transaction will use the end timestamp of\n   * the last finished span as the endtime for the transaction.\n   * Time is in ms.\n   *\n   * Default: 1000\n   */\n  idleTimeout: number;\n\n  /**\n   * Flag to enable/disable creation of `navigation` transaction on history changes.\n   *\n   * Default: true\n   */\n  startTransactionOnLocationChange: boolean;\n\n  /**\n   * Flag to enable/disable creation of `pageload` transaction on first pageload.\n   *\n   * Default: true\n   */\n  startTransactionOnPageLoad: boolean;\n\n  /**\n   * The maximum duration of a transaction before it will be marked as \"deadline_exceeded\".\n   * If you never want to mark a transaction set it to 0.\n   * Time is in seconds.\n   *\n   * Default: 600\n   */\n  maxTransactionDuration: number;\n\n  /**\n   * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n   * not suited towards doing precise measurements of operations. By default, we recommend that this option\n   * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n   *\n   * Default: true\n   */\n  markBackgroundTransactions: boolean;\n\n  /**\n   * _metricOptions allows the user to send options to change how metrics are collected.\n   *\n   * _metricOptions is currently experimental.\n   *\n   * Default: undefined\n   */\n  _metricOptions?: Partial<{ _reportAllChanges: boolean }>;\n\n  /**\n   * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n   * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n   *\n   * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n   *\n   * @param context: The context data which will be passed to `startTransaction` by default\n   *\n   * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n   */\n  beforeNavigate?(context: TransactionContext): TransactionContext | undefined;\n\n  /**\n   * Instrumentation that creates routing change transactions. By default creates\n   * pageload and navigation transactions.\n   */\n  routingInstrumentation<T extends Transaction>(\n    customStartTransaction: (context: TransactionContext) => T | undefined,\n    startTransactionOnPageLoad?: boolean,\n    startTransactionOnLocationChange?: boolean,\n  ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n  idleTimeout: DEFAULT_IDLE_TIMEOUT,\n  markBackgroundTransactions: true,\n  maxTransactionDuration: DEFAULT_MAX_TRANSACTION_DURATION_SECONDS,\n  routingInstrumentation: instrumentRoutingWithDefaults,\n  startTransactionOnLocationChange: true,\n  startTransactionOnPageLoad: true,\n  ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nexport class BrowserTracing implements Integration {\n  /**\n   * @inheritDoc\n   */\n  public static id: string = 'BrowserTracing';\n\n  /** Browser Tracing integration options */\n  public options: BrowserTracingOptions;\n\n  /**\n   * @inheritDoc\n   */\n  public name: string = BrowserTracing.id;\n\n  private _getCurrentHub?: () => Hub;\n\n  private readonly _metrics: MetricsInstrumentation;\n\n  private readonly _emitOptionsWarning?: boolean;\n\n  /** Store configured idle timeout so that it can be added as a tag to transactions */\n  private _configuredIdleTimeout: BrowserTracingOptions['idleTimeout'] | undefined = undefined;\n\n  public constructor(_options?: Partial<BrowserTracingOptions>) {\n    let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n    // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n    if (_options) {\n      this._configuredIdleTimeout = _options.idleTimeout;\n      if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n        tracingOrigins = _options.tracingOrigins;\n      } else {\n        IS_DEBUG_BUILD && (this._emitOptionsWarning = true);\n      }\n    }\n\n    this.options = {\n      ...DEFAULT_BROWSER_TRACING_OPTIONS,\n      ..._options,\n      tracingOrigins,\n    };\n\n    const { _metricOptions } = this.options;\n    this._metrics = new MetricsInstrumentation(_metricOptions && _metricOptions._reportAllChanges);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n    this._getCurrentHub = getCurrentHub;\n\n    if (this._emitOptionsWarning) {\n      IS_DEBUG_BUILD &&\n        logger.warn(\n          '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n        );\n      IS_DEBUG_BUILD &&\n        logger.warn(\n          `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n        );\n    }\n\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    const {\n      routingInstrumentation: instrumentRouting,\n      startTransactionOnLocationChange,\n      startTransactionOnPageLoad,\n      markBackgroundTransactions,\n      traceFetch,\n      traceXHR,\n      tracingOrigins,\n      shouldCreateSpanForRequest,\n    } = this.options;\n\n    instrumentRouting(\n      (context: TransactionContext) => this._createRouteTransaction(context),\n      startTransactionOnPageLoad,\n      startTransactionOnLocationChange,\n    );\n\n    if (markBackgroundTransactions) {\n      registerBackgroundTabDetection();\n    }\n\n    instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n  }\n\n  /** Create routing idle transaction. */\n  private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n    if (!this._getCurrentHub) {\n      IS_DEBUG_BUILD &&\n        logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n      return undefined;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    const { beforeNavigate, idleTimeout, maxTransactionDuration } = this.options;\n\n    const parentContextFromHeader = context.op === 'pageload' ? getHeaderContext() : undefined;\n\n    const expandedContext = {\n      ...context,\n      ...parentContextFromHeader,\n      trimEnd: true,\n    };\n    const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n    // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n    // from being sent to Sentry).\n    const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n    if (finalContext.sampled === false) {\n      IS_DEBUG_BUILD && logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n    }\n\n    IS_DEBUG_BUILD && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n    const hub = this._getCurrentHub();\n    const { location } = getGlobalObject() as WindowOrWorkerGlobalScope & { location: Location };\n\n    const idleTransaction = startIdleTransaction(\n      hub,\n      finalContext,\n      idleTimeout,\n      true,\n      { location }, // for use in the tracesSampler\n    );\n    idleTransaction.registerBeforeFinishCallback((transaction, endTimestamp) => {\n      this._metrics.addPerformanceEntries(transaction);\n      adjustTransactionDuration(secToMs(maxTransactionDuration), transaction, endTimestamp);\n    });\n\n    idleTransaction.setTag('idleTimeout', this._configuredIdleTimeout);\n\n    return idleTransaction as Transaction;\n  }\n}\n\n/**\n * Gets transaction context from a sentry-trace meta.\n *\n * @returns Transaction context data from the header or undefined if there's no header or the header is malformed\n */\nexport function getHeaderContext(): Partial<TransactionContext> | undefined {\n  const header = getMetaContent('sentry-trace');\n  if (header) {\n    return extractTraceparentData(header);\n  }\n\n  return undefined;\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | null {\n  const el = getGlobalObject<Window>().document.querySelector(`meta[name=${metaName}]`);\n  return el ? el.getAttribute('content') : null;\n}\n\n/** Adjusts transaction value based on max transaction duration */\nfunction adjustTransactionDuration(maxDuration: number, transaction: IdleTransaction, endTimestamp: number): void {\n  const diff = endTimestamp - transaction.startTimestamp;\n  const isOutdatedTransaction = endTimestamp && (diff > maxDuration || diff < 0);\n  if (isOutdatedTransaction) {\n    transaction.setStatus('deadline_exceeded');\n    transaction.setTag('maxTransactionDurationExceeded', 'true');\n  }\n}\n","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\n\nexport { Integrations };\n\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing } from './browser';\n\nexport { Span, SpanStatusType, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport {\n  // TODO deprecate old name in v7\n  instrumentOutgoingRequests as registerRequestInstrumentation,\n  RequestInstrumentationOptions,\n  defaultRequestInstrumentationOptions,\n} from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n\n// We are patching the global object with our hub extension methods\naddExtensionMethods();\n\nexport { addExtensionMethods };\n\nexport {\n  extractTraceparentData,\n  getActiveTransaction,\n  hasTracingEnabled,\n  stripUrlQueryAndFragment,\n  TRACEPARENT_REGEXP,\n} from './utils';\n","import{i as initialize}from\"./ionic-global-63a97a32.js\";var globalScripts=initialize;export{globalScripts as g};","import{C as CSS,p as plt,w as win,a as promiseResolve,b as bootstrapLazy}from\"./index-7a8b7a1c.js\";import{g as globalScripts}from\"./app-globals-fd807b9a.js\";import\"./ionic-global-63a97a32.js\";var patchEsm=function(){if(!(CSS&&CSS.supports&&CSS.supports(\"color\",\"var(--c)\"))){return import(\"./css-shim-2ccf4dec.js\").then((function(){if(plt.$cssShim$=win.__cssshim){return plt.$cssShim$.i()}else{return 0}}))}return promiseResolve()};var defineCustomElements=function(e,o){if(typeof window===\"undefined\")return Promise.resolve();return patchEsm().then((function(){globalScripts();return bootstrapLazy(JSON.parse('[[\"ion-select_3\",[[2,\"ion-select-popover\",{\"header\":[1],\"subHeader\":[1,\"sub-header\"],\"message\":[1],\"options\":[16]},[[0,\"ionChange\",\"onSelect\"]]],[33,\"ion-select\",{\"disabled\":[4],\"cancelText\":[1,\"cancel-text\"],\"okText\":[1,\"ok-text\"],\"placeholder\":[1],\"name\":[1],\"selectedText\":[1,\"selected-text\"],\"multiple\":[4],\"interface\":[1],\"interfaceOptions\":[8,\"interface-options\"],\"compareWith\":[1,\"compare-with\"],\"value\":[1032],\"isExpanded\":[32],\"open\":[64]}],[1,\"ion-select-option\",{\"disabled\":[4],\"value\":[8]}]]],[\"ion-menu_3\",[[33,\"ion-menu-button\",{\"color\":[513],\"disabled\":[4],\"menu\":[1],\"autoHide\":[4,\"auto-hide\"],\"type\":[1],\"visible\":[32]},[[16,\"ionMenuChange\",\"visibilityChanged\"],[16,\"ionSplitPaneVisible\",\"visibilityChanged\"]]],[33,\"ion-menu\",{\"contentId\":[513,\"content-id\"],\"menuId\":[513,\"menu-id\"],\"type\":[1025],\"disabled\":[1028],\"side\":[513],\"swipeGesture\":[4,\"swipe-gesture\"],\"maxEdgeStart\":[2,\"max-edge-start\"],\"isPaneVisible\":[32],\"isEndSide\":[32],\"isOpen\":[64],\"isActive\":[64],\"open\":[64],\"close\":[64],\"toggle\":[64],\"setOpen\":[64]},[[16,\"ionSplitPaneVisible\",\"onSplitPaneChanged\"],[2,\"click\",\"onBackdropClick\"],[0,\"keydown\",\"onKeydown\"]]],[1,\"ion-menu-toggle\",{\"menu\":[1],\"autoHide\":[4,\"auto-hide\"],\"visible\":[32]},[[16,\"ionMenuChange\",\"visibilityChanged\"],[16,\"ionSplitPaneVisible\",\"visibilityChanged\"]]]]],[\"ion-action-sheet\",[[34,\"ion-action-sheet\",{\"overlayIndex\":[2,\"overlay-index\"],\"keyboardClose\":[4,\"keyboard-close\"],\"enterAnimation\":[16],\"leaveAnimation\":[16],\"buttons\":[16],\"cssClass\":[1,\"css-class\"],\"backdropDismiss\":[4,\"backdrop-dismiss\"],\"header\":[1],\"subHeader\":[1,\"sub-header\"],\"translucent\":[4],\"animated\":[4],\"htmlAttributes\":[16],\"present\":[64],\"dismiss\":[64],\"onDidDismiss\":[64],\"onWillDismiss\":[64]}]]],[\"ion-fab_3\",[[33,\"ion-fab-button\",{\"color\":[513],\"activated\":[4],\"disabled\":[4],\"download\":[1],\"href\":[1],\"rel\":[1],\"routerDirection\":[1,\"router-direction\"],\"routerAnimation\":[16],\"target\":[1],\"show\":[4],\"translucent\":[4],\"type\":[1],\"size\":[1],\"closeIcon\":[1,\"close-icon\"]}],[1,\"ion-fab\",{\"horizontal\":[1],\"vertical\":[1],\"edge\":[4],\"activated\":[1028],\"close\":[64]}],[1,\"ion-fab-list\",{\"activated\":[4],\"side\":[1]}]]],[\"ion-refresher_2\",[[0,\"ion-refresher-content\",{\"pullingIcon\":[1025,\"pulling-icon\"],\"pullingText\":[1,\"pulling-text\"],\"refreshingSpinner\":[1025,\"refreshing-spinner\"],\"refreshingText\":[1,\"refreshing-text\"]}],[32,\"ion-refresher\",{\"pullMin\":[2,\"pull-min\"],\"pullMax\":[2,\"pull-max\"],\"closeDuration\":[1,\"close-duration\"],\"snapbackDuration\":[1,\"snapback-duration\"],\"pullFactor\":[2,\"pull-factor\"],\"disabled\":[4],\"nativeRefresher\":[32],\"state\":[32],\"complete\":[64],\"cancel\":[64],\"getProgress\":[64]}]]],[\"ion-alert\",[[34,\"ion-alert\",{\"overlayIndex\":[2,\"overlay-index\"],\"keyboardClose\":[4,\"keyboard-close\"],\"enterAnimation\":[16],\"leaveAnimation\":[16],\"cssClass\":[1,\"css-class\"],\"header\":[1],\"subHeader\":[1,\"sub-header\"],\"message\":[1],\"buttons\":[16],\"inputs\":[1040],\"backdropDismiss\":[4,\"backdrop-dismiss\"],\"translucent\":[4],\"animated\":[4],\"htmlAttributes\":[16],\"present\":[64],\"dismiss\":[64],\"onDidDismiss\":[64],\"onWillDismiss\":[64]},[[4,\"keydown\",\"onKeydown\"]]]]],[\"ion-back-button\",[[33,\"ion-back-button\",{\"color\":[513],\"defaultHref\":[1025,\"default-href\"],\"disabled\":[516],\"icon\":[1],\"text\":[1],\"type\":[1],\"routerAnimation\":[16]}]]],[\"ion-loading\",[[34,\"ion-loading\",{\"overlayIndex\":[2,\"overlay-index\"],\"keyboardClose\":[4,\"keyboard-close\"],\"enterAnimation\":[16],\"leaveAnimation\":[16],\"message\":[1],\"cssClass\":[1,\"css-class\"],\"duration\":[2],\"backdropDismiss\":[4,\"backdrop-dismiss\"],\"showBackdrop\":[4,\"show-backdrop\"],\"spinner\":[1025],\"translucent\":[4],\"animated\":[4],\"htmlAttributes\":[16],\"present\":[64],\"dismiss\":[64],\"onDidDismiss\":[64],\"onWillDismiss\":[64]}]]],[\"ion-toast\",[[33,\"ion-toast\",{\"overlayIndex\":[2,\"overlay-index\"],\"color\":[513],\"enterAnimation\":[16],\"leaveAnimation\":[16],\"cssClass\":[1,\"css-class\"],\"duration\":[2],\"header\":[1],\"message\":[1],\"keyboardClose\":[4,\"keyboard-close\"],\"position\":[1],\"buttons\":[16],\"translucent\":[4],\"animated\":[4],\"htmlAttributes\":[16],\"present\":[64],\"dismiss\":[64],\"onDidDismiss\":[64],\"onWillDismiss\":[64]}]]],[\"ion-card_5\",[[33,\"ion-card\",{\"color\":[513],\"button\":[4],\"type\":[1],\"disabled\":[4],\"download\":[1],\"href\":[1],\"rel\":[1],\"routerDirection\":[1,\"router-direction\"],\"routerAnimation\":[16],\"target\":[1]}],[32,\"ion-card-content\"],[33,\"ion-card-header\",{\"color\":[513],\"translucent\":[4]}],[33,\"ion-card-subtitle\",{\"color\":[513]}],[33,\"ion-card-title\",{\"color\":[513]}]]],[\"ion-item-option_3\",[[33,\"ion-item-option\",{\"color\":[513],\"disabled\":[4],\"download\":[1],\"expandable\":[4],\"href\":[1],\"rel\":[1],\"target\":[1],\"type\":[1]}],[32,\"ion-item-options\",{\"side\":[1],\"fireSwipeEvent\":[64]}],[0,\"ion-item-sliding\",{\"disabled\":[4],\"state\":[32],\"getOpenAmount\":[64],\"getSlidingRatio\":[64],\"open\":[64],\"close\":[64],\"closeOpened\":[64]}]]],[\"ion-infinite-scroll_2\",[[32,\"ion-infinite-scroll-content\",{\"loadingSpinner\":[1025,\"loading-spinner\"],\"loadingText\":[1,\"loading-text\"]}],[0,\"ion-infinite-scroll\",{\"threshold\":[1],\"disabled\":[4],\"position\":[1],\"isLoading\":[32],\"complete\":[64]}]]],[\"ion-reorder_2\",[[33,\"ion-reorder\",null,[[2,\"click\",\"onClick\"]]],[0,\"ion-reorder-group\",{\"disabled\":[4],\"state\":[32],\"complete\":[64]}]]],[\"ion-segment_2\",[[33,\"ion-segment-button\",{\"disabled\":[4],\"layout\":[1],\"type\":[1],\"value\":[1],\"checked\":[32]}],[33,\"ion-segment\",{\"color\":[513],\"disabled\":[4],\"scrollable\":[4],\"swipeGesture\":[4,\"swipe-gesture\"],\"value\":[1025],\"activated\":[32]}]]],[\"ion-tab-bar_2\",[[33,\"ion-tab-button\",{\"disabled\":[4],\"download\":[1],\"href\":[1],\"rel\":[1],\"layout\":[1025],\"selected\":[1028],\"tab\":[1],\"target\":[1]},[[8,\"ionTabBarChanged\",\"onTabBarChanged\"]]],[33,\"ion-tab-bar\",{\"color\":[513],\"selectedTab\":[1,\"selected-tab\"],\"translucent\":[4],\"keyboardVisible\":[32]}]]],[\"ion-chip\",[[33,\"ion-chip\",{\"color\":[513],\"outline\":[4],\"disabled\":[4]}]]],[\"ion-modal\",[[34,\"ion-modal\",{\"overlayIndex\":[2,\"overlay-index\"],\"delegate\":[16],\"keyboardClose\":[4,\"keyboard-close\"],\"enterAnimation\":[16],\"leaveAnimation\":[16],\"component\":[1],\"componentProps\":[16],\"cssClass\":[1,\"css-class\"],\"backdropDismiss\":[4,\"backdrop-dismiss\"],\"showBackdrop\":[4,\"show-backdrop\"],\"animated\":[4],\"swipeToClose\":[4,\"swipe-to-close\"],\"presentingElement\":[16],\"htmlAttributes\":[16],\"present\":[64],\"dismiss\":[64],\"onDidDismiss\":[64],\"onWillDismiss\":[64]}]]],[\"ion-popover\",[[34,\"ion-popover\",{\"delegate\":[16],\"overlayIndex\":[2,\"overlay-index\"],\"enterAnimation\":[16],\"leaveAnimation\":[16],\"component\":[1],\"componentProps\":[16],\"keyboardClose\":[4,\"keyboard-close\"],\"cssClass\":[1,\"css-class\"],\"backdropDismiss\":[4,\"backdrop-dismiss\"],\"event\":[8],\"showBackdrop\":[4,\"show-backdrop\"],\"translucent\":[4],\"animated\":[4],\"htmlAttributes\":[16],\"present\":[64],\"dismiss\":[64],\"onDidDismiss\":[64],\"onWillDismiss\":[64]}]]],[\"ion-searchbar\",[[34,\"ion-searchbar\",{\"color\":[513],\"animated\":[4],\"autocomplete\":[1],\"autocorrect\":[1],\"cancelButtonIcon\":[1,\"cancel-button-icon\"],\"cancelButtonText\":[1,\"cancel-button-text\"],\"clearIcon\":[1,\"clear-icon\"],\"debounce\":[2],\"disabled\":[4],\"inputmode\":[1],\"enterkeyhint\":[1],\"placeholder\":[1],\"searchIcon\":[1,\"search-icon\"],\"showCancelButton\":[1,\"show-cancel-button\"],\"showClearButton\":[1,\"show-clear-button\"],\"spellcheck\":[4],\"type\":[1],\"value\":[1025],\"focused\":[32],\"noAnimate\":[32],\"setFocus\":[64],\"getInputElement\":[64]}]]],[\"ion-app_8\",[[0,\"ion-app\"],[34,\"ion-buttons\",{\"collapse\":[4]}],[1,\"ion-content\",{\"color\":[513],\"fullscreen\":[4],\"forceOverscroll\":[1028,\"force-overscroll\"],\"scrollX\":[4,\"scroll-x\"],\"scrollY\":[4,\"scroll-y\"],\"scrollEvents\":[4,\"scroll-events\"],\"getScrollElement\":[64],\"scrollToTop\":[64],\"scrollToBottom\":[64],\"scrollByPoint\":[64],\"scrollToPoint\":[64]},[[8,\"appload\",\"onAppLoad\"]]],[36,\"ion-footer\",{\"translucent\":[4]}],[36,\"ion-header\",{\"collapse\":[1],\"translucent\":[4]}],[1,\"ion-router-outlet\",{\"mode\":[1025],\"delegate\":[16],\"animated\":[4],\"animation\":[16],\"swipeHandler\":[16],\"commit\":[64],\"setRouteId\":[64],\"getRouteId\":[64]}],[33,\"ion-title\",{\"color\":[513],\"size\":[1]}],[33,\"ion-toolbar\",{\"color\":[513]},[[0,\"ionStyle\",\"childrenStyle\"]]]]],[\"ion-route_4\",[[0,\"ion-route\",{\"url\":[1],\"component\":[1],\"componentProps\":[16],\"beforeLeave\":[16],\"beforeEnter\":[16]}],[0,\"ion-route-redirect\",{\"from\":[1],\"to\":[1]}],[0,\"ion-router\",{\"root\":[1],\"useHash\":[4,\"use-hash\"],\"canTransition\":[64],\"push\":[64],\"back\":[64],\"printDebug\":[64],\"navChanged\":[64]},[[8,\"popstate\",\"onPopState\"],[4,\"ionBackButton\",\"onBackButton\"]]],[1,\"ion-router-link\",{\"color\":[513],\"href\":[1],\"rel\":[1],\"routerDirection\":[1,\"router-direction\"],\"routerAnimation\":[16],\"target\":[1]}]]],[\"ion-avatar_3\",[[33,\"ion-avatar\"],[33,\"ion-badge\",{\"color\":[513]}],[1,\"ion-thumbnail\"]]],[\"ion-col_3\",[[1,\"ion-col\",{\"offset\":[1],\"offsetXs\":[1,\"offset-xs\"],\"offsetSm\":[1,\"offset-sm\"],\"offsetMd\":[1,\"offset-md\"],\"offsetLg\":[1,\"offset-lg\"],\"offsetXl\":[1,\"offset-xl\"],\"pull\":[1],\"pullXs\":[1,\"pull-xs\"],\"pullSm\":[1,\"pull-sm\"],\"pullMd\":[1,\"pull-md\"],\"pullLg\":[1,\"pull-lg\"],\"pullXl\":[1,\"pull-xl\"],\"push\":[1],\"pushXs\":[1,\"push-xs\"],\"pushSm\":[1,\"push-sm\"],\"pushMd\":[1,\"push-md\"],\"pushLg\":[1,\"push-lg\"],\"pushXl\":[1,\"push-xl\"],\"size\":[1],\"sizeXs\":[1,\"size-xs\"],\"sizeSm\":[1,\"size-sm\"],\"sizeMd\":[1,\"size-md\"],\"sizeLg\":[1,\"size-lg\"],\"sizeXl\":[1,\"size-xl\"]},[[9,\"resize\",\"onResize\"]]],[1,\"ion-grid\",{\"fixed\":[4]}],[1,\"ion-row\"]]],[\"ion-nav_2\",[[1,\"ion-nav\",{\"delegate\":[16],\"swipeGesture\":[1028,\"swipe-gesture\"],\"animated\":[4],\"animation\":[16],\"rootParams\":[16],\"root\":[1],\"push\":[64],\"insert\":[64],\"insertPages\":[64],\"pop\":[64],\"popTo\":[64],\"popToRoot\":[64],\"removeIndex\":[64],\"setRoot\":[64],\"setPages\":[64],\"setRouteId\":[64],\"getRouteId\":[64],\"getActive\":[64],\"getByIndex\":[64],\"canGoBack\":[64],\"getPrevious\":[64]}],[0,\"ion-nav-link\",{\"component\":[1],\"componentProps\":[16],\"routerDirection\":[1,\"router-direction\"],\"routerAnimation\":[16]}]]],[\"ion-slide_2\",[[0,\"ion-slide\"],[36,\"ion-slides\",{\"options\":[8],\"pager\":[4],\"scrollbar\":[4],\"update\":[64],\"updateAutoHeight\":[64],\"slideTo\":[64],\"slideNext\":[64],\"slidePrev\":[64],\"getActiveIndex\":[64],\"getPreviousIndex\":[64],\"length\":[64],\"isEnd\":[64],\"isBeginning\":[64],\"startAutoplay\":[64],\"stopAutoplay\":[64],\"lockSwipeToNext\":[64],\"lockSwipeToPrev\":[64],\"lockSwipes\":[64],\"getSwiper\":[64]}]]],[\"ion-tab_2\",[[1,\"ion-tab\",{\"active\":[1028],\"delegate\":[16],\"tab\":[1],\"component\":[1],\"setActive\":[64]}],[1,\"ion-tabs\",{\"useRouter\":[1028,\"use-router\"],\"selectedTab\":[32],\"select\":[64],\"getTab\":[64],\"getSelected\":[64],\"setRouteId\":[64],\"getRouteId\":[64]}]]],[\"ion-checkbox\",[[33,\"ion-checkbox\",{\"color\":[513],\"name\":[1],\"checked\":[1028],\"indeterminate\":[1028],\"disabled\":[4],\"value\":[1]}]]],[\"ion-img\",[[1,\"ion-img\",{\"alt\":[1],\"src\":[1],\"loadSrc\":[32],\"loadError\":[32]}]]],[\"ion-input\",[[34,\"ion-input\",{\"fireFocusEvents\":[4,\"fire-focus-events\"],\"color\":[513],\"accept\":[1],\"autocapitalize\":[1],\"autocomplete\":[1],\"autocorrect\":[1],\"autofocus\":[4],\"clearInput\":[4,\"clear-input\"],\"clearOnEdit\":[4,\"clear-on-edit\"],\"debounce\":[2],\"disabled\":[4],\"enterkeyhint\":[1],\"inputmode\":[1],\"max\":[1],\"maxlength\":[2],\"min\":[1],\"minlength\":[2],\"multiple\":[4],\"name\":[1],\"pattern\":[1],\"placeholder\":[1],\"readonly\":[4],\"required\":[4],\"spellcheck\":[4],\"step\":[1],\"size\":[2],\"type\":[1],\"value\":[1032],\"hasFocus\":[32],\"setFocus\":[64],\"setBlur\":[64],\"getInputElement\":[64]}]]],[\"ion-progress-bar\",[[33,\"ion-progress-bar\",{\"type\":[1],\"reversed\":[4],\"value\":[2],\"buffer\":[2],\"color\":[513]}]]],[\"ion-range\",[[33,\"ion-range\",{\"color\":[513],\"debounce\":[2],\"name\":[1],\"dualKnobs\":[4,\"dual-knobs\"],\"min\":[2],\"max\":[2],\"pin\":[4],\"snaps\":[4],\"step\":[2],\"ticks\":[4],\"disabled\":[4],\"value\":[1026],\"ratioA\":[32],\"ratioB\":[32],\"pressedKnob\":[32]}]]],[\"ion-split-pane\",[[33,\"ion-split-pane\",{\"contentId\":[513,\"content-id\"],\"disabled\":[4],\"when\":[8],\"visible\":[32]}]]],[\"ion-text\",[[1,\"ion-text\",{\"color\":[513]}]]],[\"ion-textarea\",[[34,\"ion-textarea\",{\"fireFocusEvents\":[4,\"fire-focus-events\"],\"color\":[513],\"autocapitalize\":[1],\"autofocus\":[4],\"clearOnEdit\":[1028,\"clear-on-edit\"],\"debounce\":[2],\"disabled\":[4],\"inputmode\":[1],\"enterkeyhint\":[1],\"maxlength\":[2],\"minlength\":[2],\"name\":[1],\"placeholder\":[1],\"readonly\":[4],\"required\":[4],\"spellcheck\":[4],\"cols\":[2],\"rows\":[2],\"wrap\":[1],\"autoGrow\":[4,\"auto-grow\"],\"value\":[1025],\"hasFocus\":[32],\"setFocus\":[64],\"setBlur\":[64],\"getInputElement\":[64]}]]],[\"ion-toggle\",[[33,\"ion-toggle\",{\"color\":[513],\"name\":[1],\"checked\":[1028],\"disabled\":[4],\"value\":[1],\"activated\":[32]}]]],[\"ion-virtual-scroll\",[[0,\"ion-virtual-scroll\",{\"approxItemHeight\":[2,\"approx-item-height\"],\"approxHeaderHeight\":[2,\"approx-header-height\"],\"approxFooterHeight\":[2,\"approx-footer-height\"],\"headerFn\":[16],\"footerFn\":[16],\"items\":[16],\"itemHeight\":[16],\"headerHeight\":[16],\"footerHeight\":[16],\"renderItem\":[16],\"renderHeader\":[16],\"renderFooter\":[16],\"nodeRender\":[16],\"domRender\":[16],\"totalHeight\":[32],\"positionForItem\":[64],\"checkRange\":[64],\"checkEnd\":[64]},[[9,\"resize\",\"onResize\"]]]]],[\"ion-datetime_3\",[[34,\"ion-picker\",{\"overlayIndex\":[2,\"overlay-index\"],\"keyboardClose\":[4,\"keyboard-close\"],\"enterAnimation\":[16],\"leaveAnimation\":[16],\"buttons\":[16],\"columns\":[16],\"cssClass\":[1,\"css-class\"],\"duration\":[2],\"showBackdrop\":[4,\"show-backdrop\"],\"backdropDismiss\":[4,\"backdrop-dismiss\"],\"animated\":[4],\"htmlAttributes\":[16],\"presented\":[32],\"present\":[64],\"dismiss\":[64],\"onDidDismiss\":[64],\"onWillDismiss\":[64],\"getColumn\":[64]}],[33,\"ion-datetime\",{\"name\":[1],\"disabled\":[4],\"readonly\":[4],\"min\":[1025],\"max\":[1025],\"displayFormat\":[1,\"display-format\"],\"displayTimezone\":[1,\"display-timezone\"],\"pickerFormat\":[1,\"picker-format\"],\"cancelText\":[1,\"cancel-text\"],\"doneText\":[1,\"done-text\"],\"yearValues\":[8,\"year-values\"],\"monthValues\":[8,\"month-values\"],\"dayValues\":[8,\"day-values\"],\"hourValues\":[8,\"hour-values\"],\"minuteValues\":[8,\"minute-values\"],\"monthNames\":[1,\"month-names\"],\"monthShortNames\":[1,\"month-short-names\"],\"dayNames\":[1,\"day-names\"],\"dayShortNames\":[1,\"day-short-names\"],\"pickerOptions\":[16],\"placeholder\":[1],\"value\":[1025],\"isExpanded\":[32],\"open\":[64]}],[32,\"ion-picker-column\",{\"col\":[16]}]]],[\"ion-radio_2\",[[33,\"ion-radio\",{\"color\":[513],\"name\":[1],\"disabled\":[4],\"value\":[8],\"checked\":[32],\"buttonTabindex\":[32],\"setFocus\":[64],\"setButtonTabindex\":[64]}],[0,\"ion-radio-group\",{\"allowEmptySelection\":[4,\"allow-empty-selection\"],\"name\":[1],\"value\":[1032]},[[4,\"keydown\",\"onKeydown\"]]]]],[\"ion-spinner\",[[1,\"ion-spinner\",{\"color\":[513],\"duration\":[2],\"name\":[1],\"paused\":[4]}]]],[\"ion-backdrop\",[[33,\"ion-backdrop\",{\"visible\":[4],\"tappable\":[4],\"stopPropagation\":[4,\"stop-propagation\"]},[[2,\"click\",\"onMouseDown\"]]]]],[\"ion-ripple-effect\",[[1,\"ion-ripple-effect\",{\"type\":[1],\"addRipple\":[64]}]]],[\"ion-button_2\",[[33,\"ion-button\",{\"color\":[513],\"buttonType\":[1025,\"button-type\"],\"disabled\":[516],\"expand\":[513],\"fill\":[1537],\"routerDirection\":[1,\"router-direction\"],\"routerAnimation\":[16],\"download\":[1],\"href\":[1],\"rel\":[1],\"shape\":[513],\"size\":[513],\"strong\":[4],\"target\":[1],\"type\":[1]}],[1,\"ion-icon\",{\"mode\":[1025],\"color\":[1],\"ariaLabel\":[1537,\"aria-label\"],\"ariaHidden\":[513,\"aria-hidden\"],\"ios\":[1],\"md\":[1],\"flipRtl\":[4,\"flip-rtl\"],\"name\":[513],\"src\":[1],\"icon\":[8],\"size\":[1],\"lazy\":[4],\"sanitize\":[4],\"svgContent\":[32],\"isVisible\":[32]}]]],[\"ion-item_8\",[[33,\"ion-item-divider\",{\"color\":[513],\"sticky\":[4]}],[32,\"ion-item-group\"],[33,\"ion-note\",{\"color\":[513]}],[1,\"ion-skeleton-text\",{\"animated\":[4]}],[49,\"ion-item\",{\"color\":[513],\"button\":[4],\"detail\":[4],\"detailIcon\":[1,\"detail-icon\"],\"disabled\":[4],\"download\":[1],\"href\":[1],\"rel\":[1],\"lines\":[1],\"routerAnimation\":[16],\"routerDirection\":[1,\"router-direction\"],\"target\":[1],\"type\":[1],\"multipleInputs\":[32],\"focusable\":[32]},[[0,\"ionColor\",\"labelColorChanged\"],[0,\"ionStyle\",\"itemStyle\"]]],[34,\"ion-label\",{\"color\":[513],\"position\":[1],\"noAnimate\":[32]}],[32,\"ion-list\",{\"lines\":[1],\"inset\":[4],\"closeSlidingItems\":[64]}],[33,\"ion-list-header\",{\"color\":[513],\"lines\":[1]}]]]]'),o)}))};export{defineCustomElements};","\n(function(){if(\"undefined\"!==typeof window&&void 0!==window.Reflect&&void 0!==window.customElements){var a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)};HTMLElement.prototype=a.prototype;HTMLElement.prototype.constructor=HTMLElement;Object.setPrototypeOf(HTMLElement,a)}})();\nexport * from '../dist/esm/polyfills/index.js';\nexport * from '../dist/esm-es5/loader.js';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ReCAPTCHA =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ReCAPTCHA, _React$Component);\n\n  function ReCAPTCHA() {\n    var _this;\n\n    _this = _React$Component.call(this) || this;\n    _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n    _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n    _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n    _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  var _proto = ReCAPTCHA.prototype;\n\n  _proto.getValue = function getValue() {\n    if (this.props.grecaptcha && this._widgetId !== undefined) {\n      return this.props.grecaptcha.getResponse(this._widgetId);\n    }\n\n    return null;\n  };\n\n  _proto.getWidgetId = function getWidgetId() {\n    if (this.props.grecaptcha && this._widgetId !== undefined) {\n      return this._widgetId;\n    }\n\n    return null;\n  };\n\n  _proto.execute = function execute() {\n    var grecaptcha = this.props.grecaptcha;\n\n    if (grecaptcha && this._widgetId !== undefined) {\n      return grecaptcha.execute(this._widgetId);\n    } else {\n      this._executeRequested = true;\n    }\n  };\n\n  _proto.executeAsync = function executeAsync() {\n    var _this2 = this;\n\n    return new Promise(function (resolve, reject) {\n      _this2.executionResolve = resolve;\n      _this2.executionReject = reject;\n\n      _this2.execute();\n    });\n  };\n\n  _proto.reset = function reset() {\n    if (this.props.grecaptcha && this._widgetId !== undefined) {\n      this.props.grecaptcha.reset(this._widgetId);\n    }\n  };\n\n  _proto.handleExpired = function handleExpired() {\n    if (this.props.onExpired) {\n      this.props.onExpired();\n    } else {\n      this.handleChange(null);\n    }\n  };\n\n  _proto.handleErrored = function handleErrored() {\n    if (this.props.onErrored) {\n      this.props.onErrored();\n    }\n\n    if (this.executionReject) {\n      this.executionReject();\n      delete this.executionResolve;\n      delete this.executionReject;\n    }\n  };\n\n  _proto.handleChange = function handleChange(token) {\n    if (this.props.onChange) {\n      this.props.onChange(token);\n    }\n\n    if (this.executionResolve) {\n      this.executionResolve(token);\n      delete this.executionReject;\n      delete this.executionResolve;\n    }\n  };\n\n  _proto.explicitRender = function explicitRender() {\n    if (this.props.grecaptcha && this.props.grecaptcha.render && this._widgetId === undefined) {\n      var wrapper = document.createElement(\"div\");\n      this._widgetId = this.props.grecaptcha.render(wrapper, {\n        sitekey: this.props.sitekey,\n        callback: this.handleChange,\n        theme: this.props.theme,\n        type: this.props.type,\n        tabindex: this.props.tabindex,\n        \"expired-callback\": this.handleExpired,\n        \"error-callback\": this.handleErrored,\n        size: this.props.size,\n        stoken: this.props.stoken,\n        hl: this.props.hl,\n        badge: this.props.badge\n      });\n      this.captcha.appendChild(wrapper);\n    }\n\n    if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n      this._executeRequested = false;\n      this.execute();\n    }\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.explicitRender();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this.explicitRender();\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (this._widgetId !== undefined) {\n      this.delayOfCaptchaIframeRemoving();\n      this.reset();\n    }\n  };\n\n  _proto.delayOfCaptchaIframeRemoving = function delayOfCaptchaIframeRemoving() {\n    var temporaryNode = document.createElement(\"div\");\n    document.body.appendChild(temporaryNode);\n    temporaryNode.style.display = \"none\"; // move of the recaptcha to a temporary node\n\n    while (this.captcha.firstChild) {\n      temporaryNode.appendChild(this.captcha.firstChild);\n    } // delete the temporary node after reset will be done\n\n\n    setTimeout(function () {\n      document.body.removeChild(temporaryNode);\n    }, 5000);\n  };\n\n  _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n    this.captcha = elem;\n  };\n\n  _proto.render = function render() {\n    // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n\n    /* eslint-disable no-unused-vars */\n    var _this$props = this.props,\n        sitekey = _this$props.sitekey,\n        onChange = _this$props.onChange,\n        theme = _this$props.theme,\n        type = _this$props.type,\n        tabindex = _this$props.tabindex,\n        onExpired = _this$props.onExpired,\n        onErrored = _this$props.onErrored,\n        size = _this$props.size,\n        stoken = _this$props.stoken,\n        grecaptcha = _this$props.grecaptcha,\n        badge = _this$props.badge,\n        hl = _this$props.hl,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\"]);\n    /* eslint-enable no-unused-vars */\n\n\n    return React.createElement(\"div\", _extends({}, childProps, {\n      ref: this.handleRecaptchaRef\n    }));\n  };\n\n  return ReCAPTCHA;\n}(React.Component);\n\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n  sitekey: PropTypes.string.isRequired,\n  onChange: PropTypes.func,\n  grecaptcha: PropTypes.object,\n  theme: PropTypes.oneOf([\"dark\", \"light\"]),\n  type: PropTypes.oneOf([\"image\", \"audio\"]),\n  tabindex: PropTypes.number,\n  onExpired: PropTypes.func,\n  onErrored: PropTypes.func,\n  size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n  stoken: PropTypes.string,\n  hl: PropTypes.string,\n  badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n  onChange: function onChange() {},\n  theme: \"light\",\n  type: \"image\",\n  tabindex: 0,\n  size: \"normal\",\n  badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n  options = options || {};\n  return function wrapWithAsyncScript(WrappedComponent) {\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n    var AsyncScriptLoader =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(AsyncScriptLoader, _Component);\n\n      function AsyncScriptLoader(props, context) {\n        var _this;\n\n        _this = _Component.call(this, props, context) || this;\n        _this.state = {};\n        _this.__scriptURL = \"\";\n        return _this;\n      }\n\n      var _proto = AsyncScriptLoader.prototype;\n\n      _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n        if (!this.__scriptLoaderID) {\n          this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n        }\n\n        return this.__scriptLoaderID;\n      };\n\n      _proto.setupScriptURL = function setupScriptURL() {\n        this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n        return this.__scriptURL;\n      };\n\n      _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n        var _this2 = this;\n\n        // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n        this.setState(state, function () {\n          return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n        });\n      };\n\n      _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n        var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n        if (!mapEntry || !mapEntry.loaded) {\n          throw new Error(\"Script is not loaded.\");\n        }\n\n        for (var obsKey in mapEntry.observers) {\n          mapEntry.observers[obsKey](mapEntry);\n        }\n\n        delete window[options.callbackName];\n      };\n\n      _proto.componentDidMount = function componentDidMount() {\n        var _this3 = this;\n\n        var scriptURL = this.setupScriptURL();\n        var key = this.asyncScriptLoaderGetScriptLoaderID();\n        var _options = options,\n            globalName = _options.globalName,\n            callbackName = _options.callbackName,\n            scriptId = _options.scriptId; // check if global object already attached to window\n\n        if (globalName && typeof window[globalName] !== \"undefined\") {\n          SCRIPT_MAP[scriptURL] = {\n            loaded: true,\n            observers: {}\n          };\n        } // check if script loading already\n\n\n        if (SCRIPT_MAP[scriptURL]) {\n          var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n          if (entry && (entry.loaded || entry.errored)) {\n            this.asyncScriptLoaderHandleLoad(entry);\n            return;\n          } // if still loading then callback to observer queue\n\n\n          entry.observers[key] = function (entry) {\n            return _this3.asyncScriptLoaderHandleLoad(entry);\n          };\n\n          return;\n        }\n        /*\n         * hasn't started loading\n         * start the \"magic\"\n         * setup script to load and observers\n         */\n\n\n        var observers = {};\n\n        observers[key] = function (entry) {\n          return _this3.asyncScriptLoaderHandleLoad(entry);\n        };\n\n        SCRIPT_MAP[scriptURL] = {\n          loaded: false,\n          observers: observers\n        };\n        var script = document.createElement(\"script\");\n        script.src = scriptURL;\n        script.async = true;\n\n        for (var attribute in options.attributes) {\n          script.setAttribute(attribute, options.attributes[attribute]);\n        }\n\n        if (scriptId) {\n          script.id = scriptId;\n        }\n\n        var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n          if (SCRIPT_MAP[scriptURL]) {\n            var mapEntry = SCRIPT_MAP[scriptURL];\n            var observersMap = mapEntry.observers;\n\n            for (var obsKey in observersMap) {\n              if (func(observersMap[obsKey])) {\n                delete observersMap[obsKey];\n              }\n            }\n          }\n        };\n\n        if (callbackName && typeof window !== \"undefined\") {\n          window[callbackName] = function () {\n            return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n          };\n        }\n\n        script.onload = function () {\n          var mapEntry = SCRIPT_MAP[scriptURL];\n\n          if (mapEntry) {\n            mapEntry.loaded = true;\n            callObserverFuncAndRemoveObserver(function (observer) {\n              if (callbackName) {\n                return false;\n              }\n\n              observer(mapEntry);\n              return true;\n            });\n          }\n        };\n\n        script.onerror = function () {\n          var mapEntry = SCRIPT_MAP[scriptURL];\n\n          if (mapEntry) {\n            mapEntry.errored = true;\n            callObserverFuncAndRemoveObserver(function (observer) {\n              observer(mapEntry);\n              return true;\n            });\n          }\n        };\n\n        document.body.appendChild(script);\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        // Remove tag script\n        var scriptURL = this.__scriptURL;\n\n        if (options.removeOnUnmount === true) {\n          var allScripts = document.getElementsByTagName(\"script\");\n\n          for (var i = 0; i < allScripts.length; i += 1) {\n            if (allScripts[i].src.indexOf(scriptURL) > -1) {\n              if (allScripts[i].parentNode) {\n                allScripts[i].parentNode.removeChild(allScripts[i]);\n              }\n            }\n          }\n        } // Clean the observer entry\n\n\n        var mapEntry = SCRIPT_MAP[scriptURL];\n\n        if (mapEntry) {\n          delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n          if (options.removeOnUnmount === true) {\n            delete SCRIPT_MAP[scriptURL];\n          }\n        }\n      };\n\n      _proto.render = function render() {\n        var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n        var _this$props = this.props,\n            asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n            forwardedRef = _this$props.forwardedRef,\n            childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n        if (globalName && typeof window !== \"undefined\") {\n          childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n        }\n\n        childProps.ref = forwardedRef;\n        return createElement(WrappedComponent, childProps);\n      };\n\n      return AsyncScriptLoader;\n    }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n    // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n    // And it can then be attached to the Component.\n\n\n    var ForwardedComponent = forwardRef(function (props, ref) {\n      return createElement(AsyncScriptLoader, _extends({}, props, {\n        forwardedRef: ref\n      }));\n    });\n    ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n    ForwardedComponent.propTypes = {\n      asyncScriptOnLoad: PropTypes.func\n    };\n    return hoistStatics(ForwardedComponent, WrappedComponent);\n  };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\n\nfunction getOptions() {\n  return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\n\nfunction getURL() {\n  var dynamicOptions = getOptions();\n  var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n  return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n  callbackName: callbackName,\n  globalName: globalName\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject<Window>();\n\ntype InstrumentHandlerType =\n  | 'console'\n  | 'dom'\n  | 'fetch'\n  | 'history'\n  | 'sentry'\n  | 'xhr'\n  | 'error'\n  | 'unhandledrejection';\ntype InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n *  - Console API\n *  - Fetch API\n *  - XHR API\n *  - History API\n *  - DOM API (click/typing)\n *  - Error API\n *  - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n  if (instrumented[type]) {\n    return;\n  }\n\n  instrumented[type] = true;\n\n  switch (type) {\n    case 'console':\n      instrumentConsole();\n      break;\n    case 'dom':\n      instrumentDOM();\n      break;\n    case 'xhr':\n      instrumentXHR();\n      break;\n    case 'fetch':\n      instrumentFetch();\n      break;\n    case 'history':\n      instrumentHistory();\n      break;\n    case 'error':\n      instrumentError();\n      break;\n    case 'unhandledrejection':\n      instrumentUnhandledRejection();\n      break;\n    default:\n      IS_DEBUG_BUILD && logger.warn('unknown instrumentation type:', type);\n      return;\n  }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n  instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n  if (!type || !handlers[type]) {\n    return;\n  }\n\n  for (const handler of handlers[type] || []) {\n    try {\n      handler(data);\n    } catch (e) {\n      IS_DEBUG_BUILD &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n  if (!('console' in global)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level: string): void {\n    if (!(level in global.console)) {\n      return;\n    }\n\n    fill(global.console, level, function (originalConsoleMethod: () => any): Function {\n      return function (...args: any[]): void {\n        triggerHandlers('console', { args, level });\n\n        // this fails for some browsers. :(\n        if (originalConsoleMethod) {\n          originalConsoleMethod.apply(global.console, args);\n        }\n      };\n    });\n  });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n  if (!supportsNativeFetch()) {\n    return;\n  }\n\n  fill(global, 'fetch', function (originalFetch: () => void): () => void {\n    return function (...args: any[]): void {\n      const handlerData = {\n        args,\n        fetchData: {\n          method: getFetchMethod(args),\n          url: getFetchUrl(args),\n        },\n        startTimestamp: Date.now(),\n      };\n\n      triggerHandlers('fetch', {\n        ...handlerData,\n      });\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      return originalFetch.apply(global, args).then(\n        (response: Response) => {\n          triggerHandlers('fetch', {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            response,\n          });\n          return response;\n        },\n        (error: Error) => {\n          triggerHandlers('fetch', {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            error,\n          });\n          // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n          //       it means the sentry.javascript SDK caught an error invoking your application code.\n          //       This is expected behavior and NOT indicative of a bug with sentry.javascript.\n          throw error;\n        },\n      );\n    };\n  });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n  [key: string]: any;\n  __sentry_xhr__?: {\n    method?: string;\n    url?: string;\n    status_code?: number;\n    body?: XHRSendInput;\n  };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n  if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n    return String(fetchArgs[0].method).toUpperCase();\n  }\n  if (fetchArgs[1] && fetchArgs[1].method) {\n    return String(fetchArgs[1].method).toUpperCase();\n  }\n  return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n  if (typeof fetchArgs[0] === 'string') {\n    return fetchArgs[0];\n  }\n  if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n    return fetchArgs[0].url;\n  }\n  return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n  if (!('XMLHttpRequest' in global)) {\n    return;\n  }\n\n  const xhrproto = XMLHttpRequest.prototype;\n\n  fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n    return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      const xhr = this;\n      const url = args[1];\n      const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (xhr.__sentry_xhr__ = {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n        url: args[1],\n      });\n\n      // if Sentry key appears in URL, don't capture it as a request\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n        xhr.__sentry_own_request__ = true;\n      }\n\n      const onreadystatechangeHandler = function (): void {\n        if (xhr.readyState === 4) {\n          try {\n            // touching statusCode in some platforms throws\n            // an exception\n            xhrInfo.status_code = xhr.status;\n          } catch (e) {\n            /* do nothing */\n          }\n\n          triggerHandlers('xhr', {\n            args,\n            endTimestamp: Date.now(),\n            startTimestamp: Date.now(),\n            xhr,\n          });\n        }\n      };\n\n      if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n        fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n          return function (...readyStateArgs: any[]): void {\n            onreadystatechangeHandler();\n            return original.apply(xhr, readyStateArgs);\n          };\n        });\n      } else {\n        xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n      }\n\n      return originalOpen.apply(xhr, args);\n    };\n  });\n\n  fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n    return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      if (this.__sentry_xhr__ && args[0] !== undefined) {\n        this.__sentry_xhr__.body = args[0];\n      }\n\n      triggerHandlers('xhr', {\n        args,\n        startTimestamp: Date.now(),\n        xhr: this,\n      });\n\n      return originalSend.apply(this, args);\n    };\n  });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n  if (!supportsHistory()) {\n    return;\n  }\n\n  const oldOnPopState = global.onpopstate;\n  global.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n    const to = global.location.href;\n    // keep track of the current URL state, as we always receive only the updated state\n    const from = lastHref;\n    lastHref = to;\n    triggerHandlers('history', {\n      from,\n      to,\n    });\n    if (oldOnPopState) {\n      // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n      // https://github.com/getsentry/sentry-javascript/issues/3344\n      // https://github.com/bugsnag/bugsnag-js/issues/469\n      try {\n        return oldOnPopState.apply(this, args);\n      } catch (_oO) {\n        // no-empty\n      }\n    }\n  };\n\n  /** @hidden */\n  function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n    return function (this: History, ...args: any[]): void {\n      const url = args.length > 2 ? args[2] : undefined;\n      if (url) {\n        // coerce to string (this is what pushState does)\n        const from = lastHref;\n        const to = String(url);\n        // keep track of the current URL state, as we always receive only the updated state\n        lastHref = to;\n        triggerHandlers('history', {\n          from,\n          to,\n        });\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n\n  fill(global.history, 'pushState', historyReplacementFunction);\n  fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n  // If there was no previous event, it should always be swapped for the new one.\n  if (!previous) {\n    return true;\n  }\n\n  // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n  if (previous.type !== current.type) {\n    return true;\n  }\n\n  try {\n    // If both events have the same type, it's still possible that actions were performed on different targets.\n    // e.g. 2 clicks on different buttons.\n    if (previous.target !== current.target) {\n      return true;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n  // to which an event listener was attached), we treat them as the same action, as we want to capture\n  // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n  return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n  // We are only interested in filtering `keypress` events for now.\n  if (event.type !== 'keypress') {\n    return false;\n  }\n\n  try {\n    const target = event.target as HTMLElement;\n\n    if (!target || !target.tagName) {\n      return true;\n    }\n\n    // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n    // e.g.tabbing through elements, hotkeys, etc.\n    if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n      return false;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n  return (event: Event): void => {\n    // It's possible this handler might trigger multiple times for the same\n    // event (e.g. event propagation through node ancestors).\n    // Ignore if we've already captured that event.\n    if (!event || lastCapturedEvent === event) {\n      return;\n    }\n\n    // We always want to skip _some_ events.\n    if (shouldSkipDOMEvent(event)) {\n      return;\n    }\n\n    const name = event.type === 'keypress' ? 'input' : event.type;\n\n    // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n    if (debounceTimerID === undefined) {\n      handler({\n        event: event,\n        name,\n        global: globalListener,\n      });\n      lastCapturedEvent = event;\n    }\n    // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n    // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n    else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n      handler({\n        event: event,\n        name,\n        global: globalListener,\n      });\n      lastCapturedEvent = event;\n    }\n\n    // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n    clearTimeout(debounceTimerID);\n    debounceTimerID = global.setTimeout(() => {\n      debounceTimerID = undefined;\n    }, debounceDuration);\n  };\n}\n\ntype AddEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n  __sentry_instrumentation_handlers__?: {\n    [key in 'click' | 'keypress']?: {\n      handler?: Function;\n      /** The number of custom listeners attached to this element */\n      refCount: number;\n    };\n  };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n  if (!('document' in global)) {\n    return;\n  }\n\n  // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n  // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n  // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n  const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n  const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n  global.document.addEventListener('click', globalDOMEventHandler, false);\n  global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n  // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n  // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n  // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n  // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n  // guaranteed to fire at least once.)\n  ['EventTarget', 'Node'].forEach((target: string) => {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const proto = (global as any)[target] && (global as any)[target].prototype;\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n    if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n      return;\n    }\n\n    fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n      return function (\n        this: Element,\n        type: string,\n        listener: EventListenerOrEventListenerObject,\n        options?: boolean | AddEventListenerOptions,\n      ): AddEventListener {\n        if (type === 'click' || type == 'keypress') {\n          try {\n            const el = this as InstrumentedElement;\n            const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n            const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n            if (!handlerForType.handler) {\n              const handler = makeDOMEventHandler(triggerDOMHandler);\n              handlerForType.handler = handler;\n              originalAddEventListener.call(this, type, handler, options);\n            }\n\n            handlerForType.refCount += 1;\n          } catch (e) {\n            // Accessing dom properties is always fragile.\n            // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n          }\n        }\n\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n    });\n\n    fill(\n      proto,\n      'removeEventListener',\n      function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n        return function (\n          this: Element,\n          type: string,\n          listener: EventListenerOrEventListenerObject,\n          options?: boolean | EventListenerOptions,\n        ): () => void {\n          if (type === 'click' || type == 'keypress') {\n            try {\n              const el = this as InstrumentedElement;\n              const handlers = el.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n\n              if (handlerForType) {\n                handlerForType.refCount -= 1;\n                // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n                if (handlerForType.refCount <= 0) {\n                  originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n                  handlerForType.handler = undefined;\n                  delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n                }\n\n                // If there are no longer any custom handlers of any type on this element, cleanup everything.\n                if (Object.keys(handlers).length === 0) {\n                  delete el.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch (e) {\n              // Accessing dom properties is always fragile.\n              // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n            }\n          }\n\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      },\n    );\n  });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n  _oldOnErrorHandler = global.onerror;\n\n  global.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n    triggerHandlers('error', {\n      column,\n      error,\n      line,\n      msg,\n      url,\n    });\n\n    if (_oldOnErrorHandler) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnErrorHandler.apply(this, arguments);\n    }\n\n    return false;\n  };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n  _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n  global.onunhandledrejection = function (e: any): boolean {\n    triggerHandlers('unhandledrejection', e);\n\n    if (_oldOnUnhandledRejectionHandler) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n    }\n\n    return true;\n  };\n}\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = arguments[1] || {};\n    config.url = arguments[0];\n  } else {\n    config = config || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  var transitional = config.transitional;\n\n  if (transitional !== undefined) {\n    validator.assertOptions(transitional, {\n      silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n      forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n      clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n    }, false);\n  }\n\n  // filter out skipped interceptors\n  var requestInterceptorChain = [];\n  var synchronousRequestInterceptors = true;\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n      return;\n    }\n\n    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var responseInterceptorChain = [];\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var promise;\n\n  if (!synchronousRequestInterceptors) {\n    var chain = [dispatchRequest, undefined];\n\n    Array.prototype.unshift.apply(chain, requestInterceptorChain);\n    chain = chain.concat(responseInterceptorChain);\n\n    promise = Promise.resolve(config);\n    while (chain.length) {\n      promise = promise.then(chain.shift(), chain.shift());\n    }\n\n    return promise;\n  }\n\n\n  var newConfig = config;\n  while (requestInterceptorChain.length) {\n    var onFulfilled = requestInterceptorChain.shift();\n    var onRejected = requestInterceptorChain.shift();\n    try {\n      newConfig = onFulfilled(newConfig);\n    } catch (error) {\n      onRejected(error);\n      break;\n    }\n  }\n\n  try {\n    promise = dispatchRequest(newConfig);\n  } catch (error) {\n    return Promise.reject(error);\n  }\n\n  while (responseInterceptorChain.length) {\n    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected,\n    synchronous: options ? options.synchronous : false,\n    runWhen: options ? options.runWhen : null\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  var context = this || defaults;\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(context, data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n  var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n  var destVer = version.split('.');\n  for (var i = 0; i < 3; i++) {\n    if (pkgVersionArr[i] > destVer[i]) {\n      return true;\n    } else if (pkgVersionArr[i] < destVer[i]) {\n      return false;\n    }\n  }\n  return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  var isDeprecated = version && isOlderVersion(version);\n\n  function formatMessage(opt, desc) {\n    return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return function(value, opt, opts) {\n    if (validator === false) {\n      throw new Error(formatMessage(opt, ' has been removed in ' + version));\n    }\n\n    if (isDeprecated && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new TypeError('options must be an object');\n  }\n  var keys = Object.keys(options);\n  var i = keys.length;\n  while (i-- > 0) {\n    var opt = keys[i];\n    var validator = schema[opt];\n    if (validator) {\n      var value = options[opt];\n      var result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new TypeError('option ' + opt + ' must be ' + result);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw Error('Unknown option ' + opt);\n    }\n  }\n}\n\nmodule.exports = {\n  isOlderVersion: isOlderVersion,\n  assertOptions: assertOptions,\n  validators: validators\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n  return Buffer\n    .from(string, encoding)\n    .toString('base64')\n    .replace(/=/g, '')\n    .replace(/\\+/g, '-')\n    .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n  encoding = encoding || 'utf8';\n  var encodedHeader = base64url(toString(header), 'binary');\n  var encodedPayload = base64url(toString(payload), encoding);\n  return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n  var header = opts.header;\n  var payload = opts.payload;\n  var secretOrKey = opts.secret || opts.privateKey;\n  var encoding = opts.encoding;\n  var algo = jwa(header.alg);\n  var securedInput = jwsSecuredInput(header, payload, encoding);\n  var signature = algo.sign(securedInput, secretOrKey);\n  return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n  var secret = opts.secret||opts.privateKey||opts.key;\n  var secretStream = new DataStream(secret);\n  this.readable = true;\n  this.header = opts.header;\n  this.encoding = opts.encoding;\n  this.secret = this.privateKey = this.key = secretStream;\n  this.payload = new DataStream(opts.payload);\n  this.secret.once('close', function () {\n    if (!this.payload.writable && this.readable)\n      this.sign();\n  }.bind(this));\n\n  this.payload.once('close', function () {\n    if (!this.secret.writable && this.readable)\n      this.sign();\n  }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n  try {\n    var signature = jwsSign({\n      header: this.header,\n      payload: this.payload.buffer,\n      secret: this.secret.buffer,\n      encoding: this.encoding\n    });\n    this.emit('done', signature);\n    this.emit('data', signature);\n    this.emit('end');\n    this.readable = false;\n    return signature;\n  } catch (e) {\n    this.readable = false;\n    this.emit('error', e);\n    this.emit('close');\n  }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n  module.exports.prototype[util.inspect.custom] = function () {\n    var obj = util.inspect({ length: this.length });\n    return this.constructor.name + ' ' + obj;\n  };\n}","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n  // shortcutting on type is necessary for correctness\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    return false;\n  }\n\n  // buffer sizes should be well-known information, so despite this\n  // shortcutting, it doesn't leak any information about the *contents* of the\n  // buffers.\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  var c = 0;\n  for (var i = 0; i < a.length; i++) {\n    /*jshint bitwise:false */\n    c |= a[i] ^ b[i]; // XOR\n  }\n  return c === 0;\n}\n\nbufferEq.install = function() {\n  Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n    return bufferEq(this, that);\n  };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n  Buffer.prototype.equal = origBufEqual;\n  SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl1 (num) {\n  return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n  this._a = 0xc1059ed8\n  this._b = 0x367cd507\n  this._c = 0x3070dd17\n  this._d = 0xf70e5939\n  this._e = 0xffc00b31\n  this._f = 0x68581511\n  this._g = 0x64f98fa7\n  this._h = 0xbefa4fa4\n\n  return this\n}\n\nSha224.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(28)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n\n  return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n  this._ah = 0xcbbb9d5d\n  this._bh = 0x629a292a\n  this._ch = 0x9159015a\n  this._dh = 0x152fecd8\n  this._eh = 0x67332667\n  this._fh = 0x8eb44a87\n  this._gh = 0xdb0c2e0d\n  this._hh = 0x47b5481d\n\n  this._al = 0xc1059ed8\n  this._bl = 0x367cd507\n  this._cl = 0x3070dd17\n  this._dl = 0xf70e5939\n  this._el = 0xffc00b31\n  this._fl = 0x68581511\n  this._gl = 0x64f98fa7\n  this._hl = 0xbefa4fa4\n\n  return this\n}\n\nSha384.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(48)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n\n  return H\n}\n\nmodule.exports = Sha384\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  this._alg = alg\n  this._key = key\n\n  if (key.length > blocksize) {\n    key = alg(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._alg(Buffer.concat(this._hash))\n  return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n  sha: 'SHA-1',\n  'sha-1': 'SHA-1',\n  sha1: 'SHA-1',\n  sha256: 'SHA-256',\n  'sha-256': 'SHA-256',\n  sha384: 'SHA-384',\n  'sha-384': 'SHA-384',\n  'sha-512': 'SHA-512',\n  sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n  if (global.process && !global.process.browser) {\n    return Promise.resolve(false)\n  }\n  if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n    return Promise.resolve(false)\n  }\n  if (checks[algo] !== undefined) {\n    return checks[algo]\n  }\n  ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n  var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n    .then(function () {\n      return true\n    }).catch(function () {\n      return false\n    })\n  checks[algo] = prom\n  return prom\n}\nvar nextTick\nfunction getNextTick () {\n  if (nextTick) {\n    return nextTick\n  }\n  if (global.process && global.process.nextTick) {\n    nextTick = global.process.nextTick\n  } else if (global.queueMicrotask) {\n    nextTick = global.queueMicrotask\n  } else if (global.setImmediate) {\n    nextTick = global.setImmediate\n  } else {\n    nextTick = global.setTimeout\n  }\n  return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n  return subtle.importKey(\n    'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n  ).then(function (key) {\n    return subtle.deriveBits({\n      name: 'PBKDF2',\n      salt: salt,\n      iterations: iterations,\n      hash: {\n        name: algo\n      }\n    }, key, length << 3)\n  }).then(function (res) {\n    return Buffer.from(res)\n  })\n}\n\nfunction resolvePromise (promise, callback) {\n  promise.then(function (out) {\n    getNextTick()(function () {\n      callback(null, out)\n    })\n  }, function (e) {\n    getNextTick()(function () {\n      callback(e)\n    })\n  })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n  if (typeof digest === 'function') {\n    callback = digest\n    digest = undefined\n  }\n\n  digest = digest || 'sha1'\n  var algo = toBrowser[digest.toLowerCase()]\n\n  if (!algo || typeof global.Promise !== 'function') {\n    getNextTick()(function () {\n      var out\n      try {\n        out = sync(password, salt, iterations, keylen, digest)\n      } catch (e) {\n        return callback(e)\n      }\n      callback(null, out)\n    })\n    return\n  }\n\n  checkParameters(iterations, keylen)\n  password = toBuffer(password, defaultEncoding, 'Password')\n  salt = toBuffer(salt, defaultEncoding, 'Salt')\n  if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n  resolvePromise(checkNative(algo).then(function (resp) {\n    if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n    return sync(password, salt, iterations, keylen, digest)\n  }), callback)\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n  return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n  'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede3': des.EDE,\n  'des-ede-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede': des.EDE,\n  'des-cbc': des.CBC.instantiate(des.DES),\n  'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n  CipherBase.call(this)\n  var modeName = opts.mode.toLowerCase()\n  var mode = modes[modeName]\n  var type\n  if (opts.decrypt) {\n    type = 'decrypt'\n  } else {\n    type = 'encrypt'\n  }\n  var key = opts.key\n  if (!Buffer.isBuffer(key)) {\n    key = Buffer.from(key)\n  }\n  if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n    key = Buffer.concat([key, key.slice(0, 8)])\n  }\n  var iv = opts.iv\n  if (!Buffer.isBuffer(iv)) {\n    iv = Buffer.from(iv)\n  }\n  this._des = mode.create({\n    key: key,\n    iv: iv,\n    type: type\n  })\n}\nDES.prototype._update = function (data) {\n  return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n  return Buffer.from(this._des.final())\n}\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n  assert.equal(iv.length, 8, 'Invalid IV length');\n\n  this.iv = new Array(8);\n  for (var i = 0; i < this.iv.length; i++)\n    this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n  function CBC(options) {\n    Base.call(this, options);\n    this._cbcInit();\n  }\n  inherits(CBC, Base);\n\n  var keys = Object.keys(proto);\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    CBC.prototype[key] = proto[key];\n  }\n\n  CBC.create = function create(options) {\n    return new CBC(options);\n  };\n\n  return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n  var state = new CBCState(this.options.iv);\n  this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n  var state = this._cbcState;\n  var superProto = this.constructor.super_.prototype;\n\n  var iv = state.iv;\n  if (this.type === 'encrypt') {\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] ^= inp[inOff + i];\n\n    superProto._update.call(this, iv, 0, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = out[outOff + i];\n  } else {\n    superProto._update.call(this, inp, inOff, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      out[outOff + i] ^= iv[i];\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = inp[inOff + i];\n  }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n  assert.equal(key.length, 24, 'Invalid key length');\n\n  var k1 = key.slice(0, 8);\n  var k2 = key.slice(8, 16);\n  var k3 = key.slice(16, 24);\n\n  if (type === 'encrypt') {\n    this.ciphers = [\n      DES.create({ type: 'encrypt', key: k1 }),\n      DES.create({ type: 'decrypt', key: k2 }),\n      DES.create({ type: 'encrypt', key: k3 })\n    ];\n  } else {\n    this.ciphers = [\n      DES.create({ type: 'decrypt', key: k3 }),\n      DES.create({ type: 'encrypt', key: k2 }),\n      DES.create({ type: 'decrypt', key: k1 })\n    ];\n  }\n}\n\nfunction EDE(options) {\n  Cipher.call(this, options);\n\n  var state = new EDEState(this.type, this.options.key);\n  this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n  return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._edeState;\n\n  state.ciphers[0]._update(inp, inOff, out, outOff);\n  state.ciphers[1]._update(out, outOff, out, outOff);\n  state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n\n  while ((chunk = this._cache.get())) {\n    thing = this._mode.encrypt(this, chunk)\n    out.push(thing)\n  }\n\n  return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    chunk = this._mode.encrypt(this, chunk)\n    this._cipher.scrub()\n    return chunk\n  }\n\n  if (!chunk.equals(PADDING)) {\n    this._cipher.scrub()\n    throw new Error('data not multiple of block length')\n  }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n  if (this.cache.length > 15) {\n    var out = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    return out\n  }\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  var len = 16 - this.cache.length\n  var padBuff = Buffer.allocUnsafe(len)\n\n  var i = -1\n  while (++i < len) {\n    padBuff.writeUInt8(len, i)\n  }\n\n  return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv)\n  }\n\n  return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","exports.encrypt = function (self, block) {\n  return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n  return self._cipher.decryptBlock(block)\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n  var data = xor(block, self._prev)\n\n  self._prev = self._cipher.encryptBlock(data)\n  return self._prev\n}\n\nexports.decrypt = function (self, block) {\n  var pad = self._prev\n\n  self._prev = block\n  var out = self._cipher.decryptBlock(block)\n\n  return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n  var len = data.length\n  var out = xor(data, self._cache)\n  self._cache = self._cache.slice(len)\n  self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n  return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n  var out = Buffer.allocUnsafe(0)\n  var len\n\n  while (data.length) {\n    if (self._cache.length === 0) {\n      self._cache = self._cipher.encryptBlock(self._prev)\n      self._prev = Buffer.allocUnsafe(0)\n    }\n\n    if (self._cache.length <= data.length) {\n      len = self._cache.length\n      out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n      data = data.slice(len)\n    } else {\n      out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n      break\n    }\n  }\n\n  return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad = self._cipher.encryptBlock(self._prev)\n  var out = pad[0] ^ byteParam\n\n  self._prev = Buffer.concat([\n    self._prev.slice(1),\n    Buffer.from([decrypt ? byteParam : out])\n  ])\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad\n  var i = -1\n  var len = 8\n  var out = 0\n  var bit, value\n  while (++i < len) {\n    pad = self._cipher.encryptBlock(self._prev)\n    bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n    value = pad[0] ^ bit\n    out += ((value & 0x80) >> (i % 8))\n    self._prev = shiftIn(self._prev, decrypt ? bit : value)\n  }\n  return out\n}\n\nfunction shiftIn (buffer, value) {\n  var len = buffer.length\n  var i = -1\n  var out = Buffer.allocUnsafe(buffer.length)\n  buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n  while (++i < len) {\n    out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n  }\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n  self._prev = self._cipher.encryptBlock(self._prev)\n  return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n  while (self._cache.length < chunk.length) {\n    self._cache = Buffer.concat([self._cache, getBlock(self)])\n  }\n\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n  return [\n    buf.readUInt32BE(0),\n    buf.readUInt32BE(4),\n    buf.readUInt32BE(8),\n    buf.readUInt32BE(12)\n  ]\n}\n\nfunction fromArray (out) {\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0] >>> 0, 0)\n  buf.writeUInt32BE(out[1] >>> 0, 4)\n  buf.writeUInt32BE(out[2] >>> 0, 8)\n  buf.writeUInt32BE(out[3] >>> 0, 12)\n  return buf\n}\n\nfunction GHASH (key) {\n  this.h = key\n  this.state = Buffer.alloc(16, 0)\n  this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n  var i = -1\n  while (++i < block.length) {\n    this.state[i] ^= block[i]\n  }\n  this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n  var Vi = toArray(this.h)\n  var Zi = [0, 0, 0, 0]\n  var j, xi, lsbVi\n  var i = -1\n  while (++i < 128) {\n    xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n    if (xi) {\n      // Z_i+1 = Z_i ^ V_i\n      Zi[0] ^= Vi[0]\n      Zi[1] ^= Vi[1]\n      Zi[2] ^= Vi[2]\n      Zi[3] ^= Vi[3]\n    }\n\n    // Store the value of LSB(V_i)\n    lsbVi = (Vi[3] & 1) !== 0\n\n    // V_i+1 = V_i >> 1\n    for (j = 3; j > 0; j--) {\n      Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n    }\n    Vi[0] = Vi[0] >>> 1\n\n    // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n    if (lsbVi) {\n      Vi[0] = Vi[0] ^ (0xe1 << 24)\n    }\n  }\n  this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n  this.cache = Buffer.concat([this.cache, buf])\n  var chunk\n  while (this.cache.length >= 16) {\n    chunk = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    this.ghash(chunk)\n  }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n  if (this.cache.length) {\n    this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n  }\n\n  this.ghash(fromArray([0, abl, 0, bl]))\n  return this.state\n}\n\nmodule.exports = GHASH\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._last = void 0\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n  while ((chunk = this._cache.get(this._autopadding))) {\n    thing = this._mode.decrypt(this, chunk)\n    out.push(thing)\n  }\n  return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    return unpad(this._mode.decrypt(this, chunk))\n  } else if (chunk) {\n    throw new Error('data not multiple of block length')\n  }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n  var out\n  if (autoPadding) {\n    if (this.cache.length > 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  } else {\n    if (this.cache.length >= 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  }\n\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n  var padded = last[15]\n  if (padded < 1 || padded > 16) {\n    throw new Error('unable to decrypt data')\n  }\n  var i = -1\n  while (++i < padded) {\n    if (last[(i + (16 - padded))] !== padded) {\n      throw new Error('unable to decrypt data')\n    }\n  }\n  if (padded === 16) return\n\n  return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv, true)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv, true)\n  }\n\n  return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","exports['des-ecb'] = {\n  key: 8,\n  iv: 0\n}\nexports['des-cbc'] = exports.des = {\n  key: 8,\n  iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n  key: 24,\n  iv: 8\n}\nexports['des-ede3'] = {\n  key: 24,\n  iv: 0\n}\nexports['des-ede-cbc'] = {\n  key: 16,\n  iv: 8\n}\nexports['des-ede'] = {\n  key: 16,\n  iv: 0\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n  var prime = new Buffer(primes[mod].prime, 'hex')\n  var gen = new Buffer(primes[mod].gen, 'hex')\n\n  return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n  'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n  if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n    return createDiffieHellman(prime, 'binary', enc, generator)\n  }\n\n  enc = enc || 'binary'\n  genc = genc || 'binary'\n  generator = generator || new Buffer([2])\n\n  if (!Buffer.isBuffer(generator)) {\n    generator = new Buffer(generator, genc)\n  }\n\n  if (typeof prime === 'number') {\n    return new DH(generatePrime(prime, generator), generator, true)\n  }\n\n  if (!Buffer.isBuffer(prime)) {\n    prime = new Buffer(prime, enc)\n  }\n\n  return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc);\n  }\n  this._pub = new BN(pub);\n  return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc);\n  }\n  this._priv = new BN(priv);\n  return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n  var gen = generator.toString('hex');\n  var hex = [gen, prime.toString(16)].join('_');\n  if (hex in primeCache) {\n    return primeCache[hex];\n  }\n  var error = 0;\n\n  if (prime.isEven() ||\n    !primes.simpleSieve ||\n    !primes.fermatTest(prime) ||\n    !millerRabin.test(prime)) {\n    //not a prime so +1\n    error += 1;\n\n    if (gen === '02' || gen === '05') {\n      // we'd be able to check the generator\n      // it would fail so +8\n      error += 8;\n    } else {\n      //we wouldn't be able to test the generator\n      // so +4\n      error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  if (!millerRabin.test(prime.shrn(1))) {\n    //not a safe prime\n    error += 2;\n  }\n  var rem;\n  switch (gen) {\n    case '02':\n      if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        // unsuidable generator\n        error += 8;\n      }\n      break;\n    case '05':\n      rem = prime.mod(TEN);\n      if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n        // prime mod 10 needs to equal 3 or 7\n        error += 8;\n      }\n      break;\n    default:\n      error += 4;\n  }\n  primeCache[hex] = error;\n  return error;\n}\n\nfunction DH(prime, generator, malleable) {\n  this.setGenerator(generator);\n  this.__prime = new BN(prime);\n  this._prime = BN.mont(this.__prime);\n  this._primeLen = prime.length;\n  this._pub = undefined;\n  this._priv = undefined;\n  this._primeCode = undefined;\n  if (malleable) {\n    this.setPublicKey = setPublicKey;\n    this.setPrivateKey = setPrivateKey;\n  } else {\n    this._primeCode = 8;\n  }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n  enumerable: true,\n  get: function () {\n    if (typeof this._primeCode !== 'number') {\n      this._primeCode = checkPrime(this.__prime, this.__gen);\n    }\n    return this._primeCode;\n  }\n});\nDH.prototype.generateKeys = function () {\n  if (!this._priv) {\n    this._priv = new BN(randomBytes(this._primeLen));\n  }\n  this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n  return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n  other = new BN(other);\n  other = other.toRed(this._prime);\n  var secret = other.redPow(this._priv).fromRed();\n  var out = new Buffer(secret.toArray());\n  var prime = this.getPrime();\n  if (out.length < prime.length) {\n    var front = new Buffer(prime.length - out.length);\n    front.fill(0);\n    out = Buffer.concat([front, out]);\n  }\n  return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n  return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n  return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n  return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n  return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(gen)) {\n    gen = new Buffer(gen, enc);\n  }\n  this.__gen = gen;\n  this._gen = new BN(gen);\n  return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n  var buf = new Buffer(bn.toArray());\n  if (!enc) {\n    return buf;\n  } else {\n    return buf.toString(enc);\n  }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n  algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n  algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hashType = data.hash\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nSign.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = Buffer.from(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n  this.end()\n  var hash = this._hash.digest()\n  var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n  return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = Buffer.from(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n  if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n  this.end()\n  var hash = this._hash.digest()\n  return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n  return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n  return new Verify(algorithm)\n}\n\nmodule.exports = {\n  Sign: createSign,\n  Verify: createVerify,\n  createSign: createSign,\n  createVerify: createVerify\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n  var priv = parseKeys(key)\n  if (priv.curve) {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n    return ecSign(hash, priv)\n  } else if (priv.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong private key type')\n    return dsaSign(hash, priv, hashType)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = priv.modulus.byteLength()\n  var pad = [0, 1]\n  while (hash.length + pad.length + 1 < len) pad.push(0xff)\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) pad.push(hash[i])\n\n  var out = crt(pad, priv)\n  return out\n}\n\nfunction ecSign (hash, priv) {\n  var curveId = curves[priv.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var key = curve.keyFromPrivate(priv.privateKey)\n  var out = key.sign(hash)\n\n  return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n  var x = priv.params.priv_key\n  var p = priv.params.p\n  var q = priv.params.q\n  var g = priv.params.g\n  var r = new BN(0)\n  var k\n  var H = bits2int(hash, q).mod(q)\n  var s = false\n  var kv = getKey(x, q, hash, algo)\n  while (s === false) {\n    k = makeKey(q, kv, algo)\n    r = makeR(g, k, p, q)\n    s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n    if (s.cmpn(0) === 0) {\n      s = false\n      r = new BN(0)\n    }\n  }\n  return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n  r = r.toArray()\n  s = s.toArray()\n\n  // Pad values\n  if (r[0] & 0x80) r = [0].concat(r)\n  if (s[0] & 0x80) s = [0].concat(s)\n\n  var total = r.length + s.length + 4\n  var res = [0x30, total, 0x02, r.length]\n  res = res.concat(r, [0x02, s.length], s)\n  return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n  x = Buffer.from(x.toArray())\n  if (x.length < q.byteLength()) {\n    var zeros = Buffer.alloc(q.byteLength() - x.length)\n    x = Buffer.concat([zeros, x])\n  }\n  var hlen = hash.length\n  var hbits = bits2octets(hash, q)\n  var v = Buffer.alloc(hlen)\n  v.fill(1)\n  var k = Buffer.alloc(hlen)\n  k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n  var bits = new BN(obits)\n  var shift = (obits.length << 3) - q.bitLength()\n  if (shift > 0) bits.ishrn(shift)\n  return bits\n}\n\nfunction bits2octets (bits, q) {\n  bits = bits2int(bits, q)\n  bits = bits.mod(q)\n  var out = Buffer.from(bits.toArray())\n  if (out.length < q.byteLength()) {\n    var zeros = Buffer.alloc(q.byteLength() - out.length)\n    out = Buffer.concat([zeros, out])\n  }\n  return out\n}\n\nfunction makeKey (q, kv, algo) {\n  var t\n  var k\n\n  do {\n    t = Buffer.alloc(0)\n\n    while (t.length * 8 < q.bitLength()) {\n      kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n      t = Buffer.concat([t, kv.v])\n    }\n\n    k = bits2int(t, q)\n    kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n    kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n  } while (k.cmp(q) !== -1)\n\n  return k\n}\n\nfunction makeR (g, k, p, q) {\n  return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n  Base.call(this, 'short', conf);\n\n  this.a = new BN(conf.a, 16).toRed(this.red);\n  this.b = new BN(conf.b, 16).toRed(this.red);\n  this.tinv = this.two.redInvm();\n\n  this.zeroA = this.a.fromRed().cmpn(0) === 0;\n  this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n  // If the curve is endomorphic, precalculate beta and lambda\n  this.endo = this._getEndomorphism(conf);\n  this._endoWnafT1 = new Array(4);\n  this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n  // No efficient endomorphism\n  if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n    return;\n\n  // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n  var beta;\n  var lambda;\n  if (conf.beta) {\n    beta = new BN(conf.beta, 16).toRed(this.red);\n  } else {\n    var betas = this._getEndoRoots(this.p);\n    // Choose the smallest beta\n    beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n    beta = beta.toRed(this.red);\n  }\n  if (conf.lambda) {\n    lambda = new BN(conf.lambda, 16);\n  } else {\n    // Choose the lambda that is matching selected beta\n    var lambdas = this._getEndoRoots(this.n);\n    if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n      lambda = lambdas[0];\n    } else {\n      lambda = lambdas[1];\n      assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n    }\n  }\n\n  // Get basis vectors, used for balanced length-two representation\n  var basis;\n  if (conf.basis) {\n    basis = conf.basis.map(function(vec) {\n      return {\n        a: new BN(vec.a, 16),\n        b: new BN(vec.b, 16),\n      };\n    });\n  } else {\n    basis = this._getEndoBasis(lambda);\n  }\n\n  return {\n    beta: beta,\n    lambda: lambda,\n    basis: basis,\n  };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n  // Find roots of for x^2 + x + 1 in F\n  // Root = (-1 +- Sqrt(-3)) / 2\n  //\n  var red = num === this.p ? this.red : BN.mont(num);\n  var tinv = new BN(2).toRed(red).redInvm();\n  var ntinv = tinv.redNeg();\n\n  var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n  var l1 = ntinv.redAdd(s).fromRed();\n  var l2 = ntinv.redSub(s).fromRed();\n  return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n  // aprxSqrt >= sqrt(this.n)\n  var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n  // 3.74\n  // Run EGCD, until r(L + 1) < aprxSqrt\n  var u = lambda;\n  var v = this.n.clone();\n  var x1 = new BN(1);\n  var y1 = new BN(0);\n  var x2 = new BN(0);\n  var y2 = new BN(1);\n\n  // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n  var a0;\n  var b0;\n  // First vector\n  var a1;\n  var b1;\n  // Second vector\n  var a2;\n  var b2;\n\n  var prevR;\n  var i = 0;\n  var r;\n  var x;\n  while (u.cmpn(0) !== 0) {\n    var q = v.div(u);\n    r = v.sub(q.mul(u));\n    x = x2.sub(q.mul(x1));\n    var y = y2.sub(q.mul(y1));\n\n    if (!a1 && r.cmp(aprxSqrt) < 0) {\n      a0 = prevR.neg();\n      b0 = x1;\n      a1 = r.neg();\n      b1 = x;\n    } else if (a1 && ++i === 2) {\n      break;\n    }\n    prevR = r;\n\n    v = u;\n    u = r;\n    x2 = x1;\n    x1 = x;\n    y2 = y1;\n    y1 = y;\n  }\n  a2 = r.neg();\n  b2 = x;\n\n  var len1 = a1.sqr().add(b1.sqr());\n  var len2 = a2.sqr().add(b2.sqr());\n  if (len2.cmp(len1) >= 0) {\n    a2 = a0;\n    b2 = b0;\n  }\n\n  // Normalize signs\n  if (a1.negative) {\n    a1 = a1.neg();\n    b1 = b1.neg();\n  }\n  if (a2.negative) {\n    a2 = a2.neg();\n    b2 = b2.neg();\n  }\n\n  return [\n    { a: a1, b: b1 },\n    { a: a2, b: b2 },\n  ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n  var basis = this.endo.basis;\n  var v1 = basis[0];\n  var v2 = basis[1];\n\n  var c1 = v2.b.mul(k).divRound(this.n);\n  var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n  var p1 = c1.mul(v1.a);\n  var p2 = c2.mul(v2.a);\n  var q1 = c1.mul(v1.b);\n  var q2 = c2.mul(v2.b);\n\n  // Calculate answer\n  var k1 = k.sub(p1).sub(p2);\n  var k2 = q1.add(q2).neg();\n  return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n  x = new BN(x, 16);\n  if (!x.red)\n    x = x.toRed(this.red);\n\n  var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  // XXX Is there any way to tell if the number is odd without converting it\n  // to non-red form?\n  var isOdd = y.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y = y.redNeg();\n\n  return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n  if (point.inf)\n    return true;\n\n  var x = point.x;\n  var y = point.y;\n\n  var ax = this.a.redMul(x);\n  var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n  return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n    function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n      var npoints = this._endoWnafT1;\n      var ncoeffs = this._endoWnafT2;\n      for (var i = 0; i < points.length; i++) {\n        var split = this._endoSplit(coeffs[i]);\n        var p = points[i];\n        var beta = p._getBeta();\n\n        if (split.k1.negative) {\n          split.k1.ineg();\n          p = p.neg(true);\n        }\n        if (split.k2.negative) {\n          split.k2.ineg();\n          beta = beta.neg(true);\n        }\n\n        npoints[i * 2] = p;\n        npoints[i * 2 + 1] = beta;\n        ncoeffs[i * 2] = split.k1;\n        ncoeffs[i * 2 + 1] = split.k2;\n      }\n      var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n      // Clean-up references to points and coefficients\n      for (var j = 0; j < i * 2; j++) {\n        npoints[j] = null;\n        ncoeffs[j] = null;\n      }\n      return res;\n    };\n\nfunction Point(curve, x, y, isRed) {\n  Base.BasePoint.call(this, curve, 'affine');\n  if (x === null && y === null) {\n    this.x = null;\n    this.y = null;\n    this.inf = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    // Force redgomery representation when loading from JSON\n    if (isRed) {\n      this.x.forceRed(this.curve.red);\n      this.y.forceRed(this.curve.red);\n    }\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    this.inf = false;\n  }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n  return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n  return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n  if (!this.curve.endo)\n    return;\n\n  var pre = this.precomputed;\n  if (pre && pre.beta)\n    return pre.beta;\n\n  var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n  if (pre) {\n    var curve = this.curve;\n    var endoMul = function(p) {\n      return curve.point(p.x.redMul(curve.endo.beta), p.y);\n    };\n    pre.beta = beta;\n    beta.precomputed = {\n      beta: null,\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(endoMul),\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(endoMul),\n      },\n    };\n  }\n  return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n  if (!this.precomputed)\n    return [ this.x, this.y ];\n\n  return [ this.x, this.y, this.precomputed && {\n    doubles: this.precomputed.doubles && {\n      step: this.precomputed.doubles.step,\n      points: this.precomputed.doubles.points.slice(1),\n    },\n    naf: this.precomputed.naf && {\n      wnd: this.precomputed.naf.wnd,\n      points: this.precomputed.naf.points.slice(1),\n    },\n  } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n  if (typeof obj === 'string')\n    obj = JSON.parse(obj);\n  var res = curve.point(obj[0], obj[1], red);\n  if (!obj[2])\n    return res;\n\n  function obj2point(obj) {\n    return curve.point(obj[0], obj[1], red);\n  }\n\n  var pre = obj[2];\n  res.precomputed = {\n    beta: null,\n    doubles: pre.doubles && {\n      step: pre.doubles.step,\n      points: [ res ].concat(pre.doubles.points.map(obj2point)),\n    },\n    naf: pre.naf && {\n      wnd: pre.naf.wnd,\n      points: [ res ].concat(pre.naf.points.map(obj2point)),\n    },\n  };\n  return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.inf)\n    return p;\n\n  // P + O = P\n  if (p.inf)\n    return this;\n\n  // P + P = 2P\n  if (this.eq(p))\n    return this.dbl();\n\n  // P + (-P) = O\n  if (this.neg().eq(p))\n    return this.curve.point(null, null);\n\n  // P + Q = O\n  if (this.x.cmp(p.x) === 0)\n    return this.curve.point(null, null);\n\n  var c = this.y.redSub(p.y);\n  if (c.cmpn(0) !== 0)\n    c = c.redMul(this.x.redSub(p.x).redInvm());\n  var nx = c.redSqr().redISub(this.x).redISub(p.x);\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.inf)\n    return this;\n\n  // 2P = O\n  var ys1 = this.y.redAdd(this.y);\n  if (ys1.cmpn(0) === 0)\n    return this.curve.point(null, null);\n\n  var a = this.curve.a;\n\n  var x2 = this.x.redSqr();\n  var dyinv = ys1.redInvm();\n  var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n  var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n  k = new BN(k, 16);\n  if (this.isInfinity())\n    return this;\n  else if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else if (this.curve.endo)\n    return this.curve._endoWnafMulAdd([ this ], [ k ]);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs, true);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n  return this === p ||\n         this.inf === p.inf &&\n             (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n  if (this.inf)\n    return this;\n\n  var res = this.curve.point(this.x, this.y.redNeg());\n  if (_precompute && this.precomputed) {\n    var pre = this.precomputed;\n    var negate = function(p) {\n      return p.neg();\n    };\n    res.precomputed = {\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(negate),\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(negate),\n      },\n    };\n  }\n  return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n  if (this.inf)\n    return this.curve.jpoint(null, null, null);\n\n  var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n  return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n  Base.BasePoint.call(this, curve, 'jacobian');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.one;\n    this.y = this.curve.one;\n    this.z = new BN(0);\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = new BN(z, 16);\n  }\n  if (!this.x.red)\n    this.x = this.x.toRed(this.curve.red);\n  if (!this.y.red)\n    this.y = this.y.toRed(this.curve.red);\n  if (!this.z.red)\n    this.z = this.z.toRed(this.curve.red);\n\n  this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n  return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n  if (this.isInfinity())\n    return this.curve.point(null, null);\n\n  var zinv = this.z.redInvm();\n  var zinv2 = zinv.redSqr();\n  var ax = this.x.redMul(zinv2);\n  var ay = this.y.redMul(zinv2).redMul(zinv);\n\n  return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p;\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 12M + 4S + 7A\n  var pz2 = p.z.redSqr();\n  var z2 = this.z.redSqr();\n  var u1 = this.x.redMul(pz2);\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y.redMul(pz2.redMul(p.z));\n  var s2 = p.y.redMul(z2.redMul(this.z));\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(p.z).redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p.toJ();\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 8M + 3S + 7A\n  var z2 = this.z.redSqr();\n  var u1 = this.x;\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y;\n  var s2 = p.y.redMul(z2).redMul(this.z);\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n  if (pow === 0)\n    return this;\n  if (this.isInfinity())\n    return this;\n  if (!pow)\n    return this.dbl();\n\n  var i;\n  if (this.curve.zeroA || this.curve.threeA) {\n    var r = this;\n    for (i = 0; i < pow; i++)\n      r = r.dbl();\n    return r;\n  }\n\n  // 1M + 2S + 1A + N * (4S + 5M + 8A)\n  // N = 1 => 6M + 6S + 9A\n  var a = this.curve.a;\n  var tinv = this.curve.tinv;\n\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  // Reuse results\n  var jyd = jy.redAdd(jy);\n  for (i = 0; i < pow; i++) {\n    var jx2 = jx.redSqr();\n    var jyd2 = jyd.redSqr();\n    var jyd4 = jyd2.redSqr();\n    var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n    var t1 = jx.redMul(jyd2);\n    var nx = c.redSqr().redISub(t1.redAdd(t1));\n    var t2 = t1.redISub(nx);\n    var dny = c.redMul(t2);\n    dny = dny.redIAdd(dny).redISub(jyd4);\n    var nz = jyd.redMul(jz);\n    if (i + 1 < pow)\n      jz4 = jz4.redMul(jyd4);\n\n    jx = nx;\n    jz = nz;\n    jyd = dny;\n  }\n\n  return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  if (this.curve.zeroA)\n    return this._zeroDbl();\n  else if (this.curve.threeA)\n    return this._threeDbl();\n  else\n    return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 14A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a; a = 0\n    var m = xx.redAdd(xx).redIAdd(xx);\n    // T = M ^ 2 - 2*S\n    var t = m.redSqr().redISub(s).redISub(s);\n\n    // 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2*Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-dbl-2009-l\n    // 2M + 5S + 13A\n\n    // A = X1^2\n    var a = this.x.redSqr();\n    // B = Y1^2\n    var b = this.y.redSqr();\n    // C = B^2\n    var c = b.redSqr();\n    // D = 2 * ((X1 + B)^2 - A - C)\n    var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n    d = d.redIAdd(d);\n    // E = 3 * A\n    var e = a.redAdd(a).redIAdd(a);\n    // F = E^2\n    var f = e.redSqr();\n\n    // 8 * C\n    var c8 = c.redIAdd(c);\n    c8 = c8.redIAdd(c8);\n    c8 = c8.redIAdd(c8);\n\n    // X3 = F - 2 * D\n    nx = f.redISub(d).redISub(d);\n    // Y3 = E * (D - X3) - 8 * C\n    ny = e.redMul(d.redISub(nx)).redISub(c8);\n    // Z3 = 2 * Y1 * Z1\n    nz = this.y.redMul(this.z);\n    nz = nz.redIAdd(nz);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 15A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a\n    var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n    // T = M^2 - 2 * S\n    var t = m.redSqr().redISub(s).redISub(s);\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2 * Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n    // 3M + 5S\n\n    // delta = Z1^2\n    var delta = this.z.redSqr();\n    // gamma = Y1^2\n    var gamma = this.y.redSqr();\n    // beta = X1 * gamma\n    var beta = this.x.redMul(gamma);\n    // alpha = 3 * (X1 - delta) * (X1 + delta)\n    var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n    alpha = alpha.redAdd(alpha).redIAdd(alpha);\n    // X3 = alpha^2 - 8 * beta\n    var beta4 = beta.redIAdd(beta);\n    beta4 = beta4.redIAdd(beta4);\n    var beta8 = beta4.redAdd(beta4);\n    nx = alpha.redSqr().redISub(beta8);\n    // Z3 = (Y1 + Z1)^2 - gamma - delta\n    nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n    // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n    var ggamma8 = gamma.redSqr();\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n  var a = this.curve.a;\n\n  // 4M + 6S + 10A\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  var jx2 = jx.redSqr();\n  var jy2 = jy.redSqr();\n\n  var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n  var jxd4 = jx.redAdd(jx);\n  jxd4 = jxd4.redIAdd(jxd4);\n  var t1 = jxd4.redMul(jy2);\n  var nx = c.redSqr().redISub(t1.redAdd(t1));\n  var t2 = t1.redISub(nx);\n\n  var jyd8 = jy2.redSqr();\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  var ny = c.redMul(t2).redISub(jyd8);\n  var nz = jy.redAdd(jy).redMul(jz);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n  if (!this.curve.zeroA)\n    return this.dbl().add(this);\n\n  // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n  // 5M + 10S + ...\n\n  // XX = X1^2\n  var xx = this.x.redSqr();\n  // YY = Y1^2\n  var yy = this.y.redSqr();\n  // ZZ = Z1^2\n  var zz = this.z.redSqr();\n  // YYYY = YY^2\n  var yyyy = yy.redSqr();\n  // M = 3 * XX + a * ZZ2; a = 0\n  var m = xx.redAdd(xx).redIAdd(xx);\n  // MM = M^2\n  var mm = m.redSqr();\n  // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n  var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n  e = e.redIAdd(e);\n  e = e.redAdd(e).redIAdd(e);\n  e = e.redISub(mm);\n  // EE = E^2\n  var ee = e.redSqr();\n  // T = 16*YYYY\n  var t = yyyy.redIAdd(yyyy);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  // U = (M + E)^2 - MM - EE - T\n  var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n  // X3 = 4 * (X1 * EE - 4 * YY * U)\n  var yyu4 = yy.redMul(u);\n  yyu4 = yyu4.redIAdd(yyu4);\n  yyu4 = yyu4.redIAdd(yyu4);\n  var nx = this.x.redMul(ee).redISub(yyu4);\n  nx = nx.redIAdd(nx);\n  nx = nx.redIAdd(nx);\n  // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n  var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  // Z3 = (Z1 + E)^2 - ZZ - EE\n  var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n  k = new BN(k, kbase);\n\n  return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n  if (p.type === 'affine')\n    return this.eq(p.toJ());\n\n  if (this === p)\n    return true;\n\n  // x1 * z2^2 == x2 * z1^2\n  var z2 = this.z.redSqr();\n  var pz2 = p.z.redSqr();\n  if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n    return false;\n\n  // y1 * z2^3 == y2 * z1^3\n  var z3 = z2.redMul(this.z);\n  var pz3 = pz2.redMul(p.z);\n  return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n  var zs = this.z.redSqr();\n  var rx = x.toRed(this.curve.red).redMul(zs);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(zs);\n  for (;;) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\n\nJPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC JPoint Infinity>';\n  return '<EC JPoint x: ' + this.x.toString(16, 2) +\n      ' y: ' + this.y.toString(16, 2) +\n      ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n  Base.call(this, 'mont', conf);\n\n  this.a = new BN(conf.a, 16).toRed(this.red);\n  this.b = new BN(conf.b, 16).toRed(this.red);\n  this.i4 = new BN(4).toRed(this.red).redInvm();\n  this.two = new BN(2).toRed(this.red);\n  this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n  var x = point.normalize().x;\n  var x2 = x.redSqr();\n  var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n  var y = rhs.redSqrt();\n\n  return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && z === null) {\n    this.x = this.curve.one;\n    this.z = this.curve.zero;\n  } else {\n    this.x = new BN(x, 16);\n    this.z = new BN(z, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n  }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n  return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n  // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n  return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n  // 2M + 2S + 4A\n\n  // A = X1 + Z1\n  var a = this.x.redAdd(this.z);\n  // AA = A^2\n  var aa = a.redSqr();\n  // B = X1 - Z1\n  var b = this.x.redSub(this.z);\n  // BB = B^2\n  var bb = b.redSqr();\n  // C = AA - BB\n  var c = aa.redSub(bb);\n  // X3 = AA * BB\n  var nx = aa.redMul(bb);\n  // Z3 = C * (BB + A24 * C)\n  var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n  // 4M + 2S + 6A\n\n  // A = X2 + Z2\n  var a = this.x.redAdd(this.z);\n  // B = X2 - Z2\n  var b = this.x.redSub(this.z);\n  // C = X3 + Z3\n  var c = p.x.redAdd(p.z);\n  // D = X3 - Z3\n  var d = p.x.redSub(p.z);\n  // DA = D * A\n  var da = d.redMul(a);\n  // CB = C * B\n  var cb = c.redMul(b);\n  // X5 = Z1 * (DA + CB)^2\n  var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n  // Z5 = X1 * (DA - CB)^2\n  var nz = diff.x.redMul(da.redISub(cb).redSqr());\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n  var t = k.clone();\n  var a = this; // (N / 2) * Q + Q\n  var b = this.curve.point(null, null); // (N / 2) * Q\n  var c = this; // Q\n\n  for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n    bits.push(t.andln(1));\n\n  for (var i = bits.length - 1; i >= 0; i--) {\n    if (bits[i] === 0) {\n      // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n      a = a.diffAdd(b, c);\n      // N * Q = 2 * ((N / 2) * Q + Q))\n      b = b.dbl();\n    } else {\n      // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n      b = a.diffAdd(b, c);\n      // N * Q + Q = 2 * ((N / 2) * Q + Q)\n      a = a.dbl();\n    }\n  }\n  return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n  this.x = this.x.redMul(this.z.redInvm());\n  this.z = this.curve.one;\n  return this;\n};\n\nPoint.prototype.getX = function getX() {\n  // Normalize coordinates\n  this.normalize();\n\n  return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n  // NOTE: Important as we are creating point in Base.call()\n  this.twisted = (conf.a | 0) !== 1;\n  this.mOneA = this.twisted && (conf.a | 0) === -1;\n  this.extended = this.mOneA;\n\n  Base.call(this, 'edwards', conf);\n\n  this.a = new BN(conf.a, 16).umod(this.red.m);\n  this.a = this.a.toRed(this.red);\n  this.c = new BN(conf.c, 16).toRed(this.red);\n  this.c2 = this.c.redSqr();\n  this.d = new BN(conf.d, 16).toRed(this.red);\n  this.dd = this.d.redAdd(this.d);\n\n  assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n  this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n  if (this.mOneA)\n    return num.redNeg();\n  else\n    return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n  if (this.oneC)\n    return num;\n  else\n    return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n  return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n  x = new BN(x, 16);\n  if (!x.red)\n    x = x.toRed(this.red);\n\n  var x2 = x.redSqr();\n  var rhs = this.c2.redSub(this.a.redMul(x2));\n  var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n  var y2 = rhs.redMul(lhs.redInvm());\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  var isOdd = y.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y = y.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n  y = new BN(y, 16);\n  if (!y.red)\n    y = y.toRed(this.red);\n\n  // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n  var y2 = y.redSqr();\n  var lhs = y2.redSub(this.c2);\n  var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n  var x2 = lhs.redMul(rhs.redInvm());\n\n  if (x2.cmp(this.zero) === 0) {\n    if (odd)\n      throw new Error('invalid point');\n    else\n      return this.point(this.zero, y);\n  }\n\n  var x = x2.redSqrt();\n  if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  if (x.fromRed().isOdd() !== odd)\n    x = x.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n  if (point.isInfinity())\n    return true;\n\n  // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n  point.normalize();\n\n  var x2 = point.x.redSqr();\n  var y2 = point.y.redSqr();\n  var lhs = x2.redMul(this.a).redAdd(y2);\n  var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n  return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.zero;\n    this.y = this.curve.one;\n    this.z = this.curve.one;\n    this.t = this.curve.zero;\n    this.zOne = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = z ? new BN(z, 16) : this.curve.one;\n    this.t = t && new BN(t, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n    if (this.t && !this.t.red)\n      this.t = this.t.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n\n    // Use extended coordinates\n    if (this.curve.extended && !this.t) {\n      this.t = this.x.redMul(this.y);\n      if (!this.zOne)\n        this.t = this.t.redMul(this.z.redInvm());\n    }\n  }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n  return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.x.cmpn(0) === 0 &&\n    (this.y.cmp(this.z) === 0 ||\n    (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #doubling-dbl-2008-hwcd\n  // 4M + 4S\n\n  // A = X1^2\n  var a = this.x.redSqr();\n  // B = Y1^2\n  var b = this.y.redSqr();\n  // C = 2 * Z1^2\n  var c = this.z.redSqr();\n  c = c.redIAdd(c);\n  // D = a * A\n  var d = this.curve._mulA(a);\n  // E = (X1 + Y1)^2 - A - B\n  var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n  // G = D + B\n  var g = d.redAdd(b);\n  // F = G - C\n  var f = g.redSub(c);\n  // H = D - B\n  var h = d.redSub(b);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #doubling-dbl-2008-bbjlp\n  //     #doubling-dbl-2007-bl\n  // and others\n  // Generally 3M + 4S or 2M + 4S\n\n  // B = (X1 + Y1)^2\n  var b = this.x.redAdd(this.y).redSqr();\n  // C = X1^2\n  var c = this.x.redSqr();\n  // D = Y1^2\n  var d = this.y.redSqr();\n\n  var nx;\n  var ny;\n  var nz;\n  var e;\n  var h;\n  var j;\n  if (this.curve.twisted) {\n    // E = a * C\n    e = this.curve._mulA(c);\n    // F = E + D\n    var f = e.redAdd(d);\n    if (this.zOne) {\n      // X3 = (B - C - D) * (F - 2)\n      nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F^2 - 2 * F\n      nz = f.redSqr().redSub(f).redSub(f);\n    } else {\n      // H = Z1^2\n      h = this.z.redSqr();\n      // J = F - 2 * H\n      j = f.redSub(h).redISub(h);\n      // X3 = (B-C-D)*J\n      nx = b.redSub(c).redISub(d).redMul(j);\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F * J\n      nz = f.redMul(j);\n    }\n  } else {\n    // E = C + D\n    e = c.redAdd(d);\n    // H = (c * Z1)^2\n    h = this.curve._mulC(this.z).redSqr();\n    // J = E - 2 * H\n    j = e.redSub(h).redSub(h);\n    // X3 = c * (B - E) * J\n    nx = this.curve._mulC(b.redISub(e)).redMul(j);\n    // Y3 = c * E * (C - D)\n    ny = this.curve._mulC(e).redMul(c.redISub(d));\n    // Z3 = E * J\n    nz = e.redMul(j);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  // Double in extended coordinates\n  if (this.curve.extended)\n    return this._extDbl();\n  else\n    return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #addition-add-2008-hwcd-3\n  // 8M\n\n  // A = (Y1 - X1) * (Y2 - X2)\n  var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n  // B = (Y1 + X1) * (Y2 + X2)\n  var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n  // C = T1 * k * T2\n  var c = this.t.redMul(this.curve.dd).redMul(p.t);\n  // D = Z1 * 2 * Z2\n  var d = this.z.redMul(p.z.redAdd(p.z));\n  // E = B - A\n  var e = b.redSub(a);\n  // F = D - C\n  var f = d.redSub(c);\n  // G = D + C\n  var g = d.redAdd(c);\n  // H = B + A\n  var h = b.redAdd(a);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #addition-add-2008-bbjlp\n  //     #addition-add-2007-bl\n  // 10M + 1S\n\n  // A = Z1 * Z2\n  var a = this.z.redMul(p.z);\n  // B = A^2\n  var b = a.redSqr();\n  // C = X1 * X2\n  var c = this.x.redMul(p.x);\n  // D = Y1 * Y2\n  var d = this.y.redMul(p.y);\n  // E = d * C * D\n  var e = this.curve.d.redMul(c).redMul(d);\n  // F = B - E\n  var f = b.redSub(e);\n  // G = B + E\n  var g = b.redAdd(e);\n  // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n  var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n  var nx = a.redMul(f).redMul(tmp);\n  var ny;\n  var nz;\n  if (this.curve.twisted) {\n    // Y3 = A * G * (D - a * C)\n    ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n    // Z3 = F * G\n    nz = f.redMul(g);\n  } else {\n    // Y3 = A * G * (D - C)\n    ny = a.redMul(g).redMul(d.redSub(c));\n    // Z3 = c * F * G\n    nz = this.curve._mulC(f).redMul(g);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n  if (this.isInfinity())\n    return p;\n  if (p.isInfinity())\n    return this;\n\n  if (this.curve.extended)\n    return this._extAdd(p);\n  else\n    return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n  if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n  if (this.zOne)\n    return this;\n\n  // Normalize coordinates\n  var zi = this.z.redInvm();\n  this.x = this.x.redMul(zi);\n  this.y = this.y.redMul(zi);\n  if (this.t)\n    this.t = this.t.redMul(zi);\n  this.z = this.curve.one;\n  this.zOne = true;\n  return this;\n};\n\nPoint.prototype.neg = function neg() {\n  return this.curve.point(this.x.redNeg(),\n    this.y,\n    this.z,\n    this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n  this.normalize();\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  this.normalize();\n  return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this === other ||\n         this.getX().cmp(other.getX()) === 0 &&\n         this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n  var rx = x.toRed(this.curve.red).redMul(this.z);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(this.z);\n  for (;;) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n  0x5A827999, 0x6ED9EBA1,\n  0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n  if (!(this instanceof SHA1))\n    return new SHA1();\n\n  BlockHash.call(this);\n  this.h = [\n    0x67452301, 0xefcdab89, 0x98badcfe,\n    0x10325476, 0xc3d2e1f0 ];\n  this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n\n  for(; i < W.length; i++)\n    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n\n  for (i = 0; i < W.length; i++) {\n    var s = ~~(i / 20);\n    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n    e = d;\n    d = c;\n    c = rotl32(b, 30);\n    b = a;\n    a = t;\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n  if (!(this instanceof SHA224))\n    return new SHA224();\n\n  SHA256.call(this);\n  this.h = [\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n    0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n  // Just truncate output\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 7), 'big');\n  else\n    return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n  if (!(this instanceof SHA384))\n    return new SHA384();\n\n  SHA512.call(this);\n  this.h = [\n    0xcbbb9d5d, 0xc1059ed8,\n    0x629a292a, 0x367cd507,\n    0x9159015a, 0x3070dd17,\n    0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31,\n    0x8eb44a87, 0x68581511,\n    0xdb0c2e0d, 0x64f98fa7,\n    0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 12), 'big');\n  else\n    return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n  if (!(this instanceof RIPEMD160))\n    return new RIPEMD160();\n\n  BlockHash.call(this);\n\n  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n  this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n  var A = this.h[0];\n  var B = this.h[1];\n  var C = this.h[2];\n  var D = this.h[3];\n  var E = this.h[4];\n  var Ah = A;\n  var Bh = B;\n  var Ch = C;\n  var Dh = D;\n  var Eh = E;\n  for (var j = 0; j < 80; j++) {\n    var T = sum32(\n      rotl32(\n        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n        s[j]),\n      E);\n    A = E;\n    E = D;\n    D = rotl32(C, 10);\n    C = B;\n    B = T;\n    T = sum32(\n      rotl32(\n        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n        sh[j]),\n      Eh);\n    Ah = Eh;\n    Eh = Dh;\n    Dh = rotl32(Ch, 10);\n    Ch = Bh;\n    Bh = T;\n  }\n  T = sum32_3(this.h[1], C, Dh);\n  this.h[1] = sum32_3(this.h[2], D, Eh);\n  this.h[2] = sum32_3(this.h[3], E, Ah);\n  this.h[3] = sum32_3(this.h[4], A, Bh);\n  this.h[4] = sum32_3(this.h[0], B, Ch);\n  this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'little');\n  else\n    return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n  if (j <= 15)\n    return x ^ y ^ z;\n  else if (j <= 31)\n    return (x & y) | ((~x) & z);\n  else if (j <= 47)\n    return (x | (~y)) ^ z;\n  else if (j <= 63)\n    return (x & z) | (y & (~z));\n  else\n    return x ^ (y | (~z));\n}\n\nfunction K(j) {\n  if (j <= 15)\n    return 0x00000000;\n  else if (j <= 31)\n    return 0x5a827999;\n  else if (j <= 47)\n    return 0x6ed9eba1;\n  else if (j <= 63)\n    return 0x8f1bbcdc;\n  else\n    return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n  if (j <= 15)\n    return 0x50a28be6;\n  else if (j <= 31)\n    return 0x5c4dd124;\n  else if (j <= 47)\n    return 0x6d703ef3;\n  else if (j <= 63)\n    return 0x7a6d76e9;\n  else\n    return 0x00000000;\n}\n\nvar r = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n  if (!(this instanceof Hmac))\n    return new Hmac(hash, key, enc);\n  this.Hash = hash;\n  this.blockSize = hash.blockSize / 8;\n  this.outSize = hash.outSize / 8;\n  this.inner = null;\n  this.outer = null;\n\n  this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n  // Shorten key, if needed\n  if (key.length > this.blockSize)\n    key = new this.Hash().update(key).digest();\n  assert(key.length <= this.blockSize);\n\n  // Add padding to key\n  for (var i = key.length; i < this.blockSize; i++)\n    key.push(0);\n\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x36;\n  this.inner = new this.Hash().update(key);\n\n  // 0x36 ^ 0x5c = 0x6a\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x6a;\n  this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n  this.inner.update(msg, enc);\n  return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n  this.outer.update(this.inner.digest());\n  return this.outer.digest(enc);\n};\n","module.exports = {\n  doubles: {\n    step: 4,\n    points: [\n      [\n        'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n        'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n      ],\n      [\n        '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n        '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n      ],\n      [\n        '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n        'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n      ],\n      [\n        '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n        '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n      ],\n      [\n        '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n        '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n      ],\n      [\n        '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n        '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n      ],\n      [\n        'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n        '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n      ],\n      [\n        '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n        'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n      ],\n      [\n        'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n        '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n      ],\n      [\n        'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n        'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n      ],\n      [\n        'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n        '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n      ],\n      [\n        '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n        '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n      ],\n      [\n        '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n        '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n      ],\n      [\n        '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n        '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n      ],\n      [\n        '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n        '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n      ],\n      [\n        '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n        '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n      ],\n      [\n        '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n        '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n      ],\n      [\n        '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n        '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n      ],\n      [\n        '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n        'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n      ],\n      [\n        'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n        '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n      ],\n      [\n        'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n        '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n      ],\n      [\n        '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n        '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n      ],\n      [\n        '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n        '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n      ],\n      [\n        'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n        '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n      ],\n      [\n        '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n        'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n      ],\n      [\n        'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n        '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n      ],\n      [\n        'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n        'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n      ],\n      [\n        'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n        '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n      ],\n      [\n        'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n        'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n      ],\n      [\n        'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n        '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n      ],\n      [\n        '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n        'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n      ],\n      [\n        '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n        '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n      ],\n      [\n        'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n        '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n      ],\n      [\n        '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n        'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n      ],\n      [\n        'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n        '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n      ],\n      [\n        'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n        '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n      ],\n      [\n        'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n        'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n      ],\n      [\n        '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n        '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n      ],\n      [\n        '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n        '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n      ],\n      [\n        '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n        'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n      ],\n      [\n        '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n        '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n      ],\n      [\n        'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n        '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n      ],\n      [\n        '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n        '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n      ],\n      [\n        '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n        'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n      ],\n      [\n        '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n        '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n      ],\n      [\n        'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n        '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n      ],\n      [\n        '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n        'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n      ],\n      [\n        'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n        'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n      ],\n      [\n        'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n        '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n      ],\n      [\n        '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n        'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n      ],\n      [\n        '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n        'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n      ],\n      [\n        'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n        '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n      ],\n      [\n        'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n        '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n      ],\n      [\n        'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n        '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n      ],\n      [\n        '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n        'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n      ],\n      [\n        '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n        '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n      ],\n      [\n        'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n        'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n      ],\n      [\n        '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n        'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n      ],\n      [\n        '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n        '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n      ],\n      [\n        '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n        '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n      ],\n      [\n        'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n        'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n      ],\n      [\n        '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n        '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n      ],\n      [\n        '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n        '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n      ],\n      [\n        'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n        '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n      ],\n      [\n        'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n        'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n      ],\n    ],\n  },\n  naf: {\n    wnd: 7,\n    points: [\n      [\n        'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n        '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n      ],\n      [\n        '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n        'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n      ],\n      [\n        '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n        '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n      ],\n      [\n        'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n        'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n      ],\n      [\n        '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n        'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n      ],\n      [\n        'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n        'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n      ],\n      [\n        'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n        '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n      ],\n      [\n        'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n        '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n      ],\n      [\n        '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n        '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n      ],\n      [\n        '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n        '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n      ],\n      [\n        '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n        '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n      ],\n      [\n        '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n        '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n      ],\n      [\n        'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n        'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n      ],\n      [\n        'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n        '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n      ],\n      [\n        '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n        'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n      ],\n      [\n        '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n        'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n      ],\n      [\n        '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n        '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n      ],\n      [\n        '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n        '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n      ],\n      [\n        '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n        '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n      ],\n      [\n        '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n        'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n      ],\n      [\n        'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n        'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n      ],\n      [\n        '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n        '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n      ],\n      [\n        '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n        '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n      ],\n      [\n        'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n        'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n      ],\n      [\n        '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n        '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n      ],\n      [\n        'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n        'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n      ],\n      [\n        'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n        'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n      ],\n      [\n        '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n        '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n      ],\n      [\n        '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n        '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n      ],\n      [\n        '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n        '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n      ],\n      [\n        'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n        '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n      ],\n      [\n        '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n        '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n      ],\n      [\n        'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n        '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n      ],\n      [\n        '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n        'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n      ],\n      [\n        '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n        'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n      ],\n      [\n        'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n        'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n      ],\n      [\n        '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n        '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n      ],\n      [\n        '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n        'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n      ],\n      [\n        'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n        'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n      ],\n      [\n        '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n        '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n      ],\n      [\n        '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n        'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n      ],\n      [\n        '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n        '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n      ],\n      [\n        '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n        'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n      ],\n      [\n        'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n        '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n      ],\n      [\n        '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n        '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n      ],\n      [\n        '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n        'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n      ],\n      [\n        '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n        'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n      ],\n      [\n        'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n        'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n      ],\n      [\n        'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n        'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n      ],\n      [\n        '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n        '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n      ],\n      [\n        '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n        '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n      ],\n      [\n        'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n        '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n      ],\n      [\n        'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n        'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n      ],\n      [\n        '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n        '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n      ],\n      [\n        '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n        '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n      ],\n      [\n        'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n        '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n      ],\n      [\n        '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n        '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n      ],\n      [\n        'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n        'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n      ],\n      [\n        '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n        'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n      ],\n      [\n        '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n        '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n      ],\n      [\n        'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n        '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n      ],\n      [\n        'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n        '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n      ],\n      [\n        '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n        '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n      ],\n      [\n        '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n        '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n      ],\n      [\n        '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n        'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n      ],\n      [\n        '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n        'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n      ],\n      [\n        '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n        '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n      ],\n      [\n        '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n        '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n      ],\n      [\n        '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n        '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n      ],\n      [\n        '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n        'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n      ],\n      [\n        'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n        'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n      ],\n      [\n        '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n        'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n      ],\n      [\n        'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n        '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n      ],\n      [\n        'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n        '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n      ],\n      [\n        'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n        '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n      ],\n      [\n        'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n        '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n      ],\n      [\n        '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n        'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n      ],\n      [\n        '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n        '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n      ],\n      [\n        '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n        'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n      ],\n      [\n        'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n        'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n      ],\n      [\n        'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n        '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n      ],\n      [\n        'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n        'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n      ],\n      [\n        'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n        '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n      ],\n      [\n        '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n        '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n      ],\n      [\n        'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n        '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n      ],\n      [\n        'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n        '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n      ],\n      [\n        '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n        '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n      ],\n      [\n        '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n        'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n      ],\n      [\n        'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n        '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n      ],\n      [\n        'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n        '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n      ],\n      [\n        'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n        '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n      ],\n      [\n        '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n        '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n      ],\n      [\n        'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n        'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n      ],\n      [\n        '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n        'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n      ],\n      [\n        'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n        'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n      ],\n      [\n        'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n        '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n      ],\n      [\n        '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n        'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n      ],\n      [\n        'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n        '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n      ],\n      [\n        'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n        '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n      ],\n      [\n        'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n        '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n      ],\n      [\n        '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n        'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n      ],\n      [\n        '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n        'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n      ],\n      [\n        'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n        '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n      ],\n      [\n        '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n        'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n      ],\n      [\n        '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n        '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n      ],\n      [\n        '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n        'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n      ],\n      [\n        'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n        'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n      ],\n      [\n        '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n        'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n      ],\n      [\n        '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n        '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n      ],\n      [\n        '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n        'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n      ],\n      [\n        '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n        '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n      ],\n      [\n        'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n        'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n      ],\n      [\n        '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n        '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n      ],\n      [\n        'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n        '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n      ],\n      [\n        '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n        '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n      ],\n      [\n        'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n        'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n      ],\n      [\n        'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n        '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n      ],\n      [\n        'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n        'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n      ],\n      [\n        '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n        'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n      ],\n      [\n        '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n        '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n      ],\n      [\n        '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n        'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n      ],\n      [\n        '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n        '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n      ],\n      [\n        '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n        '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n      ],\n      [\n        '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n        'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n      ],\n      [\n        '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n        '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n      ],\n      [\n        '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n        '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n      ],\n      [\n        '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n        '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n      ],\n    ],\n  },\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n  if (!(this instanceof EC))\n    return new EC(options);\n\n  // Shortcut `elliptic.ec(curve-name)`\n  if (typeof options === 'string') {\n    assert(Object.prototype.hasOwnProperty.call(curves, options),\n      'Unknown curve ' + options);\n\n    options = curves[options];\n  }\n\n  // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n  if (options instanceof curves.PresetCurve)\n    options = { curve: options };\n\n  this.curve = options.curve.curve;\n  this.n = this.curve.n;\n  this.nh = this.n.ushrn(1);\n  this.g = this.curve.g;\n\n  // Point on curve\n  this.g = options.curve.g;\n  this.g.precompute(options.curve.n.bitLength() + 1);\n\n  // Hash for function for DRBG\n  this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n  return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n  return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n  return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n  if (!options)\n    options = {};\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8',\n    entropy: options.entropy || rand(this.hash.hmacStrength),\n    entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n    nonce: this.n.toArray(),\n  });\n\n  var bytes = this.n.byteLength();\n  var ns2 = this.n.sub(new BN(2));\n  for (;;) {\n    var priv = new BN(drbg.generate(bytes));\n    if (priv.cmp(ns2) > 0)\n      continue;\n\n    priv.iaddn(1);\n    return this.keyFromPrivate(priv);\n  }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n  var delta = msg.byteLength() * 8 - this.n.bitLength();\n  if (delta > 0)\n    msg = msg.ushrn(delta);\n  if (!truncOnly && msg.cmp(this.n) >= 0)\n    return msg.sub(this.n);\n  else\n    return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n  if (typeof enc === 'object') {\n    options = enc;\n    enc = null;\n  }\n  if (!options)\n    options = {};\n\n  key = this.keyFromPrivate(key, enc);\n  msg = this._truncateToN(new BN(msg, 16));\n\n  // Zero-extend key to provide enough entropy\n  var bytes = this.n.byteLength();\n  var bkey = key.getPrivate().toArray('be', bytes);\n\n  // Zero-extend nonce to have the same byte size as N\n  var nonce = msg.toArray('be', bytes);\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    entropy: bkey,\n    nonce: nonce,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8',\n  });\n\n  // Number of bytes to generate\n  var ns1 = this.n.sub(new BN(1));\n\n  for (var iter = 0; ; iter++) {\n    var k = options.k ?\n      options.k(iter) :\n      new BN(drbg.generate(this.n.byteLength()));\n    k = this._truncateToN(k, true);\n    if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n      continue;\n\n    var kp = this.g.mul(k);\n    if (kp.isInfinity())\n      continue;\n\n    var kpX = kp.getX();\n    var r = kpX.umod(this.n);\n    if (r.cmpn(0) === 0)\n      continue;\n\n    var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n    s = s.umod(this.n);\n    if (s.cmpn(0) === 0)\n      continue;\n\n    var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n                        (kpX.cmp(r) !== 0 ? 2 : 0);\n\n    // Use complement of `s`, if it is > `n / 2`\n    if (options.canonical && s.cmp(this.nh) > 0) {\n      s = this.n.sub(s);\n      recoveryParam ^= 1;\n    }\n\n    return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n  }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n  msg = this._truncateToN(new BN(msg, 16));\n  key = this.keyFromPublic(key, enc);\n  signature = new Signature(signature, 'hex');\n\n  // Perform primitive values validation\n  var r = signature.r;\n  var s = signature.s;\n  if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n    return false;\n  if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n    return false;\n\n  // Validate signature\n  var sinv = s.invm(this.n);\n  var u1 = sinv.mul(msg).umod(this.n);\n  var u2 = sinv.mul(r).umod(this.n);\n  var p;\n\n  if (!this.curve._maxwellTrick) {\n    p = this.g.mulAdd(u1, key.getPublic(), u2);\n    if (p.isInfinity())\n      return false;\n\n    return p.getX().umod(this.n).cmp(r) === 0;\n  }\n\n  // NOTE: Greg Maxwell's trick, inspired by:\n  // https://git.io/vad3K\n\n  p = this.g.jmulAdd(u1, key.getPublic(), u2);\n  if (p.isInfinity())\n    return false;\n\n  // Compare `p.x` of Jacobian point with `r`,\n  // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n  // inverse of `p.z^2`\n  return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n  assert((3 & j) === j, 'The recovery param is more than two bits');\n  signature = new Signature(signature, enc);\n\n  var n = this.n;\n  var e = new BN(msg);\n  var r = signature.r;\n  var s = signature.s;\n\n  // A set LSB signifies that the y-coordinate is odd\n  var isYOdd = j & 1;\n  var isSecondKey = j >> 1;\n  if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n    throw new Error('Unable to find sencond key candinate');\n\n  // 1.1. Let x = r + jn.\n  if (isSecondKey)\n    r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n  else\n    r = this.curve.pointFromX(r, isYOdd);\n\n  var rInv = signature.r.invm(n);\n  var s1 = n.sub(e).mul(rInv).umod(n);\n  var s2 = s.mul(rInv).umod(n);\n\n  // 1.6.1 Compute Q = r^-1 (sR -  eG)\n  //               Q = r^-1 (sR + -eG)\n  return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n  signature = new Signature(signature, enc);\n  if (signature.recoveryParam !== null)\n    return signature.recoveryParam;\n\n  for (var i = 0; i < 4; i++) {\n    var Qprime;\n    try {\n      Qprime = this.recoverPubKey(e, signature, i);\n    } catch (e) {\n      continue;\n    }\n\n    if (Qprime.eq(Q))\n      return i;\n  }\n  throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n  if (!(this instanceof HmacDRBG))\n    return new HmacDRBG(options);\n  this.hash = options.hash;\n  this.predResist = !!options.predResist;\n\n  this.outLen = this.hash.outSize;\n  this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n  this._reseed = null;\n  this.reseedInterval = null;\n  this.K = null;\n  this.V = null;\n\n  var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n  var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n  var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n  this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n  var seed = entropy.concat(nonce).concat(pers);\n\n  this.K = new Array(this.outLen / 8);\n  this.V = new Array(this.outLen / 8);\n  for (var i = 0; i < this.V.length; i++) {\n    this.K[i] = 0x00;\n    this.V[i] = 0x01;\n  }\n\n  this._update(seed);\n  this._reseed = 1;\n  this.reseedInterval = 0x1000000000000;  // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n  return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n  var kmac = this._hmac()\n                 .update(this.V)\n                 .update([ 0x00 ]);\n  if (seed)\n    kmac = kmac.update(seed);\n  this.K = kmac.digest();\n  this.V = this._hmac().update(this.V).digest();\n  if (!seed)\n    return;\n\n  this.K = this._hmac()\n               .update(this.V)\n               .update([ 0x01 ])\n               .update(seed)\n               .digest();\n  this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n  // Optional entropy enc\n  if (typeof entropyEnc !== 'string') {\n    addEnc = add;\n    add = entropyEnc;\n    entropyEnc = null;\n  }\n\n  entropy = utils.toArray(entropy, entropyEnc);\n  add = utils.toArray(add, addEnc);\n\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n  this._update(entropy.concat(add || []));\n  this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n  if (this._reseed > this.reseedInterval)\n    throw new Error('Reseed is required');\n\n  // Optional encoding\n  if (typeof enc !== 'string') {\n    addEnc = add;\n    add = enc;\n    enc = null;\n  }\n\n  // Optional additional data\n  if (add) {\n    add = utils.toArray(add, addEnc || 'hex');\n    this._update(add);\n  }\n\n  var temp = [];\n  while (temp.length < len) {\n    this.V = this._hmac().update(this.V).digest();\n    temp = temp.concat(this.V);\n  }\n\n  var res = temp.slice(0, len);\n  this._update(add);\n  this._reseed++;\n  return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n  this.ec = ec;\n  this.priv = null;\n  this.pub = null;\n\n  // KeyPair(ec, { priv: ..., pub: ... })\n  if (options.priv)\n    this._importPrivate(options.priv, options.privEnc);\n  if (options.pub)\n    this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n  if (pub instanceof KeyPair)\n    return pub;\n\n  return new KeyPair(ec, {\n    pub: pub,\n    pubEnc: enc,\n  });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n  if (priv instanceof KeyPair)\n    return priv;\n\n  return new KeyPair(ec, {\n    priv: priv,\n    privEnc: enc,\n  });\n};\n\nKeyPair.prototype.validate = function validate() {\n  var pub = this.getPublic();\n\n  if (pub.isInfinity())\n    return { result: false, reason: 'Invalid public key' };\n  if (!pub.validate())\n    return { result: false, reason: 'Public key is not a point' };\n  if (!pub.mul(this.ec.curve.n).isInfinity())\n    return { result: false, reason: 'Public key * N != O' };\n\n  return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n  // compact is optional argument\n  if (typeof compact === 'string') {\n    enc = compact;\n    compact = null;\n  }\n\n  if (!this.pub)\n    this.pub = this.ec.g.mul(this.priv);\n\n  if (!enc)\n    return this.pub;\n\n  return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n  if (enc === 'hex')\n    return this.priv.toString(16, 2);\n  else\n    return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n  this.priv = new BN(key, enc || 16);\n\n  // Ensure that the priv won't be bigger than n, otherwise we may fail\n  // in fixed multiplication method\n  this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n  if (key.x || key.y) {\n    // Montgomery points only have an `x` coordinate.\n    // Weierstrass/Edwards points on the other hand have both `x` and\n    // `y` coordinates.\n    if (this.ec.curve.type === 'mont') {\n      assert(key.x, 'Need x coordinate');\n    } else if (this.ec.curve.type === 'short' ||\n               this.ec.curve.type === 'edwards') {\n      assert(key.x && key.y, 'Need both x and y coordinate');\n    }\n    this.pub = this.ec.curve.point(key.x, key.y);\n    return;\n  }\n  this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n  if(!pub.validate()) {\n    assert(pub.validate(), 'public point not validated');\n  }\n  return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n  return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n  return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n  return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n         ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n  if (options instanceof Signature)\n    return options;\n\n  if (this._importDER(options, enc))\n    return;\n\n  assert(options.r && options.s, 'Signature without r or s');\n  this.r = new BN(options.r, 16);\n  this.s = new BN(options.s, 16);\n  if (options.recoveryParam === undefined)\n    this.recoveryParam = null;\n  else\n    this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n  this.place = 0;\n}\n\nfunction getLength(buf, p) {\n  var initial = buf[p.place++];\n  if (!(initial & 0x80)) {\n    return initial;\n  }\n  var octetLen = initial & 0xf;\n\n  // Indefinite length or overflow\n  if (octetLen === 0 || octetLen > 4) {\n    return false;\n  }\n\n  var val = 0;\n  for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n    val <<= 8;\n    val |= buf[off];\n    val >>>= 0;\n  }\n\n  // Leading zeroes\n  if (val <= 0x7f) {\n    return false;\n  }\n\n  p.place = off;\n  return val;\n}\n\nfunction rmPadding(buf) {\n  var i = 0;\n  var len = buf.length - 1;\n  while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n    i++;\n  }\n  if (i === 0) {\n    return buf;\n  }\n  return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n  data = utils.toArray(data, enc);\n  var p = new Position();\n  if (data[p.place++] !== 0x30) {\n    return false;\n  }\n  var len = getLength(data, p);\n  if (len === false) {\n    return false;\n  }\n  if ((len + p.place) !== data.length) {\n    return false;\n  }\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var rlen = getLength(data, p);\n  if (rlen === false) {\n    return false;\n  }\n  var r = data.slice(p.place, rlen + p.place);\n  p.place += rlen;\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var slen = getLength(data, p);\n  if (slen === false) {\n    return false;\n  }\n  if (data.length !== slen + p.place) {\n    return false;\n  }\n  var s = data.slice(p.place, slen + p.place);\n  if (r[0] === 0) {\n    if (r[1] & 0x80) {\n      r = r.slice(1);\n    } else {\n      // Leading zeroes\n      return false;\n    }\n  }\n  if (s[0] === 0) {\n    if (s[1] & 0x80) {\n      s = s.slice(1);\n    } else {\n      // Leading zeroes\n      return false;\n    }\n  }\n\n  this.r = new BN(r);\n  this.s = new BN(s);\n  this.recoveryParam = null;\n\n  return true;\n};\n\nfunction constructLength(arr, len) {\n  if (len < 0x80) {\n    arr.push(len);\n    return;\n  }\n  var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n  arr.push(octets | 0x80);\n  while (--octets) {\n    arr.push((len >>> (octets << 3)) & 0xff);\n  }\n  arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n  var r = this.r.toArray();\n  var s = this.s.toArray();\n\n  // Pad values\n  if (r[0] & 0x80)\n    r = [ 0 ].concat(r);\n  // Pad values\n  if (s[0] & 0x80)\n    s = [ 0 ].concat(s);\n\n  r = rmPadding(r);\n  s = rmPadding(s);\n\n  while (!s[0] && !(s[1] & 0x80)) {\n    s = s.slice(1);\n  }\n  var arr = [ 0x02 ];\n  constructLength(arr, r.length);\n  arr = arr.concat(r);\n  arr.push(0x02);\n  constructLength(arr, s.length);\n  var backHalf = arr.concat(s);\n  var res = [ 0x30 ];\n  constructLength(res, backHalf.length);\n  res = res.concat(backHalf);\n  return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n  assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n  if (!(this instanceof EDDSA))\n    return new EDDSA(curve);\n\n  curve = curves[curve].curve;\n  this.curve = curve;\n  this.g = curve.g;\n  this.g.precompute(curve.n.bitLength() + 1);\n\n  this.pointClass = curve.point().constructor;\n  this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n  this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n  message = parseBytes(message);\n  var key = this.keyFromSecret(secret);\n  var r = this.hashInt(key.messagePrefix(), message);\n  var R = this.g.mul(r);\n  var Rencoded = this.encodePoint(R);\n  var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n    .mul(key.priv());\n  var S = r.add(s_).umod(this.curve.n);\n  return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n  message = parseBytes(message);\n  sig = this.makeSignature(sig);\n  var key = this.keyFromPublic(pub);\n  var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n  var SG = this.g.mul(sig.S());\n  var RplusAh = sig.R().add(key.pub().mul(h));\n  return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n  var hash = this.hash();\n  for (var i = 0; i < arguments.length; i++)\n    hash.update(arguments[i]);\n  return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n  return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n  return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n  if (sig instanceof Signature)\n    return sig;\n  return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n  var enc = point.getY().toArray('le', this.encodingLength);\n  enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n  return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n  bytes = utils.parseBytes(bytes);\n\n  var lastIx = bytes.length - 1;\n  var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n  var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n  var y = utils.intFromLE(normed);\n  return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n  return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n  return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n  return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n  this.eddsa = eddsa;\n  this._secret = parseBytes(params.secret);\n  if (eddsa.isPoint(params.pub))\n    this._pub = params.pub;\n  else\n    this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n  if (pub instanceof KeyPair)\n    return pub;\n  return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n  if (secret instanceof KeyPair)\n    return secret;\n  return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n  return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n  return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n  if (this._pubBytes)\n    return this.eddsa.decodePoint(this._pubBytes);\n  return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n  var eddsa = this.eddsa;\n  var hash = this.hash();\n  var lastIx = eddsa.encodingLength - 1;\n\n  var a = hash.slice(0, eddsa.encodingLength);\n  a[0] &= 248;\n  a[lastIx] &= 127;\n  a[lastIx] |= 64;\n\n  return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n  return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n  return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n  return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n  assert(this._secret, 'KeyPair can only verify');\n  return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n  return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n  assert(this._secret, 'KeyPair is public only');\n  return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n  return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n  this.eddsa = eddsa;\n\n  if (typeof sig !== 'object')\n    sig = parseBytes(sig);\n\n  if (Array.isArray(sig)) {\n    sig = {\n      R: sig.slice(0, eddsa.encodingLength),\n      S: sig.slice(eddsa.encodingLength),\n    };\n  }\n\n  assert(sig.R && sig.S, 'Signature without R or S');\n\n  if (eddsa.isPoint(sig.R))\n    this._R = sig.R;\n  if (sig.S instanceof BN)\n    this._S = sig.S;\n\n  this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n  this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n  return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n  return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n  return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n  return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n  return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n  return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('modulus').int(),\n    this.key('publicExponent').int(),\n    this.key('privateExponent').int(),\n    this.key('prime1').int(),\n    this.key('prime2').int(),\n    this.key('exponent1').int(),\n    this.key('exponent2').int(),\n    this.key('coefficient').int()\n  )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n  this.seq().obj(\n    this.key('modulus').int(),\n    this.key('publicExponent').int()\n  )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('none').null_().optional(),\n    this.key('curve').objid().optional(),\n    this.key('params').seq().obj(\n      this.key('p').int(),\n      this.key('q').int(),\n      this.key('g').int()\n    ).optional()\n  )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').seq().obj(\n      this.key('id').objid(),\n      this.key('decrypt').seq().obj(\n        this.key('kde').seq().obj(\n          this.key('id').objid(),\n          this.key('kdeparams').seq().obj(\n            this.key('salt').octstr(),\n            this.key('iters').int()\n          )\n        ),\n        this.key('cipher').seq().obj(\n          this.key('algo').objid(),\n          this.key('iv').octstr()\n        )\n      )\n    ),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('p').int(),\n    this.key('q').int(),\n    this.key('g').int(),\n    this.key('pub_key').int(),\n    this.key('priv_key').int()\n  )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n  this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('privateKey').octstr(),\n    this.key('parameters').optional().explicit(0).use(ECParameters),\n    this.key('publicKey').optional().explicit(1).bitstr()\n  )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n  this.choice({\n    namedCurve: this.objid()\n  })\n})\n\nexports.signature = asn1.define('signature', function () {\n  this.seq().obj(\n    this.key('r').int(),\n    this.key('s').int()\n  )\n})\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n  return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n  this.name = name;\n  this.body = body;\n\n  this.decoders = {};\n  this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n  const name = this.name;\n\n  function Generated(entity) {\n    this._initNamed(entity, name);\n  }\n  inherits(Generated, Base);\n  Generated.prototype._initNamed = function _initNamed(entity, name) {\n    Base.call(this, entity, name);\n  };\n\n  return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n  enc = enc || 'der';\n  // Lazily create decoder\n  if (!this.decoders.hasOwnProperty(enc))\n    this.decoders[enc] = this._createNamed(decoders[enc]);\n  return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n  return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n  enc = enc || 'der';\n  // Lazily create encoder\n  if (!this.encoders.hasOwnProperty(enc))\n    this.encoders[enc] = this._createNamed(encoders[enc]);\n  return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n  return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n  DEREncoder.call(this, entity);\n  this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n  const buf = DEREncoder.prototype.encode.call(this, data);\n\n  const p = buf.toString('base64');\n  const out = [ '-----BEGIN ' + options.label + '-----' ];\n  for (let i = 0; i < p.length; i += 64)\n    out.push(p.slice(i, i + 64));\n  out.push('-----END ' + options.label + '-----');\n  return out.join('\\n');\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n  DERDecoder.call(this, entity);\n  this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n  const lines = data.toString().split(/[\\r\\n]+/g);\n\n  const label = options.label.toUpperCase();\n\n  const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n  let start = -1;\n  let end = -1;\n  for (let i = 0; i < lines.length; i++) {\n    const match = lines[i].match(re);\n    if (match === null)\n      continue;\n\n    if (match[2] !== label)\n      continue;\n\n    if (start === -1) {\n      if (match[1] !== 'BEGIN')\n        break;\n      start = i;\n    } else {\n      if (match[1] !== 'END')\n        break;\n      end = i;\n      break;\n    }\n  }\n  if (start === -1 || end === -1)\n    throw new Error('PEM section not found for: ' + label);\n\n  const base64 = lines.slice(start + 1, end).join('');\n  // Remove excessive symbols\n  base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n  const input = Buffer.from(base64, 'base64');\n  return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n  const res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    const value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n};\n\nconstants.der = require('./der');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n  this.choice({\n    utcTime: this.utctime(),\n    generalTime: this.gentime()\n  })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n  this.seq().obj(\n    this.key('type').objid(),\n    this.key('value').any()\n  )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('parameters').optional(),\n    this.key('curve').objid().optional()\n  )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n  this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n  this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n  this.choice({\n    rdnSequence: this.use(RDNSequence)\n  })\n})\n\nvar Validity = asn.define('Validity', function () {\n  this.seq().obj(\n    this.key('notBefore').use(Time),\n    this.key('notAfter').use(Time)\n  )\n})\n\nvar Extension = asn.define('Extension', function () {\n  this.seq().obj(\n    this.key('extnID').objid(),\n    this.key('critical').bool().def(false),\n    this.key('extnValue').octstr()\n  )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n  this.seq().obj(\n    this.key('version').explicit(0).int().optional(),\n    this.key('serialNumber').int(),\n    this.key('signature').use(AlgorithmIdentifier),\n    this.key('issuer').use(Name),\n    this.key('validity').use(Validity),\n    this.key('subject').use(Name),\n    this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n    this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n    this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n    this.key('extensions').explicit(3).seqof(Extension).optional()\n  )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n  this.seq().obj(\n    this.key('tbsCertificate').use(TBSCertificate),\n    this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n    this.key('signatureValue').bitstr()\n  )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n  var key = okey.toString()\n  var match = key.match(findProc)\n  var decrypted\n  if (!match) {\n    var match2 = key.match(fullRegex)\n    decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n  } else {\n    var suite = 'aes' + match[1]\n    var iv = Buffer.from(match[2], 'hex')\n    var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n    var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n    var out = []\n    var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n    out.push(cipher.update(cipherText))\n    out.push(cipher.final())\n    decrypted = Buffer.concat(out)\n  }\n  var tag = key.match(startRegex)[1]\n  return {\n    tag: tag,\n    data: decrypted\n  }\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n  var pub = parseKeys(key)\n  if (pub.type === 'ec') {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n    return ecVerify(sig, hash, pub)\n  } else if (pub.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong public key type')\n    return dsaVerify(sig, hash, pub)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = pub.modulus.byteLength()\n  var pad = [1]\n  var padNum = 0\n  while (hash.length + pad.length + 2 < len) {\n    pad.push(0xff)\n    padNum++\n  }\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) {\n    pad.push(hash[i])\n  }\n  pad = Buffer.from(pad)\n  var red = BN.mont(pub.modulus)\n  sig = new BN(sig).toRed(red)\n\n  sig = sig.redPow(new BN(pub.publicExponent))\n  sig = Buffer.from(sig.fromRed().toArray())\n  var out = padNum < 8 ? 1 : 0\n  len = Math.min(sig.length, pad.length)\n  if (sig.length !== pad.length) out = 1\n\n  i = -1\n  while (++i < len) out |= sig[i] ^ pad[i]\n  return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n  var curveId = curves[pub.data.algorithm.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var pubkey = pub.data.subjectPrivateKey.data\n\n  return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n  var p = pub.data.p\n  var q = pub.data.q\n  var g = pub.data.g\n  var y = pub.data.pub_key\n  var unpacked = parseKeys.signature.decode(sig, 'der')\n  var s = unpacked.s\n  var r = unpacked.r\n  checkValue(s, q)\n  checkValue(r, q)\n  var montp = BN.mont(p)\n  var w = s.invm(q)\n  var v = g.toRed(montp)\n    .redPow(new BN(hash).mul(w).mod(q))\n    .fromRed()\n    .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n    .mod(p)\n    .mod(q)\n  return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n  if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n  if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n  return new ECDH(curve)\n}\n\nvar aliases = {\n  secp256k1: {\n    name: 'secp256k1',\n    byteLength: 32\n  },\n  secp224r1: {\n    name: 'p224',\n    byteLength: 28\n  },\n  prime256v1: {\n    name: 'p256',\n    byteLength: 32\n  },\n  prime192v1: {\n    name: 'p192',\n    byteLength: 24\n  },\n  ed25519: {\n    name: 'ed25519',\n    byteLength: 32\n  },\n  secp384r1: {\n    name: 'p384',\n    byteLength: 48\n  },\n  secp521r1: {\n    name: 'p521',\n    byteLength: 66\n  }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n  this.curveType = aliases[curve]\n  if (!this.curveType) {\n    this.curveType = {\n      name: curve\n    }\n  }\n  this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n  this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n  this.keys = this.curve.genKeyPair()\n  return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n  inenc = inenc || 'utf8'\n  if (!Buffer.isBuffer(other)) {\n    other = new Buffer(other, inenc)\n  }\n  var otherPub = this.curve.keyFromPublic(other).getPublic()\n  var out = otherPub.mul(this.keys.getPrivate()).getX()\n  return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n  var key = this.keys.getPublic(format === 'compressed', true)\n  if (format === 'hybrid') {\n    if (key[key.length - 1] % 2) {\n      key[0] = 7\n    } else {\n      key[0] = 6\n    }\n  }\n  return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n  return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc)\n  }\n  this.keys._importPublic(pub)\n  return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc)\n  }\n\n  var _priv = new BN(priv)\n  _priv = _priv.toString(16)\n  this.keys = this.curve.genKeyPair()\n  this.keys._importPrivate(_priv)\n  return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n  if (!Array.isArray(bn)) {\n    bn = bn.toArray()\n  }\n  var buf = new Buffer(bn)\n  if (len && buf.length < len) {\n    var zeros = new Buffer(len - buf.length)\n    zeros.fill(0)\n    buf = Buffer.concat([zeros, buf])\n  }\n  if (!enc) {\n    return buf\n  } else {\n    return buf.toString(enc)\n  }\n}\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n  return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n  return exports.privateDecrypt(key, buf, true)\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n  var padding\n  if (publicKey.padding) {\n    padding = publicKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n  var key = parseKeys(publicKey)\n  var paddedMsg\n  if (padding === 4) {\n    paddedMsg = oaep(key, msg)\n  } else if (padding === 1) {\n    paddedMsg = pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    paddedMsg = new BN(msg)\n    if (paddedMsg.cmp(key.modulus) >= 0) {\n      throw new Error('data too long for modulus')\n    }\n  } else {\n    throw new Error('unknown padding')\n  }\n  if (reverse) {\n    return crt(paddedMsg, key)\n  } else {\n    return withPublic(paddedMsg, key)\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var mLen = msg.length\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  var hLen2 = 2 * hLen\n  if (mLen > k - hLen2 - 2) {\n    throw new Error('message too long')\n  }\n  var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n  var dblen = k - hLen - 1\n  var seed = randomBytes(hLen)\n  var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n  var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n  return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n  var mLen = msg.length\n  var k = key.modulus.byteLength()\n  if (mLen > k - 11) {\n    throw new Error('message too long')\n  }\n  var ps\n  if (reverse) {\n    ps = Buffer.alloc(k - mLen - 3, 0xff)\n  } else {\n    ps = nonZero(k - mLen - 3)\n  }\n  return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n  var out = Buffer.allocUnsafe(len)\n  var i = 0\n  var cache = randomBytes(len * 2)\n  var cur = 0\n  var num\n  while (i < len) {\n    if (cur === cache.length) {\n      cache = randomBytes(len * 2)\n      cur = 0\n    }\n    num = cache[cur++]\n    if (num) {\n      out[i++] = num\n    }\n  }\n  return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n  var padding\n  if (privateKey.padding) {\n    padding = privateKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n\n  var key = parseKeys(privateKey)\n  var k = key.modulus.byteLength()\n  if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n    throw new Error('decryption error')\n  }\n  var msg\n  if (reverse) {\n    msg = withPublic(new BN(enc), key)\n  } else {\n    msg = crt(enc, key)\n  }\n  var zBuffer = Buffer.alloc(k - msg.length)\n  msg = Buffer.concat([zBuffer, msg], k)\n  if (padding === 4) {\n    return oaep(key, msg)\n  } else if (padding === 1) {\n    return pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    return msg\n  } else {\n    throw new Error('unknown padding')\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  if (msg[0] !== 0) {\n    throw new Error('decryption error')\n  }\n  var maskedSeed = msg.slice(1, hLen + 1)\n  var maskedDb = msg.slice(hLen + 1)\n  var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n  var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n  if (compare(iHash, db.slice(0, hLen))) {\n    throw new Error('decryption error')\n  }\n  var i = hLen\n  while (db[i] === 0) {\n    i++\n  }\n  if (db[i++] !== 1) {\n    throw new Error('decryption error')\n  }\n  return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n  var p1 = msg.slice(0, 2)\n  var i = 2\n  var status = 0\n  while (msg[i++] !== 0) {\n    if (i >= msg.length) {\n      status++\n      break\n    }\n  }\n  var ps = msg.slice(2, i - 1)\n\n  if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n    status++\n  }\n  if (ps.length < 8) {\n    status++\n  }\n  if (status) {\n    throw new Error('decryption error')\n  }\n  return msg.slice(i)\n}\nfunction compare (a, b) {\n  a = Buffer.from(a)\n  b = Buffer.from(b)\n  var dif = 0\n  var len = a.length\n  if (a.length !== b.length) {\n    dif++\n    len = Math.min(a.length, b.length)\n  }\n  var i = -1\n  while (++i < len) {\n    dif += (a[i] ^ b[i])\n  }\n  return dif\n}\n","'use strict'\n\nfunction oldBrowser () {\n  throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n  if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n    throw new TypeError('offset must be a number')\n  }\n\n  if (offset > kMaxUint32 || offset < 0) {\n    throw new TypeError('offset must be a uint32')\n  }\n\n  if (offset > kBufferMaxLength || offset > length) {\n    throw new RangeError('offset out of range')\n  }\n}\n\nfunction assertSize (size, offset, length) {\n  if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n    throw new TypeError('size must be a number')\n  }\n\n  if (size > kMaxUint32 || size < 0) {\n    throw new TypeError('size must be a uint32')\n  }\n\n  if (size + offset > length || size > kBufferMaxLength) {\n    throw new RangeError('buffer too small')\n  }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n  exports.randomFill = randomFill\n  exports.randomFillSync = randomFillSync\n} else {\n  exports.randomFill = oldBrowser\n  exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  if (typeof offset === 'function') {\n    cb = offset\n    offset = 0\n    size = buf.length\n  } else if (typeof size === 'function') {\n    cb = size\n    size = buf.length - offset\n  } else if (typeof cb !== 'function') {\n    throw new TypeError('\"cb\" argument must be a function')\n  }\n  assertOffset(offset, buf.length)\n  assertSize(size, offset, buf.length)\n  return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n  if (process.browser) {\n    var ourBuf = buf.buffer\n    var uint = new Uint8Array(ourBuf, offset, size)\n    crypto.getRandomValues(uint)\n    if (cb) {\n      process.nextTick(function () {\n        cb(null, buf)\n      })\n      return\n    }\n    return buf\n  }\n  if (cb) {\n    randombytes(size, function (err, bytes) {\n      if (err) {\n        return cb(err)\n      }\n      bytes.copy(buf, offset)\n      cb(null, buf)\n    })\n    return\n  }\n  var bytes = randombytes(size)\n  bytes.copy(buf, offset)\n  return buf\n}\nfunction randomFillSync (buf, offset, size) {\n  if (typeof offset === 'undefined') {\n    offset = 0\n  }\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  assertOffset(offset, buf.length)\n\n  if (size === undefined) size = buf.length - offset\n\n  assertSize(size, offset, buf.length)\n\n  return actualFill(buf, offset, size)\n}\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n","'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n  return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n  if (isObject(thing))\n    return thing;\n  try { return JSON.parse(thing); }\n  catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n  var encodedHeader = jwsSig.split('.', 1)[0];\n  return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n  return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n  return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n  encoding = encoding || 'utf8';\n  var payload = jwsSig.split('.')[1];\n  return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n  return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n  if (!algorithm) {\n    var err = new Error(\"Missing algorithm parameter for jws.verify\");\n    err.code = \"MISSING_ALGORITHM\";\n    throw err;\n  }\n  jwsSig = toString(jwsSig);\n  var signature = signatureFromJWS(jwsSig);\n  var securedInput = securedInputFromJWS(jwsSig);\n  var algo = jwa(algorithm);\n  return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n  opts = opts || {};\n  jwsSig = toString(jwsSig);\n\n  if (!isValidJws(jwsSig))\n    return null;\n\n  var header = headerFromJWS(jwsSig);\n\n  if (!header)\n    return null;\n\n  var payload = payloadFromJWS(jwsSig);\n  if (header.typ === 'JWT' || opts.json)\n    payload = JSON.parse(payload, opts.encoding);\n\n  return {\n    header: header,\n    payload: payload,\n    signature: signatureFromJWS(jwsSig)\n  };\n}\n\nfunction VerifyStream(opts) {\n  opts = opts || {};\n  var secretOrKey = opts.secret||opts.publicKey||opts.key;\n  var secretStream = new DataStream(secretOrKey);\n  this.readable = true;\n  this.algorithm = opts.algorithm;\n  this.encoding = opts.encoding;\n  this.secret = this.publicKey = this.key = secretStream;\n  this.signature = new DataStream(opts.signature);\n  this.secret.once('close', function () {\n    if (!this.signature.writable && this.readable)\n      this.verify();\n  }.bind(this));\n\n  this.signature.once('close', function () {\n    if (!this.secret.writable && this.readable)\n      this.verify();\n  }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n  try {\n    var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n    var obj = jwsDecode(this.signature.buffer, this.encoding);\n    this.emit('done', valid, obj);\n    this.emit('data', valid);\n    this.emit('end');\n    this.readable = false;\n    return valid;\n  } catch (e) {\n    this.readable = false;\n    this.emit('error', e);\n    this.emit('close');\n  }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n","var JsonWebTokenError = require('./lib/JsonWebTokenError');\nvar NotBeforeError    = require('./lib/NotBeforeError');\nvar TokenExpiredError = require('./lib/TokenExpiredError');\nvar decode            = require('./decode');\nvar timespan          = require('./lib/timespan');\nvar PS_SUPPORTED      = require('./lib/psSupported');\nvar jws               = require('jws');\n\nvar PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512'];\nvar RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nvar HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n  PUB_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n  RSA_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n  if ((typeof options === 'function') && !callback) {\n    callback = options;\n    options = {};\n  }\n\n  if (!options) {\n    options = {};\n  }\n\n  //clone this object since we are going to mutate it.\n  options = Object.assign({}, options);\n\n  var done;\n\n  if (callback) {\n    done = callback;\n  } else {\n    done = function(err, data) {\n      if (err) throw err;\n      return data;\n    };\n  }\n\n  if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n    return done(new JsonWebTokenError('clockTimestamp must be a number'));\n  }\n\n  if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n    return done(new JsonWebTokenError('nonce must be a non-empty string'));\n  }\n\n  var clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n  if (!jwtString){\n    return done(new JsonWebTokenError('jwt must be provided'));\n  }\n\n  if (typeof jwtString !== 'string') {\n    return done(new JsonWebTokenError('jwt must be a string'));\n  }\n\n  var parts = jwtString.split('.');\n\n  if (parts.length !== 3){\n    return done(new JsonWebTokenError('jwt malformed'));\n  }\n\n  var decodedToken;\n\n  try {\n    decodedToken = decode(jwtString, { complete: true });\n  } catch(err) {\n    return done(err);\n  }\n\n  if (!decodedToken) {\n    return done(new JsonWebTokenError('invalid token'));\n  }\n\n  var header = decodedToken.header;\n  var getSecret;\n\n  if(typeof secretOrPublicKey === 'function') {\n    if(!callback) {\n      return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n    }\n\n    getSecret = secretOrPublicKey;\n  }\n  else {\n    getSecret = function(header, secretCallback) {\n      return secretCallback(null, secretOrPublicKey);\n    };\n  }\n\n  return getSecret(header, function(err, secretOrPublicKey) {\n    if(err) {\n      return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n    }\n\n    var hasSignature = parts[2].trim() !== '';\n\n    if (!hasSignature && secretOrPublicKey){\n      return done(new JsonWebTokenError('jwt signature is required'));\n    }\n\n    if (hasSignature && !secretOrPublicKey) {\n      return done(new JsonWebTokenError('secret or public key must be provided'));\n    }\n\n    if (!hasSignature && !options.algorithms) {\n      options.algorithms = ['none'];\n    }\n\n    if (!options.algorithms) {\n      options.algorithms = ~secretOrPublicKey.toString().indexOf('BEGIN CERTIFICATE') ||\n        ~secretOrPublicKey.toString().indexOf('BEGIN PUBLIC KEY') ? PUB_KEY_ALGS :\n        ~secretOrPublicKey.toString().indexOf('BEGIN RSA PUBLIC KEY') ? RSA_KEY_ALGS : HS_ALGS;\n\n    }\n\n    if (!~options.algorithms.indexOf(decodedToken.header.alg)) {\n      return done(new JsonWebTokenError('invalid algorithm'));\n    }\n\n    var valid;\n\n    try {\n      valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n    } catch (e) {\n      return done(e);\n    }\n\n    if (!valid) {\n      return done(new JsonWebTokenError('invalid signature'));\n    }\n\n    var payload = decodedToken.payload;\n\n    if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n      if (typeof payload.nbf !== 'number') {\n        return done(new JsonWebTokenError('invalid nbf value'));\n      }\n      if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n        return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n      }\n    }\n\n    if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n      if (typeof payload.exp !== 'number') {\n        return done(new JsonWebTokenError('invalid exp value'));\n      }\n      if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n        return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n      }\n    }\n\n    if (options.audience) {\n      var audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n      var target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n      var match = target.some(function (targetAudience) {\n        return audiences.some(function (audience) {\n          return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n        });\n      });\n\n      if (!match) {\n        return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n      }\n    }\n\n    if (options.issuer) {\n      var invalid_issuer =\n              (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||\n              (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);\n\n      if (invalid_issuer) {\n        return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n      }\n    }\n\n    if (options.subject) {\n      if (payload.sub !== options.subject) {\n        return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n      }\n    }\n\n    if (options.jwtid) {\n      if (payload.jti !== options.jwtid) {\n        return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n      }\n    }\n\n    if (options.nonce) {\n      if (payload.nonce !== options.nonce) {\n        return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n      }\n    }\n\n    if (options.maxAge) {\n      if (typeof payload.iat !== 'number') {\n        return done(new JsonWebTokenError('iat required when maxAge is specified'));\n      }\n\n      var maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n      if (typeof maxAgeTimestamp === 'undefined') {\n        return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n      }\n      if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n        return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n      }\n    }\n\n    if (options.complete === true) {\n      var signature = decodedToken.signature;\n\n      return done(null, {\n        header: header,\n        payload: payload,\n        signature: signature\n      });\n    }\n\n    return done(null, payload);\n  });\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n    process.env &&\n    process.env.NODE_DEBUG &&\n    /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n  debug = function () {\n    var args = Array.prototype.slice.call(arguments, 0)\n    args.unshift('SEMVER')\n    console.log.apply(console, args)\n  }\n} else {\n  debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n  /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar safeRe = exports.safeRe = []\nvar src = exports.src = []\nvar R = 0\n\nvar LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nvar safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nfunction makeSafeRe (value) {\n  for (var i = 0; i < safeRegexReplacements.length; i++) {\n    var token = safeRegexReplacements[i][0]\n    var max = safeRegexReplacements[i][1]\n    value = value\n      .split(token + '*').join(token + '{0,' + max + '}')\n      .split(token + '+').join(token + '{1,' + max + '}')\n  }\n  return value\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '\\\\d+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n                   '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n                   '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n                        '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n                        '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n                            '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n                                 '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n                  '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n                       '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n             '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n                src[PRERELEASE] + '?' +\n                src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n                 src[PRERELEASELOOSE] + '?' +\n                 src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n                   '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n                   '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n                   '(?:' + src[PRERELEASE] + ')?' +\n                   src[BUILD] + '?' +\n                   ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n                        '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n                        '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n                        '(?:' + src[PRERELEASELOOSE] + ')?' +\n                        src[BUILD] + '?' +\n                        ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n              '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n              '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n              '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n              '(?:$|[^\\\\d])'\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nsafeRe[TILDETRIM] = new RegExp(makeSafeRe(src[TILDETRIM]), 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nsafeRe[CARETTRIM] = new RegExp(makeSafeRe(src[CARETTRIM]), 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n                      '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nsafeRe[COMPARATORTRIM] = new RegExp(makeSafeRe(src[COMPARATORTRIM]), 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n                   '\\\\s+-\\\\s+' +\n                   '(' + src[XRANGEPLAIN] + ')' +\n                   '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n                        '\\\\s+-\\\\s+' +\n                        '(' + src[XRANGEPLAINLOOSE] + ')' +\n                        '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n  debug(i, src[i])\n  if (!re[i]) {\n    re[i] = new RegExp(src[i])\n\n    // Replace all greedy whitespace to prevent regex dos issues. These regex are\n    // used internally via the safeRe object since all inputs in this library get\n    // normalized first to trim and collapse all extra whitespace. The original\n    // regexes are exported for userland consumption and lower level usage. A\n    // future breaking change could export the safer regex only with a note that\n    // all input should have extra whitespace removed.\n    safeRe[i] = new RegExp(makeSafeRe(src[i]))\n  }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  if (version.length > MAX_LENGTH) {\n    return null\n  }\n\n  var r = options.loose ? safeRe[LOOSE] : safeRe[FULL]\n  if (!r.test(version)) {\n    return null\n  }\n\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    return null\n  }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n  var v = parse(version, options)\n  return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n  var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n  if (version instanceof SemVer) {\n    if (version.loose === options.loose) {\n      return version\n    } else {\n      version = version.version\n    }\n  } else if (typeof version !== 'string') {\n    throw new TypeError('Invalid Version: ' + version)\n  }\n\n  if (version.length > MAX_LENGTH) {\n    throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n  }\n\n  if (!(this instanceof SemVer)) {\n    return new SemVer(version, options)\n  }\n\n  debug('SemVer', version, options)\n  this.options = options\n  this.loose = !!options.loose\n\n  var m = version.trim().match(options.loose ? safeRe[LOOSE] : safeRe[FULL])\n\n  if (!m) {\n    throw new TypeError('Invalid Version: ' + version)\n  }\n\n  this.raw = version\n\n  // these are actually numbers\n  this.major = +m[1]\n  this.minor = +m[2]\n  this.patch = +m[3]\n\n  if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n    throw new TypeError('Invalid major version')\n  }\n\n  if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n    throw new TypeError('Invalid minor version')\n  }\n\n  if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n    throw new TypeError('Invalid patch version')\n  }\n\n  // numberify any prerelease numeric ids\n  if (!m[4]) {\n    this.prerelease = []\n  } else {\n    this.prerelease = m[4].split('.').map(function (id) {\n      if (/^[0-9]+$/.test(id)) {\n        var num = +id\n        if (num >= 0 && num < MAX_SAFE_INTEGER) {\n          return num\n        }\n      }\n      return id\n    })\n  }\n\n  this.build = m[5] ? m[5].split('.') : []\n  this.format()\n}\n\nSemVer.prototype.format = function () {\n  this.version = this.major + '.' + this.minor + '.' + this.patch\n  if (this.prerelease.length) {\n    this.version += '-' + this.prerelease.join('.')\n  }\n  return this.version\n}\n\nSemVer.prototype.toString = function () {\n  return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n  debug('SemVer.compare', this.version, this.options, other)\n  if (!(other instanceof SemVer)) {\n    other = new SemVer(other, this.options)\n  }\n\n  return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n  if (!(other instanceof SemVer)) {\n    other = new SemVer(other, this.options)\n  }\n\n  return compareIdentifiers(this.major, other.major) ||\n         compareIdentifiers(this.minor, other.minor) ||\n         compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n  if (!(other instanceof SemVer)) {\n    other = new SemVer(other, this.options)\n  }\n\n  // NOT having a prerelease is > having one\n  if (this.prerelease.length && !other.prerelease.length) {\n    return -1\n  } else if (!this.prerelease.length && other.prerelease.length) {\n    return 1\n  } else if (!this.prerelease.length && !other.prerelease.length) {\n    return 0\n  }\n\n  var i = 0\n  do {\n    var a = this.prerelease[i]\n    var b = other.prerelease[i]\n    debug('prerelease compare', i, a, b)\n    if (a === undefined && b === undefined) {\n      return 0\n    } else if (b === undefined) {\n      return 1\n    } else if (a === undefined) {\n      return -1\n    } else if (a === b) {\n      continue\n    } else {\n      return compareIdentifiers(a, b)\n    }\n  } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n  switch (release) {\n    case 'premajor':\n      this.prerelease.length = 0\n      this.patch = 0\n      this.minor = 0\n      this.major++\n      this.inc('pre', identifier)\n      break\n    case 'preminor':\n      this.prerelease.length = 0\n      this.patch = 0\n      this.minor++\n      this.inc('pre', identifier)\n      break\n    case 'prepatch':\n      // If this is already a prerelease, it will bump to the next version\n      // drop any prereleases that might already exist, since they are not\n      // relevant at this point.\n      this.prerelease.length = 0\n      this.inc('patch', identifier)\n      this.inc('pre', identifier)\n      break\n    // If the input is a non-prerelease version, this acts the same as\n    // prepatch.\n    case 'prerelease':\n      if (this.prerelease.length === 0) {\n        this.inc('patch', identifier)\n      }\n      this.inc('pre', identifier)\n      break\n\n    case 'major':\n      // If this is a pre-major version, bump up to the same major version.\n      // Otherwise increment major.\n      // 1.0.0-5 bumps to 1.0.0\n      // 1.1.0 bumps to 2.0.0\n      if (this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0) {\n        this.major++\n      }\n      this.minor = 0\n      this.patch = 0\n      this.prerelease = []\n      break\n    case 'minor':\n      // If this is a pre-minor version, bump up to the same minor version.\n      // Otherwise increment minor.\n      // 1.2.0-5 bumps to 1.2.0\n      // 1.2.1 bumps to 1.3.0\n      if (this.patch !== 0 || this.prerelease.length === 0) {\n        this.minor++\n      }\n      this.patch = 0\n      this.prerelease = []\n      break\n    case 'patch':\n      // If this is not a pre-release version, it will increment the patch.\n      // If it is a pre-release it will bump up to the same patch version.\n      // 1.2.0-5 patches to 1.2.0\n      // 1.2.0 patches to 1.2.1\n      if (this.prerelease.length === 0) {\n        this.patch++\n      }\n      this.prerelease = []\n      break\n    // This probably shouldn't be used publicly.\n    // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n    case 'pre':\n      if (this.prerelease.length === 0) {\n        this.prerelease = [0]\n      } else {\n        var i = this.prerelease.length\n        while (--i >= 0) {\n          if (typeof this.prerelease[i] === 'number') {\n            this.prerelease[i]++\n            i = -2\n          }\n        }\n        if (i === -1) {\n          // didn't increment anything\n          this.prerelease.push(0)\n        }\n      }\n      if (identifier) {\n        // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n        // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n        if (this.prerelease[0] === identifier) {\n          if (isNaN(this.prerelease[1])) {\n            this.prerelease = [identifier, 0]\n          }\n        } else {\n          this.prerelease = [identifier, 0]\n        }\n      }\n      break\n\n    default:\n      throw new Error('invalid increment argument: ' + release)\n  }\n  this.format()\n  this.raw = this.version\n  return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n  if (typeof (loose) === 'string') {\n    identifier = loose\n    loose = undefined\n  }\n\n  try {\n    return new SemVer(version, loose).inc(release, identifier).version\n  } catch (er) {\n    return null\n  }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n  if (eq(version1, version2)) {\n    return null\n  } else {\n    var v1 = parse(version1)\n    var v2 = parse(version2)\n    var prefix = ''\n    if (v1.prerelease.length || v2.prerelease.length) {\n      prefix = 'pre'\n      var defaultResult = 'prerelease'\n    }\n    for (var key in v1) {\n      if (key === 'major' || key === 'minor' || key === 'patch') {\n        if (v1[key] !== v2[key]) {\n          return prefix + key\n        }\n      }\n    }\n    return defaultResult // may be undefined\n  }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n  var anum = numeric.test(a)\n  var bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n  return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n  return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n  return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n  return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n  return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n  return compare(a, b, true)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n  return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n  return list.sort(function (a, b) {\n    return exports.compare(a, b, loose)\n  })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n  return list.sort(function (a, b) {\n    return exports.rcompare(a, b, loose)\n  })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n  return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n  return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n  return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n  return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n  return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n  return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object')\n        a = a.version\n      if (typeof b === 'object')\n        b = b.version\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object')\n        a = a.version\n      if (typeof b === 'object')\n        b = b.version\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError('Invalid operator: ' + op)\n  }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  if (comp instanceof Comparator) {\n    if (comp.loose === !!options.loose) {\n      return comp\n    } else {\n      comp = comp.value\n    }\n  }\n\n  if (!(this instanceof Comparator)) {\n    return new Comparator(comp, options)\n  }\n\n  comp = comp.trim().split(/\\s+/).join(' ')\n  debug('comparator', comp, options)\n  this.options = options\n  this.loose = !!options.loose\n  this.parse(comp)\n\n  if (this.semver === ANY) {\n    this.value = ''\n  } else {\n    this.value = this.operator + this.semver.version\n  }\n\n  debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n  var r = this.options.loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]\n  var m = comp.match(r)\n\n  if (!m) {\n    throw new TypeError('Invalid comparator: ' + comp)\n  }\n\n  this.operator = m[1]\n  if (this.operator === '=') {\n    this.operator = ''\n  }\n\n  // if it literally is just '>' or '' then allow anything.\n  if (!m[2]) {\n    this.semver = ANY\n  } else {\n    this.semver = new SemVer(m[2], this.options.loose)\n  }\n}\n\nComparator.prototype.toString = function () {\n  return this.value\n}\n\nComparator.prototype.test = function (version) {\n  debug('Comparator.test', version, this.options.loose)\n\n  if (this.semver === ANY) {\n    return true\n  }\n\n  if (typeof version === 'string') {\n    version = new SemVer(version, this.options)\n  }\n\n  return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n  if (!(comp instanceof Comparator)) {\n    throw new TypeError('a Comparator is required')\n  }\n\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  var rangeTmp\n\n  if (this.operator === '') {\n    rangeTmp = new Range(comp.value, options)\n    return satisfies(this.value, rangeTmp, options)\n  } else if (comp.operator === '') {\n    rangeTmp = new Range(this.value, options)\n    return satisfies(comp.semver, rangeTmp, options)\n  }\n\n  var sameDirectionIncreasing =\n    (this.operator === '>=' || this.operator === '>') &&\n    (comp.operator === '>=' || comp.operator === '>')\n  var sameDirectionDecreasing =\n    (this.operator === '<=' || this.operator === '<') &&\n    (comp.operator === '<=' || comp.operator === '<')\n  var sameSemVer = this.semver.version === comp.semver.version\n  var differentDirectionsInclusive =\n    (this.operator === '>=' || this.operator === '<=') &&\n    (comp.operator === '>=' || comp.operator === '<=')\n  var oppositeDirectionsLessThan =\n    cmp(this.semver, '<', comp.semver, options) &&\n    ((this.operator === '>=' || this.operator === '>') &&\n    (comp.operator === '<=' || comp.operator === '<'))\n  var oppositeDirectionsGreaterThan =\n    cmp(this.semver, '>', comp.semver, options) &&\n    ((this.operator === '<=' || this.operator === '<') &&\n    (comp.operator === '>=' || comp.operator === '>'))\n\n  return sameDirectionIncreasing || sameDirectionDecreasing ||\n    (sameSemVer && differentDirectionsInclusive) ||\n    oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  if (range instanceof Range) {\n    if (range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease) {\n      return range\n    } else {\n      return new Range(range.raw, options)\n    }\n  }\n\n  if (range instanceof Comparator) {\n    return new Range(range.value, options)\n  }\n\n  if (!(this instanceof Range)) {\n    return new Range(range, options)\n  }\n\n  this.options = options\n  this.loose = !!options.loose\n  this.includePrerelease = !!options.includePrerelease\n\n  // First reduce all whitespace as much as possible so we do not have to rely\n  // on potentially slow regexes like \\s*. This is then stored and used for\n  // future error messages as well.\n  this.raw = range\n    .trim()\n    .split(/\\s+/)\n    .join(' ')\n\n  // First, split based on boolean or ||\n  this.set = this.raw.split('||').map(function (range) {\n    return this.parseRange(range.trim())\n  }, this).filter(function (c) {\n    // throw out any that are not relevant for whatever reason\n    return c.length\n  })\n\n  if (!this.set.length) {\n    throw new TypeError('Invalid SemVer Range: ' + this.raw)\n  }\n\n  this.format()\n}\n\nRange.prototype.format = function () {\n  this.range = this.set.map(function (comps) {\n    return comps.join(' ').trim()\n  }).join('||').trim()\n  return this.range\n}\n\nRange.prototype.toString = function () {\n  return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n  var loose = this.options.loose\n  // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n  var hr = loose ? safeRe[HYPHENRANGELOOSE] : safeRe[HYPHENRANGE]\n  range = range.replace(hr, hyphenReplace)\n  debug('hyphen replace', range)\n  // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n  range = range.replace(safeRe[COMPARATORTRIM], comparatorTrimReplace)\n  debug('comparator trim', range, safeRe[COMPARATORTRIM])\n\n  // `~ 1.2.3` => `~1.2.3`\n  range = range.replace(safeRe[TILDETRIM], tildeTrimReplace)\n\n  // `^ 1.2.3` => `^1.2.3`\n  range = range.replace(safeRe[CARETTRIM], caretTrimReplace)\n\n  // At this point, the range is completely trimmed and\n  // ready to be split into comparators.\n  var compRe = loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]\n  var set = range.split(' ').map(function (comp) {\n    return parseComparator(comp, this.options)\n  }, this).join(' ').split(/\\s+/)\n  if (this.options.loose) {\n    // in loose mode, throw out any that are not valid comparators\n    set = set.filter(function (comp) {\n      return !!comp.match(compRe)\n    })\n  }\n  set = set.map(function (comp) {\n    return new Comparator(comp, this.options)\n  }, this)\n\n  return set\n}\n\nRange.prototype.intersects = function (range, options) {\n  if (!(range instanceof Range)) {\n    throw new TypeError('a Range is required')\n  }\n\n  return this.set.some(function (thisComparators) {\n    return thisComparators.every(function (thisComparator) {\n      return range.set.some(function (rangeComparators) {\n        return rangeComparators.every(function (rangeComparator) {\n          return thisComparator.intersects(rangeComparator, options)\n        })\n      })\n    })\n  })\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n  return new Range(range, options).set.map(function (comp) {\n    return comp.map(function (c) {\n      return c.value\n    }).join(' ').trim().split(' ')\n  })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nfunction isX (id) {\n  return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n  return comp.trim().split(/\\s+/).map(function (comp) {\n    return replaceTilde(comp, options)\n  }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n  var r = options.loose ? safeRe[TILDELOOSE] : safeRe[TILDE]\n  return comp.replace(r, function (_, M, m, p, pr) {\n    debug('tilde', comp, _, M, m, p, pr)\n    var ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0\n      ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n            ' <' + M + '.' + (+m + 1) + '.0'\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0\n      ret = '>=' + M + '.' + m + '.' + p +\n            ' <' + M + '.' + (+m + 1) + '.0'\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n  return comp.trim().split(/\\s+/).map(function (comp) {\n    return replaceCaret(comp, options)\n  }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n  debug('caret', comp, options)\n  var r = options.loose ? safeRe[CARETLOOSE] : safeRe[CARET]\n  return comp.replace(r, function (_, M, m, p, pr) {\n    debug('caret', comp, _, M, m, p, pr)\n    var ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n      } else {\n        ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n                ' <' + M + '.' + m + '.' + (+p + 1)\n        } else {\n          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n                ' <' + M + '.' + (+m + 1) + '.0'\n        }\n      } else {\n        ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n              ' <' + (+M + 1) + '.0.0'\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = '>=' + M + '.' + m + '.' + p +\n                ' <' + M + '.' + m + '.' + (+p + 1)\n        } else {\n          ret = '>=' + M + '.' + m + '.' + p +\n                ' <' + M + '.' + (+m + 1) + '.0'\n        }\n      } else {\n        ret = '>=' + M + '.' + m + '.' + p +\n              ' <' + (+M + 1) + '.0.0'\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nfunction replaceXRanges (comp, options) {\n  debug('replaceXRanges', comp, options)\n  return comp.split(/\\s+/).map(function (comp) {\n    return replaceXRange(comp, options)\n  }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n  comp = comp.trim()\n  var r = options.loose ? safeRe[XRANGELOOSE] : safeRe[XRANGE]\n  return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    var xM = isX(M)\n    var xm = xM || isX(m)\n    var xp = xm || isX(p)\n    var anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        // >1.2.3 => >= 1.2.4\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      ret = gtlt + M + '.' + m + '.' + p\n    } else if (xm) {\n      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n    } else if (xp) {\n      ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp.trim().replace(safeRe[STAR], '')\n}\n\n// This function is passed to string.replace(safeRe[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr, tb) {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = '>=' + fM + '.0.0'\n  } else if (isX(fp)) {\n    from = '>=' + fM + '.' + fm + '.0'\n  } else {\n    from = '>=' + from\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = '<' + (+tM + 1) + '.0.0'\n  } else if (isX(tp)) {\n    to = '<' + tM + '.' + (+tm + 1) + '.0'\n  } else if (tpr) {\n    to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n  } else {\n    to = '<=' + to\n  }\n\n  return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n  if (!version) {\n    return false\n  }\n\n  if (typeof version === 'string') {\n    version = new SemVer(version, this.options)\n  }\n\n  for (var i = 0; i < this.set.length; i++) {\n    if (testSet(this.set[i], version, this.options)) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction testSet (set, version, options) {\n  for (var i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        var allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n  var max = null\n  var maxSV = null\n  try {\n    var rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach(function (v) {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n  var min = null\n  var minSV = null\n  try {\n    var rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach(function (v) {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n  range = new Range(range, loose)\n\n  var minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (var i = 0; i < range.set.length; ++i) {\n    var comparators = range.set[i]\n\n    comparators.forEach(function (comparator) {\n      // Clone to avoid manipulating the comparator's semver object.\n      var compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!minver || gt(minver, compver)) {\n            minver = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error('Unexpected operation: ' + comparator.operator)\n      }\n    })\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n  return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n  return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  var gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisifes the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (var i = 0; i < range.set.length; ++i) {\n    var comparators = range.set[i]\n\n    var high = null\n    var low = null\n\n    comparators.forEach(function (comparator) {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n  var parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version) {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  var match = version.match(safeRe[COERCE])\n\n  if (match == null) {\n    return null\n  }\n\n  return parse(match[1] +\n    '.' + (match[2] || '0') +\n    '.' + (match[3] || '0'))\n}\n","var timespan = require('./lib/timespan');\nvar PS_SUPPORTED = require('./lib/psSupported');\nvar jws = require('jws');\nvar includes = require('lodash.includes');\nvar isBoolean = require('lodash.isboolean');\nvar isInteger = require('lodash.isinteger');\nvar isNumber = require('lodash.isnumber');\nvar isPlainObject = require('lodash.isplainobject');\nvar isString = require('lodash.isstring');\nvar once = require('lodash.once');\n\nvar SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none']\nif (PS_SUPPORTED) {\n  SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nvar sign_options_schema = {\n  expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n  notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n  audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n  algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n  header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n  encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n  issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n  subject: { isValid: isString, message: '\"subject\" must be a string' },\n  jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n  noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n  keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n  mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' }\n};\n\nvar registered_claims_schema = {\n  iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n  exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n  nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n  if (!isPlainObject(object)) {\n    throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n  }\n  Object.keys(object)\n    .forEach(function(key) {\n      var validator = schema[key];\n      if (!validator) {\n        if (!allowUnknown) {\n          throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n        }\n        return;\n      }\n      if (!validator.isValid(object[key])) {\n        throw new Error(validator.message);\n      }\n    });\n}\n\nfunction validateOptions(options) {\n  return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n  return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nvar options_to_payload = {\n  'audience': 'aud',\n  'issuer': 'iss',\n  'subject': 'sub',\n  'jwtid': 'jti'\n};\n\nvar options_for_objects = [\n  'expiresIn',\n  'notBefore',\n  'noTimestamp',\n  'audience',\n  'issuer',\n  'subject',\n  'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n  if (typeof options === 'function') {\n    callback = options;\n    options = {};\n  } else {\n    options = options || {};\n  }\n\n  var isObjectPayload = typeof payload === 'object' &&\n                        !Buffer.isBuffer(payload);\n\n  var header = Object.assign({\n    alg: options.algorithm || 'HS256',\n    typ: isObjectPayload ? 'JWT' : undefined,\n    kid: options.keyid\n  }, options.header);\n\n  function failure(err) {\n    if (callback) {\n      return callback(err);\n    }\n    throw err;\n  }\n\n  if (!secretOrPrivateKey && options.algorithm !== 'none') {\n    return failure(new Error('secretOrPrivateKey must have a value'));\n  }\n\n  if (typeof payload === 'undefined') {\n    return failure(new Error('payload is required'));\n  } else if (isObjectPayload) {\n    try {\n      validatePayload(payload);\n    }\n    catch (error) {\n      return failure(error);\n    }\n    if (!options.mutatePayload) {\n      payload = Object.assign({},payload);\n    }\n  } else {\n    var invalid_options = options_for_objects.filter(function (opt) {\n      return typeof options[opt] !== 'undefined';\n    });\n\n    if (invalid_options.length > 0) {\n      return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n    }\n  }\n\n  if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n    return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n  }\n\n  if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n    return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n  }\n\n  try {\n    validateOptions(options);\n  }\n  catch (error) {\n    return failure(error);\n  }\n\n  var timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n  if (options.noTimestamp) {\n    delete payload.iat;\n  } else if (isObjectPayload) {\n    payload.iat = timestamp;\n  }\n\n  if (typeof options.notBefore !== 'undefined') {\n    try {\n      payload.nbf = timespan(options.notBefore, timestamp);\n    }\n    catch (err) {\n      return failure(err);\n    }\n    if (typeof payload.nbf === 'undefined') {\n      return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n    }\n  }\n\n  if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n    try {\n      payload.exp = timespan(options.expiresIn, timestamp);\n    }\n    catch (err) {\n      return failure(err);\n    }\n    if (typeof payload.exp === 'undefined') {\n      return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n    }\n  }\n\n  Object.keys(options_to_payload).forEach(function (key) {\n    var claim = options_to_payload[key];\n    if (typeof options[key] !== 'undefined') {\n      if (typeof payload[claim] !== 'undefined') {\n        return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n      }\n      payload[claim] = options[key];\n    }\n  });\n\n  var encoding = options.encoding || 'utf8';\n\n  if (typeof callback === 'function') {\n    callback = callback && once(callback);\n\n    jws.createSign({\n      header: header,\n      privateKey: secretOrPrivateKey,\n      payload: payload,\n      encoding: encoding\n    }).once('error', callback)\n      .once('done', function (signature) {\n        callback(null, signature);\n      });\n  } else {\n    return jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n  }\n};\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n  collection = isArrayLike(collection) ? collection : values(collection);\n  fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n  var length = collection.length;\n  if (fromIndex < 0) {\n    fromIndex = nativeMax(length + fromIndex, 0);\n  }\n  return isString(collection)\n    ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n    : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;\n","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n  return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = isInteger;\n","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) ||\n      objectToString.call(value) != objectTag || isHostObject(value)) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return (typeof Ctor == 'function' &&\n    Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n  var result;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  n = toInteger(n);\n  return function() {\n    if (--n > 0) {\n      result = func.apply(this, arguments);\n    }\n    if (n <= 1) {\n      func = undefined;\n    }\n    return result;\n  };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n  return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.ReduxToastr = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _ToastrBox = _interopRequireDefault(require(\"./ToastrBox\"));\n\nvar _ToastrConfirm = _interopRequireDefault(require(\"./ToastrConfirm\"));\n\nvar actions = _interopRequireWildcard(require(\"./actions\"));\n\nvar _toastrEmitter = require(\"./toastrEmitter\");\n\nvar _utils = require(\"./utils\");\n\nvar _constants = require(\"./constants\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ReduxToastr = /*#__PURE__*/function (_React$Component) {\n  _inherits(ReduxToastr, _React$Component);\n\n  var _super = _createSuper(ReduxToastr);\n\n  function ReduxToastr(props) {\n    var _this;\n\n    _classCallCheck(this, ReduxToastr);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"toastrFired\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"toastrPositions\", ['top-left', 'top-right', 'top-center', 'bottom-left', 'bottom-right', 'bottom-center']);\n\n    (0, _utils.updateConfig)(props);\n    return _this;\n  }\n\n  _createClass(ReduxToastr, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props = this.props,\n          add = _this$props.add,\n          showConfirm = _this$props.showConfirm,\n          clean = _this$props.clean,\n          removeByType = _this$props.removeByType,\n          remove = _this$props.remove;\n\n      _toastrEmitter.EE.on('toastr/confirm', showConfirm);\n\n      _toastrEmitter.EE.on('add/toastr', add);\n\n      _toastrEmitter.EE.on('clean/toastr', clean);\n\n      _toastrEmitter.EE.on('removeByType/toastr', removeByType);\n\n      _toastrEmitter.EE.on('remove/toastr', remove);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      _toastrEmitter.EE.removeListener('toastr/confirm');\n\n      _toastrEmitter.EE.removeListener('add/toastr');\n\n      _toastrEmitter.EE.removeListener('clean/toastr');\n\n      _toastrEmitter.EE.removeListener('removeByType/toastr');\n\n      _toastrEmitter.EE.removeListener('remove/toastr');\n\n      this.toastrFired = {};\n    }\n  }, {\n    key: \"_addToMemory\",\n    value: function _addToMemory(id) {\n      this.toastrFired[id] = true;\n    }\n  }, {\n    key: \"_renderToastrForPosition\",\n    value: function _renderToastrForPosition(position) {\n      var _this2 = this;\n\n      var toastrs = this.props.toastr.toastrs;\n\n      if (toastrs) {\n        return toastrs.filter(function (item) {\n          return item.position === position;\n        }).map(function (item) {\n          var mergedItem = _objectSpread(_objectSpread({}, item), {}, {\n            options: _objectSpread({\n              progressBar: _this2.props.progressBar,\n              transitionIn: _this2.props.transitionIn,\n              transitionOut: _this2.props.transitionOut,\n              closeOnToastrClick: _this2.props.closeOnToastrClick\n            }, item.options)\n          });\n\n          return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n            key: item.id\n          }, /*#__PURE__*/_react[\"default\"].createElement(_ToastrBox[\"default\"], _extends({\n            inMemory: _this2.toastrFired,\n            addToMemory: function addToMemory() {\n              return _this2._addToMemory(item.id);\n            },\n            item: mergedItem\n          }, _this2.props)), item.options && item.options.attention && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n            onClick: function onClick() {\n              if (typeof item.options.onAttentionClick === 'function') {\n                item.options.onAttentionClick(item.id);\n              } else {\n                _this2.props.remove(item.id);\n              }\n            },\n            className: \"toastr-attention\"\n          }));\n        });\n      }\n    }\n  }, {\n    key: \"_renderToastrs\",\n    value: function _renderToastrs() {\n      var _this3 = this;\n\n      var toastr = this.props.toastr;\n      var width = toastr.toastrs && toastr.toastrs[0] && toastr.toastrs[0].options && toastr.toastrs[0].options.width;\n      var style = width ? {\n        width: width\n      } : {};\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", null, this.toastrPositions.map(function (position) {\n        return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n          key: position,\n          className: position,\n          style: style\n        }, _this3._renderToastrForPosition(position));\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          className = _this$props2.className,\n          toastr = _this$props2.toastr;\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: (0, _classnames[\"default\"])('redux-toastr', className),\n        \"aria-live\": \"assertive\"\n      }, toastr.confirm && /*#__PURE__*/_react[\"default\"].createElement(_ToastrConfirm[\"default\"], _extends({\n        confirm: toastr.confirm\n      }, this.props)), this._renderToastrs());\n    }\n  }]);\n\n  return ReduxToastr;\n}(_react[\"default\"].Component);\n\nexports.ReduxToastr = ReduxToastr;\n\n_defineProperty(ReduxToastr, \"displayName\", 'ReduxToastr');\n\n_defineProperty(ReduxToastr, \"propTypes\", {\n  toastr: _propTypes[\"default\"].object,\n  position: _propTypes[\"default\"].string,\n  newestOnTop: _propTypes[\"default\"].bool,\n  timeOut: _propTypes[\"default\"].number,\n  confirmOptions: _propTypes[\"default\"].object,\n  progressBar: _propTypes[\"default\"].bool,\n  transitionIn: _propTypes[\"default\"].oneOf(_constants.TRANSITIONS[\"in\"]),\n  transitionOut: _propTypes[\"default\"].oneOf(_constants.TRANSITIONS.out),\n  preventDuplicates: _propTypes[\"default\"].bool,\n  closeOnToastrClick: _propTypes[\"default\"].bool\n});\n\n_defineProperty(ReduxToastr, \"defaultProps\", {\n  position: 'top-right',\n  newestOnTop: true,\n  timeOut: 5000,\n  progressBar: false,\n  transitionIn: _constants.TRANSITIONS[\"in\"][0],\n  transitionOut: _constants.TRANSITIONS.out[0],\n  preventDuplicates: false,\n  closeOnToastrClick: false,\n  getState: function getState(state) {\n    return state.toastr;\n  },\n  confirmOptions: {\n    okText: 'ok',\n    cancelText: 'cancel'\n  }\n});\n\nvar _default = (0, _reactRedux.connect)(function (state, ownProps) {\n  return {\n    toastr: ownProps.getState ? ownProps.getState(state) : state.toastr\n  };\n}, actions)(ReduxToastr);\n\nexports[\"default\"] = _default;","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _ProgressBar = _interopRequireDefault(require(\"./ProgressBar\"));\n\nvar _Icon = _interopRequireDefault(require(\"./Icon\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ToastrBox = /*#__PURE__*/function (_React$Component) {\n  _inherits(ToastrBox, _React$Component);\n\n  var _super = _createSuper(ToastrBox);\n\n  function ToastrBox(props) {\n    var _this;\n\n    _classCallCheck(this, ToastrBox);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePressEnterOrSpaceKeyToastr\", function (e) {\n      if (e.key === ' ' || e.key === 'Enter') {\n        _this.handleClickToastr(e);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePressEnterOrSpaceKeyCloseButton\", function (e) {\n      if (e.key === ' ' || e.key === 'Enter') {\n        _this.handleClickCloseButton(e);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleClickToastr\", function () {\n      var _this$props$item$opti = _this.props.item.options,\n          onToastrClick = _this$props$item$opti.onToastrClick,\n          closeOnToastrClick = _this$props$item$opti.closeOnToastrClick;\n      _this.ignoreIsHiding = true;\n\n      if (onToastrClick) {\n        onToastrClick();\n      }\n\n      if (closeOnToastrClick) {\n        _this._setShouldClose(true);\n\n        _this._removeToastr();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleClickCloseButton\", function (e) {\n      var onCloseButtonClick = _this.props.item.options.onCloseButtonClick;\n      e.stopPropagation();\n      _this.ignoreIsHiding = true;\n\n      if (onCloseButtonClick) {\n        onCloseButtonClick();\n      }\n\n      _this._setShouldClose(true);\n\n      _this._removeToastr();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mouseEnter\", function () {\n      var removeOnHover = _this.props.item.options.removeOnHover;\n      if (!removeOnHover && _this.intervalId) return;\n      clearTimeout(_this.intervalId);\n\n      _this._setIntervalId(null);\n\n      _this._setIsHiding(false);\n\n      var progressBar = _this.props.item.options.progressBar;\n\n      var timeOut = _this._getItemTimeOut();\n\n      if (timeOut && progressBar) {\n        _this.setState({\n          progressBar: null\n        });\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mouseLeave\", function () {\n      var _this$props$item$opti2 = _this.props.item.options,\n          removeOnHover = _this$props$item$opti2.removeOnHover,\n          removeOnHoverTimeOut = _this$props$item$opti2.removeOnHoverTimeOut;\n\n      if (!_this.isHiding && (removeOnHover || _this.shouldClose)) {\n        var interval = removeOnHover === true ? removeOnHoverTimeOut || 1000 : removeOnHover;\n\n        _this._setIntervalId(setTimeout(_this._removeToastr, interval));\n\n        var progressBar = _this.props.item.options.progressBar;\n\n        var timeOut = _this._getItemTimeOut();\n\n        if (timeOut && progressBar) {\n          _this.setState({\n            progressBar: {\n              duration: interval\n            }\n          });\n        }\n      }\n    });\n\n    var _props$item$options = props.item.options,\n        transitionIn = _props$item$options.transitionIn,\n        transitionOut = _props$item$options.transitionOut;\n    _this.isHiding = false;\n    _this.shouldClose = false;\n    _this.intervalId = null;\n    _this.ignoreIsHiding = false;\n    _this.transitionIn = transitionIn || _this.props.transitionIn;\n    _this.transitionOut = transitionOut || _this.props.transitionOut; // an identifier to facilitate aria labelling for a11y for multiple instances of the component family in the DOM\n\n    _this.id = props.item.a11yId || Math.floor(Math.random() * 9999);\n    _this.state = {\n      progressBar: null\n    };\n    (0, _utils._bind)(['renderSubComponent', 'renderIcon', 'renderToastr', 'renderCloseButton', 'renderMessage', '_onAnimationComplete', '_removeToastr', '_setTransition', '_clearTransition', '_setIntervalId', '_setIsHiding', '_setShouldClose'], _assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(ToastrBox, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var item = this.props.item;\n      if (this.props.inMemory[item.id]) return;\n\n      var timeOut = this._getItemTimeOut();\n\n      if (timeOut) {\n        this._setIntervalId(setTimeout(this._removeToastr, timeOut));\n      }\n\n      if (timeOut && item.options.progressBar) {\n        this.setState({\n          progressBar: {\n            duration: this._getItemTimeOut()\n          }\n        });\n      }\n\n      this._setTransition();\n\n      (0, _utils.onCSSTransitionEnd)(this.toastrBoxElement, this._onAnimationComplete);\n      this.props.addToMemory(item.id);\n\n      if (this.closeButton !== undefined && !item.options.disableCloseButtonFocus) {\n        this.closeButton.focus();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.intervalId) {\n        clearTimeout(this.intervalId);\n      } // when toast unloads the toast close button automatically focuses on the next toast control (if any)\n      // need to add a micro delay to allow the DOM to recycle\n\n\n      setTimeout(function () {\n        var toastrControls = document.querySelectorAll('.toastr-control:not(.disable-auto-focus)');\n\n        if (toastrControls.length) {\n          toastrControls[0].focus();\n        }\n      }, 50);\n    }\n  }, {\n    key: \"isToastrClickable\",\n    get: function get() {\n      var _this$props$item$opti3 = this.props.item.options,\n          onToastrClick = _this$props$item$opti3.onToastrClick,\n          closeOnToastrClick = _this$props$item$opti3.closeOnToastrClick;\n      var hasOnToastrClick = !!onToastrClick;\n      return hasOnToastrClick || closeOnToastrClick;\n    }\n  }, {\n    key: \"renderSubComponent\",\n    value: function renderSubComponent() {\n      var _this2 = this;\n\n      var _this$props$item = this.props.item,\n          id = _this$props$item.id,\n          options = _this$props$item.options;\n\n      var removeCurrentToastrFunc = function removeCurrentToastrFunc() {\n        return _this2.props.remove(id);\n      };\n\n      if ( /*#__PURE__*/(0, _react.isValidElement)(options.component)) {\n        return /*#__PURE__*/_react[\"default\"].cloneElement(options.component, {\n          remove: removeCurrentToastrFunc\n        });\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(options.component, {\n        remove: removeCurrentToastrFunc\n      });\n    }\n  }, {\n    key: \"renderIcon\",\n    value: function renderIcon() {\n      var _this$props$item2 = this.props.item,\n          type = _this$props$item2.type,\n          options = _this$props$item2.options;\n\n      if ( /*#__PURE__*/(0, _react.isValidElement)(options.icon)) {\n        return /*#__PURE__*/_react[\"default\"].cloneElement(options.icon);\n      }\n\n      var iconName = type === 'light' ? options.icon : type;\n      return /*#__PURE__*/_react[\"default\"].createElement(_Icon[\"default\"], {\n        name: iconName\n      });\n    }\n  }, {\n    key: \"renderCloseButton\",\n    value: function renderCloseButton() {\n      var _this3 = this;\n\n      var closeButtonAttributes = {\n        tabIndex: 0,\n        role: 'button',\n        onKeyPress: this.handlePressEnterOrSpaceKeyCloseButton\n      };\n\n      if (this.isToastrClickable) {\n        closeButtonAttributes = {};\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        className: (0, _classnames[\"default\"])('close-toastr', 'toastr-control', {\n          'disable-auto-focus': this.props.item.options.disableCloseButtonFocus\n        }),\n        \"aria-label\": \"toast\",\n        onClick: this.handleClickCloseButton,\n        ref: function ref(_ref) {\n          return _this3.closeButton = _ref;\n        }\n      }, closeButtonAttributes), /*#__PURE__*/_react[\"default\"].createElement(\"span\", null, \"\\u2715\"));\n    }\n  }, {\n    key: \"renderToastr\",\n    value: function renderToastr() {\n      var _this$props$item3 = this.props.item,\n          type = _this$props$item3.type,\n          options = _this$props$item3.options,\n          message = _this$props$item3.message,\n          title = _this$props$item3.title;\n      var ariaAttributes = {};\n\n      if (title) {\n        ariaAttributes['aria-labelledby'] = \"dialogTitle-\".concat(this.id);\n      }\n\n      if (message) {\n        ariaAttributes['aria-describedby'] = \"dialogDesc-\".concat(this.id);\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", null, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-left-container\"\n      }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-holder\"\n      }, this.renderIcon())), options.status && type === 'light' && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: (0, _classnames[\"default\"])('toastr-status', options.status)\n      }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        className: \"rrt-middle-container\",\n        role: \"alertdialog\"\n      }, ariaAttributes), title && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        id: \"dialogTitle-\".concat(this.id),\n        className: \"rrt-title\"\n      }, title), message && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        id: \"dialogDesc-\".concat(this.id),\n        className: \"rrt-text\"\n      }, message), options.component && this.renderSubComponent()), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-right-container\"\n      }, options.showCloseButton && this.renderCloseButton()), this.state.progressBar ? /*#__PURE__*/_react[\"default\"].createElement(_ProgressBar[\"default\"], this.state.progressBar) : null);\n    }\n  }, {\n    key: \"renderMessage\",\n    value: function renderMessage() {\n      var _this$props$item4 = this.props.item,\n          title = _this$props$item4.title,\n          message = _this$props$item4.message,\n          options = _this$props$item4.options;\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", null, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-title\"\n      }, title, this.renderCloseButton()), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-text\"\n      }, message, options.component && this.renderSubComponent()));\n    }\n  }, {\n    key: \"toastr\",\n    value: function toastr() {\n      if (this.props.item.type === 'message') {\n        return this.renderMessage();\n      }\n\n      return this.renderToastr();\n    }\n  }, {\n    key: \"_getItemTimeOut\",\n    value: function _getItemTimeOut() {\n      var item = this.props.item;\n      var timeOut = item.options.timeOut;\n\n      if (typeof timeOut === 'undefined') {\n        timeOut = this.props.timeOut;\n      }\n\n      return timeOut;\n    }\n  }, {\n    key: \"_onAnimationComplete\",\n    value: function _onAnimationComplete() {\n      var _this$props = this.props,\n          remove = _this$props.remove,\n          item = _this$props.item;\n      var options = item.options,\n          id = item.id;\n\n      if (this.isHiding || this.ignoreIsHiding) {\n        this._setIsHiding(false);\n\n        this.ignoreIsHiding = false;\n        remove(id);\n\n        if (options.onHideComplete) {\n          options.onHideComplete();\n        }\n      } else if (!this.isHiding && options.onShowComplete) {\n        options.onShowComplete();\n      }\n    }\n  }, {\n    key: \"_removeToastr\",\n    value: function _removeToastr() {\n      if (!this.isHiding) {\n        this._setIsHiding(true);\n\n        this._setTransition(true, false);\n\n        (0, _utils.onCSSTransitionEnd)(this.toastrBoxElement, this._onAnimationComplete);\n      }\n    }\n  }, {\n    key: \"_setTransition\",\n    value: function _setTransition(hide) {\n      var _this4 = this;\n\n      var autoRemove = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var animationType = hide ? this.transitionOut : this.transitionIn;\n\n      var onEndListener = function onEndListener(e) {\n        if (e && e.target == _this4.toastrBoxElement) {\n          _this4.toastrBoxElement.classList.remove(animationType);\n        }\n      };\n\n      if (this.toastrBoxElement) {\n        if (autoRemove) {\n          (0, _utils.onCSSTransitionEnd)(this.toastrBoxElement, onEndListener);\n        }\n\n        this.toastrBoxElement.classList.add(animationType);\n      }\n    }\n  }, {\n    key: \"_clearTransition\",\n    value: function _clearTransition() {\n      if (this.toastrBoxElement) {\n        this.toastrBoxElement.classList.remove(this.transitionIn, this.transitionOut);\n      }\n    }\n  }, {\n    key: \"_setIntervalId\",\n    value: function _setIntervalId(intervalId) {\n      this.intervalId = intervalId;\n    }\n  }, {\n    key: \"_setIsHiding\",\n    value: function _setIsHiding(val) {\n      this.isHiding = val;\n    }\n  }, {\n    key: \"_setShouldClose\",\n    value: function _setShouldClose(val) {\n      this.shouldClose = val;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this5 = this;\n\n      var _this$props$item5 = this.props.item,\n          options = _this$props$item5.options,\n          type = _this$props$item5.type;\n      var toastrClickAttributes = {};\n\n      if (this.isToastrClickable) {\n        toastrClickAttributes.role = 'button';\n        toastrClickAttributes.tabIndex = 0;\n        toastrClickAttributes.onClick = this.handleClickToastr;\n        toastrClickAttributes.onKeyPress = this.handlePressEnterOrSpaceKeyToastr;\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        ref: function ref(_ref2) {\n          return _this5.toastrBoxElement = _ref2;\n        },\n        className: (0, _classnames[\"default\"])('toastr', 'animated', 'rrt-' + type, options.className),\n        onMouseEnter: this.mouseEnter,\n        onMouseLeave: this.mouseLeave\n      }, toastrClickAttributes), this.toastr());\n    }\n  }]);\n\n  return ToastrBox;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = ToastrBox;\n\n_defineProperty(ToastrBox, \"displayName\", 'ToastrBox');\n\n_defineProperty(ToastrBox, \"propTypes\", {\n  item: _propTypes[\"default\"].shape({\n    options: _propTypes[\"default\"].shape({\n      transitionIn: _propTypes[\"default\"].string,\n      transitionOut: _propTypes[\"default\"].string\n    })\n  })\n});","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ProgressBar = /*#__PURE__*/function (_React$Component) {\n  _inherits(ProgressBar, _React$Component);\n\n  var _super = _createSuper(ProgressBar);\n\n  function ProgressBar(props) {\n    var _this;\n\n    _classCallCheck(this, ProgressBar);\n\n    _this = _super.call(this, props);\n    _this.state = {\n      percent: 100\n    };\n    _this.intervalId = null;\n    return _this;\n  }\n\n  _createClass(ProgressBar, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      var distance = 100 / (this.props.duration / 10);\n      this.intervalId = setInterval(function () {\n        var percent = _this2.state.percent - distance;\n\n        _this2.setState({\n          percent: percent > 0 ? percent : 0\n        });\n      }, 10);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (this.state.percent <= 0 && this.intervalId) {\n        clearTimeout(this.intervalId);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.intervalId) {\n        clearTimeout(this.intervalId);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var percent = this.state.percent;\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-progress-container\"\n      }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-progressbar\",\n        style: {\n          width: \"\".concat(percent, \"%\")\n        }\n      }));\n    }\n  }]);\n\n  return ProgressBar;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = ProgressBar;\n\n_defineProperty(ProgressBar, \"displayName\", 'ProgressBar');\n\n_defineProperty(ProgressBar, \"propTypes\", {\n  duration: _propTypes[\"default\"].number.isRequired\n});","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _icons = _interopRequireDefault(require(\"./icons\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Icon = /*#__PURE__*/function (_React$Component) {\n  _inherits(Icon, _React$Component);\n\n  var _super = _createSuper(Icon);\n\n  function Icon() {\n    _classCallCheck(this, Icon);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Icon, [{\n    key: \"render\",\n    value: function render() {\n      var size = this.props.size;\n      var styles = {\n        width: size,\n        height: size\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n        className: (0, _classnames[\"default\"])(this.props.className, 'toastr-icon'),\n        xmlns: \"http://www.w3.org/2000/svg\",\n        preserveAspectRatio: \"xMidYMid meet\",\n        viewBox: \"0 0 \".concat(this.props.size, \" \").concat(this.props.size),\n        style: styles\n      }, (0, _icons[\"default\"])(this.props.name));\n    }\n  }]);\n\n  return Icon;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Icon;\n\n_defineProperty(Icon, \"displayName\", 'ReduxToastrIcon');\n\n_defineProperty(Icon, \"defaultProps\", {\n  size: 32\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = _default;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _default(name) {\n  switch (name) {\n    case 'success':\n      return /*#__PURE__*/_react[\"default\"].createElement(\"g\", null, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M27 4l-15 15-7-7-5 5 12 12 20-20z\"\n      }));\n\n    case 'info':\n      return /*#__PURE__*/_react[\"default\"].createElement(\"g\", null, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M14 9.5c0-0.825 0.675-1.5 1.5-1.5h1c0.825 0 1.5 0.675 1.5 1.5v1c0 0.825-0.675 1.5-1.5 1.5h-1c-0.825 0-1.5-0.675-1.5-1.5v-1z\"\n      }), /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M20 24h-8v-2h2v-6h-2v-2h6v8h2z\"\n      }), /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M16 0c-8.837 0-16 7.163-16 16s7.163 16 16 16 16-7.163 16-16-7.163-16-16-16zM16 29c-7.18 0-13-5.82-13-13s5.82-13 13-13 13 5.82 13 13-5.82 13-13 13z\"\n      }));\n\n    case 'warning':\n      return /*#__PURE__*/_react[\"default\"].createElement(\"g\", null, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M16 2.899l13.409 26.726h-26.819l13.409-26.726zM16 0c-0.69 0-1.379 0.465-1.903 1.395l-13.659 27.222c-1.046 1.86-0.156 3.383 1.978 3.383h27.166c2.134 0 3.025-1.522 1.978-3.383h0l-13.659-27.222c-0.523-0.93-1.213-1.395-1.903-1.395v0z\"\n      }), /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M18 26c0 1.105-0.895 2-2 2s-2-0.895-2-2c0-1.105 0.895-2 2-2s2 0.895 2 2z\"\n      }), /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M16 22c-1.105 0-2-0.895-2-2v-6c0-1.105 0.895-2 2-2s2 0.895 2 2v6c0 1.105-0.895 2-2 2z\"\n      }));\n\n    case 'error':\n      return /*#__PURE__*/_react[\"default\"].createElement(\"g\", null, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n        d: \"M12,0C5.373,0,0,5.373,0,12s5.373,12,12,12s12-5.373,12-12S18.627,0,12,0z M12,19.66 c-0.938,0-1.58-0.723-1.58-1.66c0-0.964,0.669-1.66,1.58-1.66c0.963,0,1.58,0.696,1.58,1.66C13.58,18.938,12.963,19.66,12,19.66z M12.622,13.321c-0.239,0.815-0.992,0.829-1.243,0c-0.289-0.956-1.316-4.585-1.316-6.942c0-3.11,3.891-3.125,3.891,0 C13.953,8.75,12.871,12.473,12.622,13.321z\"\n      }));\n\n    default:\n      return null;\n  }\n}","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = require(\"./utils\");\n\nvar _Button = _interopRequireDefault(require(\"./Button\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ENTER = 13;\nvar ESC = 27;\n\nvar ToastrConfirm = /*#__PURE__*/function (_React$Component) {\n  _inherits(ToastrConfirm, _React$Component);\n\n  var _super = _createSuper(ToastrConfirm);\n\n  function ToastrConfirm(props) {\n    var _this;\n\n    _classCallCheck(this, ToastrConfirm);\n\n    _this = _super.call(this, props);\n    var _this$props = _this.props,\n        confirmOptions = _this$props.confirmOptions,\n        confirm = _this$props.confirm;\n    var _confirm$options = confirm.options,\n        okText = _confirm$options.okText,\n        cancelText = _confirm$options.cancelText,\n        transitionIn = _confirm$options.transitionIn,\n        transitionOut = _confirm$options.transitionOut,\n        disableCancel = _confirm$options.disableCancel,\n        closeOnShadowClick = _confirm$options.closeOnShadowClick;\n    _this.okText = okText || confirmOptions.okText;\n    _this.cancelText = cancelText || confirmOptions.cancelText;\n    _this.transitionIn = transitionIn || confirmOptions.transitionIn || props.transitionIn;\n    _this.transitionOut = transitionOut || confirmOptions.transitionOut || props.transitionOut;\n    _this.disableCancel = disableCancel || confirmOptions.disableCancel;\n    _this.closeOnShadowClick = closeOnShadowClick || confirmOptions.closeOnShadowClick;\n    (0, _utils._bind)('setTransition removeConfirm handleOnKeyUp handleOnKeyDown handleCloseOnShadowClick', _assertThisInitialized(_this));\n    _this.isKeyDown = false; // an identifier to facilitate aria labelling for a11y for multiple instances of the component family in the DOM\n\n    _this.id = Math.floor(Math.random() * 9999);\n    return _this;\n  }\n\n  _createClass(ToastrConfirm, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.isHiding = false;\n      this.hasClicked = false;\n      this.confirmHolderElement.focus();\n\n      if (this.props.confirm.show) {\n        this.setTransition(true);\n      } // when toast loads the toast close button automatically focuses on the toast control\n\n\n      if (this.closeButton !== undefined && this.closeButton.focus !== undefined) {\n        this.closeButton.focus();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      // when toast unloads the toast close button automatically focuses on the next toast control (if any)\n      // need to add a micro delay to allow the DOM to recycle\n      setTimeout(function () {\n        if (document.getElementsByClassName('toastr-control').length > 0) {\n          document.getElementsByClassName('toastr-control')[0].focus();\n        }\n      }, 50);\n    }\n  }, {\n    key: \"handleOnKeyDown\",\n    value: function handleOnKeyDown(e) {\n      if ((0, _utils.keyCode)(e) == ENTER) {\n        e.preventDefault();\n      }\n\n      this.isKeyDown = true;\n    }\n  }, {\n    key: \"handleCloseOnShadowClick\",\n    value: function handleCloseOnShadowClick(_e) {\n      if (this.closeOnShadowClick) {\n        this.handleCancelClick();\n      }\n    }\n  }, {\n    key: \"handleButtonClick\",\n    value: function handleButtonClick(callback) {\n      var _this2 = this;\n\n      if (this.hasClicked) return;\n      this.hasClicked = true;\n\n      var onAnimationEnd = function onAnimationEnd() {\n        _this2.removeConfirm();\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      this.setTransition();\n      (0, _utils.onCSSTransitionEnd)(this.confirmElement, onAnimationEnd);\n    }\n  }, {\n    key: \"handleConfirmClick\",\n    value: function handleConfirmClick() {\n      var callback = this.props.confirm.options ? this.props.confirm.options.onOk : null;\n      this.handleButtonClick(callback);\n    }\n  }, {\n    key: \"handleCancelClick\",\n    value: function handleCancelClick() {\n      var callback = this.props.confirm.options ? this.props.confirm.options.onCancel : null;\n      this.handleButtonClick(callback);\n    }\n  }, {\n    key: \"setTransition\",\n    value: function setTransition(add) {\n      if (add) {\n        this.isHiding = false;\n        this.confirmElement.classList.add(this.transitionIn);\n        if ((0, _utils.isBrowser)()) return document.querySelector('body').classList.add('toastr-confirm-active');\n      }\n\n      this.isHiding = true;\n      this.confirmElement.classList.remove(this.transitionIn);\n      this.confirmElement.classList.add(this.transitionOut);\n    }\n  }, {\n    key: \"removeConfirm\",\n    value: function removeConfirm() {\n      this.isHiding = false;\n      this.props.hideConfirm();\n      if ((0, _utils.isBrowser)()) return document.querySelector('body').classList.remove('toastr-confirm-active');\n    }\n  }, {\n    key: \"handleOnKeyUp\",\n    value: function handleOnKeyUp(e) {\n      var code = (0, _utils.keyCode)(e);\n\n      if (code == ESC && !this.disableCancel) {\n        this.handleCancelClick();\n      } else if (code == ESC && this.disableCancel) {\n        this.handleConfirmClick();\n      } else if (code == ENTER && this.isKeyDown) {\n        this.isKeyDown = false;\n        this.handleConfirmClick();\n      }\n    }\n  }, {\n    key: \"containsOkButton\",\n    value: function containsOkButton(buttons) {\n      return buttons && buttons.filter(function (button) {\n        return button.ok === true;\n      }).length > 0;\n    }\n  }, {\n    key: \"containsCancelButton\",\n    value: function containsCancelButton(buttons) {\n      return buttons && buttons.filter(function (button) {\n        return button.cancel === true;\n      }).length > 0;\n    }\n  }, {\n    key: \"getCustomButtonHandler\",\n    value: function getCustomButtonHandler(config) {\n      var _this3 = this;\n\n      if (config.ok === true) {\n        return this.handleConfirmClick.bind(this);\n      }\n\n      if (config.cancel === true) {\n        return this.handleCancelClick.bind(this);\n      }\n\n      return function () {\n        return _this3.handleButtonClick(config.handler);\n      };\n    }\n  }, {\n    key: \"getCustomButtonText\",\n    value: function getCustomButtonText(config) {\n      if (config.ok === true) {\n        return this.okText;\n      }\n\n      if (config.cancel === true) {\n        return this.cancelText;\n      }\n\n      return config.text;\n    }\n  }, {\n    key: \"getCustomButtonClassName\",\n    value: function getCustomButtonClassName(config) {\n      if (config.ok === true) {\n        return 'rrt-ok-btn';\n      }\n\n      if (config.cancel === true) {\n        return 'rrt-cancel-btn';\n      }\n\n      return config.className;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this4 = this;\n\n      var _this$props$confirm = this.props.confirm,\n          options = _this$props$confirm.options,\n          message = _this$props$confirm.message;\n      var wrapperProps = {};\n      options.id && (wrapperProps.id = options.id);\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        className: \"rrt-confirm-holder\",\n        tabIndex: \"-1\",\n        ref: function ref(_ref2) {\n          return _this4.confirmHolderElement = _ref2;\n        },\n        onKeyDown: this.handleOnKeyDown,\n        onKeyUp: this.handleOnKeyUp,\n        role: \"alert\"\n      }, wrapperProps), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-confirm animated\",\n        ref: function ref(_ref) {\n          return _this4.confirmElement = _ref;\n        },\n        role: \"alertdialog\",\n        \"aria-describedby\": \"dialogDesc-\".concat(this.id)\n      }, message && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-message\",\n        id: \"dialogDesc-\".concat(this.id)\n      }, message), options.component && /*#__PURE__*/_react[\"default\"].createElement(options.component, null), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"rrt-buttons-holder\"\n      }, !this.containsOkButton(options.buttons) && /*#__PURE__*/_react[\"default\"].createElement(_Button[\"default\"], {\n        tabIndex: \"0\",\n        innerRef: function innerRef(ref) {\n          return _this4.closeButton = ref;\n        },\n        className: \"rrt-ok-btn toastr-control\",\n        onClick: function onClick() {\n          return _this4.handleConfirmClick();\n        }\n      }, this.okText), !this.disableCancel && !this.containsCancelButton(options.buttons) && /*#__PURE__*/_react[\"default\"].createElement(_Button[\"default\"], {\n        tabIndex: \"0\",\n        innerRef: function innerRef(ref) {\n          return _this4.closeButton = ref;\n        },\n        className: \"rrt-cancel-btn toastr-control\",\n        onClick: this.handleCancelClick.bind(this)\n      }, this.cancelText), options.buttons && options.buttons.map(function (button, index) {\n        if (button.cancel === true && _this4.disableCancel) {\n          return null;\n        }\n\n        var handler = _this4.getCustomButtonHandler(button);\n\n        var text = _this4.getCustomButtonText(button);\n\n        var className = _this4.getCustomButtonClassName(button);\n\n        return /*#__PURE__*/_react[\"default\"].createElement(_Button[\"default\"], {\n          tabIndex: \"0\",\n          className: className,\n          onClick: handler,\n          key: index\n        }, text);\n      }))), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"shadow\",\n        onClick: this.handleCloseOnShadowClick.bind(this)\n      }));\n    }\n  }]);\n\n  return ToastrConfirm;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = ToastrConfirm;\n\n_defineProperty(ToastrConfirm, \"displayName\", 'ToastrConfirm');\n\n_defineProperty(ToastrConfirm, \"propTypes\", {\n  confirm: _propTypes[\"default\"].shape({\n    options: _propTypes[\"default\"].shape({\n      transitionIn: _propTypes[\"default\"].string,\n      transitionOut: _propTypes[\"default\"].string\n    })\n  })\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Button = function Button(props) {\n  return /*#__PURE__*/_react[\"default\"].createElement(\"button\", {\n    type: \"button\",\n    onClick: function onClick() {\n      return props.onClick();\n    },\n    className: 'rrt-button ' + props.className,\n    ref: props.innerRef\n  }, props.children);\n};\n\nButton.displayName = 'ReduxConfirmButton';\nvar _default = Button;\nexports[\"default\"] = _default;","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","import{g as getAssetPath}from\"./index-f392fe63.js\";var CACHED_MAP;var getIconMap=function(){if(typeof window===\"undefined\"){return new Map}else{if(!CACHED_MAP){var r=window;r.Ionicons=r.Ionicons||{};CACHED_MAP=r.Ionicons.map=r.Ionicons.map||new Map}return CACHED_MAP}};var addIcons=function(r){var e=getIconMap();Object.keys(r).forEach((function(t){return e.set(t,r[t])}))};var getUrl=function(r){var e=getSrc(r.src);if(e){return e}e=getName(r.name,r.icon,r.mode,r.ios,r.md);if(e){return getNamedUrl(e)}if(r.icon){e=getSrc(r.icon);if(e){return e}e=getSrc(r.icon[r.mode]);if(e){return e}}return null};var getNamedUrl=function(r){var e=getIconMap().get(r);if(e){return e}return getAssetPath(\"svg/\"+r+\".svg\")};var getName=function(r,e,t,n,i){t=(t&&toLower(t))===\"ios\"?\"ios\":\"md\";if(n&&t===\"ios\"){r=toLower(n)}else if(i&&t===\"md\"){r=toLower(i)}else{if(!r&&e&&!isSrc(e)){r=e}if(isStr(r)){r=toLower(r)}}if(!isStr(r)||r.trim()===\"\"){return null}var o=r.replace(/[a-z]|-|\\d/gi,\"\");if(o!==\"\"){return null}return r};var getSrc=function(r){if(isStr(r)){r=r.trim();if(isSrc(r)){return r}}return null};var isSrc=function(r){return r.length>0&&/(\\/|\\.)/.test(r)};var isStr=function(r){return typeof r===\"string\"};var toLower=function(r){return r.toLowerCase()};export{addIcons as a,getName as b,getUrl as g,isStr as i};","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","import { Injectable } from '@angular/core';\nimport { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';\n\n/**\n * @name App Version\n * @premier app-version\n * @description\n * Reads the version of your app from the target build settings.\n *\n * Requires Cordova plugin: `cordova-plugin-app-version`. For more info, please see the [Cordova App Version docs](https://github.com/whiteoctober/cordova-plugin-app-version).\n *\n * @usage\n * ```typescript\n * import { AppVersion } from '@ionic-native/app-version/ngx';\n *\n * constructor(private appVersion: AppVersion) { }\n *\n * ...\n *\n *\n * this.appVersion.getAppName();\n * this.appVersion.getPackageName();\n * this.appVersion.getVersionCode();\n * this.appVersion.getVersionNumber();\n *\n * ```\n */\n@Plugin({\n  pluginName: 'AppVersion',\n  plugin: 'cordova-plugin-app-version',\n  pluginRef: 'cordova.getAppVersion',\n  repo: 'https://github.com/whiteoctober/cordova-plugin-app-version',\n  platforms: ['Android', 'iOS', 'Windows'],\n})\n@Injectable()\nexport class AppVersion extends IonicNativePlugin {\n  /**\n   * Returns the name of the app, e.g.: \"My Awesome App\"\n   * @returns {Promise<string>}\n   */\n  @Cordova()\n  getAppName(): Promise<string> {\n    return;\n  }\n\n  /**\n   * Returns the package name of the app, e.g.: \"com.example.myawesomeapp\"\n   * @returns {Promise<string>}\n   */\n  @Cordova()\n  getPackageName(): Promise<string> {\n    return;\n  }\n\n  /**\n   * Returns the build identifier of the app.\n   * In iOS a string with the build version like \"1.6095\"\n   * In Android a number generated from the version string, like 10203 for version \"1.2.3\"\n   * @returns {Promise<string | number>}\n   */\n  @Cordova()\n  getVersionCode(): Promise<string | number> {\n    return;\n  }\n\n  /**\n   * Returns the version of the app, e.g.: \"1.2.3\"\n   * @returns {Promise<string>}\n   */\n  @Cordova()\n  getVersionNumber(): Promise<string> {\n    return;\n  }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.GA4 = void 0;\nvar _gtag = _interopRequireDefault(require(\"./gtag\"));\nvar _format = _interopRequireDefault(require(\"./format\"));\nvar _excluded = [\"eventCategory\", \"eventAction\", \"eventLabel\", \"eventValue\", \"hitType\"],\n  _excluded2 = [\"title\", \"location\"],\n  _excluded3 = [\"page\", \"hitType\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _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.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _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.\"); }\nfunction _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); }\nfunction _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; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*\nLinks\nhttps://developers.google.com/gtagjs/reference/api\nhttps://developers.google.com/tag-platform/gtagjs/reference\n*/\n/**\n * @typedef GaOptions\n * @type {Object}\n * @property {boolean} [cookieUpdate=true]\n * @property {number} [cookieExpires=63072000] Default two years\n * @property {string} [cookieDomain=\"auto\"]\n * @property {string} [cookieFlags]\n * @property {string} [userId]\n * @property {string} [clientId]\n * @property {boolean} [anonymizeIp]\n * @property {string} [contentGroup1]\n * @property {string} [contentGroup2]\n * @property {string} [contentGroup3]\n * @property {string} [contentGroup4]\n * @property {string} [contentGroup5]\n * @property {boolean} [allowAdFeatures=true]\n * @property {boolean} [allowAdPersonalizationSignals]\n * @property {boolean} [nonInteraction]\n * @property {string} [page]\n */\n/**\n * @typedef UaEventOptions\n * @type {Object}\n * @property {string} action\n * @property {string} category\n * @property {string} [label]\n * @property {number} [value]\n * @property {boolean} [nonInteraction]\n * @property {('beacon'|'xhr'|'image')} [transport]\n */\n/**\n * @typedef InitOptions\n * @type {Object}\n * @property {string} trackingId\n * @property {GaOptions|any} [gaOptions]\n * @property {Object} [gtagOptions] New parameter\n */\nvar GA4 = /*#__PURE__*/function () {\n  function GA4() {\n    var _this = this;\n    _classCallCheck(this, GA4);\n    _defineProperty(this, \"reset\", function () {\n      _this.isInitialized = false;\n      _this._testMode = false;\n      _this._currentMeasurementId;\n      _this._hasLoadedGA = false;\n      _this._isQueuing = false;\n      _this._queueGtag = [];\n    });\n    _defineProperty(this, \"_gtag\", function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      if (!_this._testMode) {\n        if (_this._isQueuing) {\n          _this._queueGtag.push(args);\n        } else {\n          _gtag[\"default\"].apply(void 0, args);\n        }\n      } else {\n        _this._queueGtag.push(args);\n      }\n    });\n    _defineProperty(this, \"_loadGA\", function (GA_MEASUREMENT_ID, nonce) {\n      var gtagUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"https://www.googletagmanager.com/gtag/js\";\n      if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n        return;\n      }\n      if (!_this._hasLoadedGA) {\n        // Global Site Tag (gtag.js) - Google Analytics\n        var script = document.createElement(\"script\");\n        script.async = true;\n        script.src = \"\".concat(gtagUrl, \"?id=\").concat(GA_MEASUREMENT_ID);\n        if (nonce) {\n          script.setAttribute(\"nonce\", nonce);\n        }\n        document.body.appendChild(script);\n        window.dataLayer = window.dataLayer || [];\n        window.gtag = function gtag() {\n          window.dataLayer.push(arguments);\n        };\n        _this._hasLoadedGA = true;\n      }\n    });\n    _defineProperty(this, \"_toGtagOptions\", function (gaOptions) {\n      if (!gaOptions) {\n        return;\n      }\n      var mapFields = {\n        // Old https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#cookieUpdate\n        // New https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#cookie_update\n        cookieUpdate: \"cookie_update\",\n        cookieExpires: \"cookie_expires\",\n        cookieDomain: \"cookie_domain\",\n        cookieFlags: \"cookie_flags\",\n        // must be in set method?\n        userId: \"user_id\",\n        clientId: \"client_id\",\n        anonymizeIp: \"anonymize_ip\",\n        // https://support.google.com/analytics/answer/2853546?hl=en#zippy=%2Cin-this-article\n        contentGroup1: \"content_group1\",\n        contentGroup2: \"content_group2\",\n        contentGroup3: \"content_group3\",\n        contentGroup4: \"content_group4\",\n        contentGroup5: \"content_group5\",\n        // https://support.google.com/analytics/answer/9050852?hl=en\n        allowAdFeatures: \"allow_google_signals\",\n        allowAdPersonalizationSignals: \"allow_ad_personalization_signals\",\n        nonInteraction: \"non_interaction\",\n        page: \"page_path\",\n        hitCallback: \"event_callback\"\n      };\n      var gtagOptions = Object.entries(gaOptions).reduce(function (prev, _ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n          key = _ref2[0],\n          value = _ref2[1];\n        if (mapFields[key]) {\n          prev[mapFields[key]] = value;\n        } else {\n          prev[key] = value;\n        }\n        return prev;\n      }, {});\n      return gtagOptions;\n    });\n    _defineProperty(this, \"initialize\", function (GA_MEASUREMENT_ID) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!GA_MEASUREMENT_ID) {\n        throw new Error(\"Require GA_MEASUREMENT_ID\");\n      }\n      var initConfigs = typeof GA_MEASUREMENT_ID === \"string\" ? [{\n        trackingId: GA_MEASUREMENT_ID\n      }] : GA_MEASUREMENT_ID;\n      _this._currentMeasurementId = initConfigs[0].trackingId;\n      var gaOptions = options.gaOptions,\n        gtagOptions = options.gtagOptions,\n        nonce = options.nonce,\n        _options$testMode = options.testMode,\n        testMode = _options$testMode === void 0 ? false : _options$testMode,\n        gtagUrl = options.gtagUrl;\n      _this._testMode = testMode;\n      if (!testMode) {\n        _this._loadGA(_this._currentMeasurementId, nonce, gtagUrl);\n      }\n      if (!_this.isInitialized) {\n        _this._gtag(\"js\", new Date());\n        initConfigs.forEach(function (config) {\n          var mergedGtagOptions = _objectSpread(_objectSpread(_objectSpread({}, _this._toGtagOptions(_objectSpread(_objectSpread({}, gaOptions), config.gaOptions))), gtagOptions), config.gtagOptions);\n          if (Object.keys(mergedGtagOptions).length) {\n            _this._gtag(\"config\", config.trackingId, mergedGtagOptions);\n          } else {\n            _this._gtag(\"config\", config.trackingId);\n          }\n        });\n      }\n      _this.isInitialized = true;\n      if (!testMode) {\n        var queues = _toConsumableArray(_this._queueGtag);\n        _this._queueGtag = [];\n        _this._isQueuing = false;\n        while (queues.length) {\n          var queue = queues.shift();\n          _this._gtag.apply(_this, _toConsumableArray(queue));\n          if (queue[0] === \"get\") {\n            _this._isQueuing = true;\n          }\n        }\n      }\n    });\n    _defineProperty(this, \"set\", function (fieldsObject) {\n      if (!fieldsObject) {\n        console.warn(\"`fieldsObject` is required in .set()\");\n        return;\n      }\n      if (_typeof(fieldsObject) !== \"object\") {\n        console.warn(\"Expected `fieldsObject` arg to be an Object\");\n        return;\n      }\n      if (Object.keys(fieldsObject).length === 0) {\n        console.warn(\"empty `fieldsObject` given to .set()\");\n      }\n      _this._gaCommand(\"set\", fieldsObject);\n    });\n    _defineProperty(this, \"_gaCommandSendEvent\", function (eventCategory, eventAction, eventLabel, eventValue, fieldsObject) {\n      _this._gtag(\"event\", eventAction, _objectSpread(_objectSpread({\n        event_category: eventCategory,\n        event_label: eventLabel,\n        value: eventValue\n      }, fieldsObject && {\n        non_interaction: fieldsObject.nonInteraction\n      }), _this._toGtagOptions(fieldsObject)));\n    });\n    _defineProperty(this, \"_gaCommandSendEventParameters\", function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      if (typeof args[0] === \"string\") {\n        _this._gaCommandSendEvent.apply(_this, _toConsumableArray(args.slice(1)));\n      } else {\n        var _args$ = args[0],\n          eventCategory = _args$.eventCategory,\n          eventAction = _args$.eventAction,\n          eventLabel = _args$.eventLabel,\n          eventValue = _args$.eventValue,\n          hitType = _args$.hitType,\n          rest = _objectWithoutProperties(_args$, _excluded);\n        _this._gaCommandSendEvent(eventCategory, eventAction, eventLabel, eventValue, rest);\n      }\n    });\n    _defineProperty(this, \"_gaCommandSendTiming\", function (timingCategory, timingVar, timingValue, timingLabel) {\n      _this._gtag(\"event\", \"timing_complete\", {\n        name: timingVar,\n        value: timingValue,\n        event_category: timingCategory,\n        event_label: timingLabel\n      });\n    });\n    _defineProperty(this, \"_gaCommandSendPageview\", function (page, fieldsObject) {\n      if (fieldsObject && Object.keys(fieldsObject).length) {\n        var _this$_toGtagOptions = _this._toGtagOptions(fieldsObject),\n          title = _this$_toGtagOptions.title,\n          location = _this$_toGtagOptions.location,\n          rest = _objectWithoutProperties(_this$_toGtagOptions, _excluded2);\n        _this._gtag(\"event\", \"page_view\", _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, page && {\n          page_path: page\n        }), title && {\n          page_title: title\n        }), location && {\n          page_location: location\n        }), rest));\n      } else if (page) {\n        _this._gtag(\"event\", \"page_view\", {\n          page_path: page\n        });\n      } else {\n        _this._gtag(\"event\", \"page_view\");\n      }\n    });\n    _defineProperty(this, \"_gaCommandSendPageviewParameters\", function () {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n      if (typeof args[0] === \"string\") {\n        _this._gaCommandSendPageview.apply(_this, _toConsumableArray(args.slice(1)));\n      } else {\n        var _args$2 = args[0],\n          page = _args$2.page,\n          hitType = _args$2.hitType,\n          rest = _objectWithoutProperties(_args$2, _excluded3);\n        _this._gaCommandSendPageview(page, rest);\n      }\n    });\n    _defineProperty(this, \"_gaCommandSend\", function () {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n      var hitType = typeof args[0] === \"string\" ? args[0] : args[0].hitType;\n      switch (hitType) {\n        case \"event\":\n          _this._gaCommandSendEventParameters.apply(_this, args);\n          break;\n        case \"pageview\":\n          _this._gaCommandSendPageviewParameters.apply(_this, args);\n          break;\n        case \"timing\":\n          _this._gaCommandSendTiming.apply(_this, _toConsumableArray(args.slice(1)));\n          break;\n        case \"screenview\":\n        case \"transaction\":\n        case \"item\":\n        case \"social\":\n        case \"exception\":\n          console.warn(\"Unsupported send command: \".concat(hitType));\n          break;\n        default:\n          console.warn(\"Send command doesn't exist: \".concat(hitType));\n      }\n    });\n    _defineProperty(this, \"_gaCommandSet\", function () {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n      if (typeof args[0] === \"string\") {\n        args[0] = _defineProperty({}, args[0], args[1]);\n      }\n      _this._gtag(\"set\", _this._toGtagOptions(args[0]));\n    });\n    _defineProperty(this, \"_gaCommand\", function (command) {\n      for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n        args[_key6 - 1] = arguments[_key6];\n      }\n      switch (command) {\n        case \"send\":\n          _this._gaCommandSend.apply(_this, args);\n          break;\n        case \"set\":\n          _this._gaCommandSet.apply(_this, args);\n          break;\n        default:\n          console.warn(\"Command doesn't exist: \".concat(command));\n      }\n    });\n    _defineProperty(this, \"ga\", function () {\n      for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n        args[_key7] = arguments[_key7];\n      }\n      if (typeof args[0] === \"string\") {\n        _this._gaCommand.apply(_this, args);\n      } else {\n        var readyCallback = args[0];\n        _this._gtag(\"get\", _this._currentMeasurementId, \"client_id\", function (clientId) {\n          _this._isQueuing = false;\n          var queues = _this._queueGtag;\n          readyCallback({\n            get: function get(property) {\n              return property === \"clientId\" ? clientId : property === \"trackingId\" ? _this._currentMeasurementId : property === \"apiVersion\" ? \"1\" : undefined;\n            }\n          });\n          while (queues.length) {\n            var queue = queues.shift();\n            _this._gtag.apply(_this, _toConsumableArray(queue));\n          }\n        });\n        _this._isQueuing = true;\n      }\n      return _this.ga;\n    });\n    _defineProperty(this, \"event\", function (optionsOrName, params) {\n      if (typeof optionsOrName === \"string\") {\n        _this._gtag(\"event\", optionsOrName, _this._toGtagOptions(params));\n      } else {\n        var action = optionsOrName.action,\n          category = optionsOrName.category,\n          label = optionsOrName.label,\n          value = optionsOrName.value,\n          nonInteraction = optionsOrName.nonInteraction,\n          transport = optionsOrName.transport;\n        if (!category || !action) {\n          console.warn(\"args.category AND args.action are required in event()\");\n          return;\n        }\n\n        // Required Fields\n        var fieldObject = {\n          hitType: \"event\",\n          eventCategory: (0, _format[\"default\"])(category),\n          eventAction: (0, _format[\"default\"])(action)\n        };\n\n        // Optional Fields\n        if (label) {\n          fieldObject.eventLabel = (0, _format[\"default\"])(label);\n        }\n        if (typeof value !== \"undefined\") {\n          if (typeof value !== \"number\") {\n            console.warn(\"Expected `args.value` arg to be a Number.\");\n          } else {\n            fieldObject.eventValue = value;\n          }\n        }\n        if (typeof nonInteraction !== \"undefined\") {\n          if (typeof nonInteraction !== \"boolean\") {\n            console.warn(\"`args.nonInteraction` must be a boolean.\");\n          } else {\n            fieldObject.nonInteraction = nonInteraction;\n          }\n        }\n        if (typeof transport !== \"undefined\") {\n          if (typeof transport !== \"string\") {\n            console.warn(\"`args.transport` must be a string.\");\n          } else {\n            if ([\"beacon\", \"xhr\", \"image\"].indexOf(transport) === -1) {\n              console.warn(\"`args.transport` must be either one of these values: `beacon`, `xhr` or `image`\");\n            }\n            fieldObject.transport = transport;\n          }\n        }\n        _this._gaCommand(\"send\", fieldObject);\n      }\n    });\n    _defineProperty(this, \"send\", function (fieldObject) {\n      _this._gaCommand(\"send\", fieldObject);\n    });\n    this.reset();\n  }\n  _createClass(GA4, [{\n    key: \"gtag\",\n    value: function gtag() {\n      this._gtag.apply(this, arguments);\n    }\n  }]);\n  return GA4;\n}();\nexports.GA4 = GA4;\nvar _default = new GA4();\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\nvar gtag = function gtag() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  if (typeof window !== \"undefined\") {\n    var _window;\n    if (typeof window.gtag === \"undefined\") {\n      window.dataLayer = window.dataLayer || [];\n      window.gtag = function gtag() {\n        window.dataLayer.push(arguments);\n      };\n    }\n    (_window = window).gtag.apply(_window, args);\n  }\n};\nvar _default = gtag;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = format;\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nfunction toTitleCase(string) {\n  return string.toString().trim().replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n    if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== \":\" && (title.charAt(index + match.length) !== \"-\" || title.charAt(index - 1) === \"-\") && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n      return match.toLowerCase();\n    }\n    if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n      return match;\n    }\n    return match.charAt(0).toUpperCase() + match.substr(1);\n  });\n}\n\n// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nfunction mightBeEmail(s) {\n  // There's no point trying to validate rfc822 fully, just look for ...@...\n  return typeof s === \"string\" && s.indexOf(\"@\") !== -1;\n}\nvar redacted = \"REDACTED (Potential Email Address)\";\nfunction redactEmail(string) {\n  if (mightBeEmail(string)) {\n    console.warn(\"This arg looks like an email address, redacting.\");\n    return redacted;\n  }\n  return string;\n}\nfunction format() {\n  var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n  var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  var _str = s || \"\";\n  if (titleCase) {\n    _str = toTitleCase(s);\n  }\n  if (redactingEmail) {\n    _str = redactEmail(_str);\n  }\n  return _str;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction 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; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n  _inherits(Slider, _React$Component);\n\n  var _super = _createSuper(Slider);\n\n  function Slider(props) {\n    var _this;\n\n    _classCallCheck(this, Slider);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n      return _this.innerSlider = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n      return _this.innerSlider.slickPrev();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n      return _this.innerSlider.slickNext();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n      var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      return _this.innerSlider.slickGoTo(slide, dontAnimate);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n      return _this.innerSlider.pause(\"paused\");\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n      return _this.innerSlider.autoPlay(\"play\");\n    });\n\n    _this.state = {\n      breakpoint: null\n    };\n    _this._responsiveMediaHandlers = [];\n    return _this;\n  }\n\n  _createClass(Slider, [{\n    key: \"media\",\n    value: function media(query, handler) {\n      // javascript handler for  css media query\n      enquire.register(query, handler);\n\n      this._responsiveMediaHandlers.push({\n        query: query,\n        handler: handler\n      });\n    } // handles responsive breakpoints\n\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      // performance monitoring\n      //if (process.env.NODE_ENV !== 'production') {\n      //const { whyDidYouUpdate } = require('why-did-you-update')\n      //whyDidYouUpdate(React)\n      //}\n      if (this.props.responsive) {\n        var breakpoints = this.props.responsive.map(function (breakpt) {\n          return breakpt.breakpoint;\n        }); // sort them in increasing order of their numerical value\n\n        breakpoints.sort(function (x, y) {\n          return x - y;\n        });\n        breakpoints.forEach(function (breakpoint, index) {\n          // media query for each breakpoint\n          var bQuery;\n\n          if (index === 0) {\n            bQuery = (0, _json2mq[\"default\"])({\n              minWidth: 0,\n              maxWidth: breakpoint\n            });\n          } else {\n            bQuery = (0, _json2mq[\"default\"])({\n              minWidth: breakpoints[index - 1] + 1,\n              maxWidth: breakpoint\n            });\n          } // when not using server side rendering\n\n\n          (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n            _this2.setState({\n              breakpoint: breakpoint\n            });\n          });\n        }); // Register media query for full screen. Need to support resize from small to large\n        // convert javascript object to media query string\n\n        var query = (0, _json2mq[\"default\"])({\n          minWidth: breakpoints.slice(-1)[0]\n        });\n        (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n          _this2.setState({\n            breakpoint: null\n          });\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this._responsiveMediaHandlers.forEach(function (obj) {\n        enquire.unregister(obj.query, obj.handler);\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var settings;\n      var newProps;\n\n      if (this.state.breakpoint) {\n        newProps = this.props.responsive.filter(function (resp) {\n          return resp.breakpoint === _this3.state.breakpoint;\n        });\n        settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n      } else {\n        settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n      } // force scrolling by one if centerMode is on\n\n\n      if (settings.centerMode) {\n        if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n          console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n        }\n\n        settings.slidesToScroll = 1;\n      } // force showing one slide and scrolling by one if the fade mode is on\n\n\n      if (settings.fade) {\n        if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n          console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n        }\n\n        if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n          console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n        }\n\n        settings.slidesToShow = 1;\n        settings.slidesToScroll = 1;\n      } // makes sure that children is an array, even when there is only 1 child\n\n\n      var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n      // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n      children = children.filter(function (child) {\n        if (typeof child === \"string\") {\n          return !!child.trim();\n        }\n\n        return !!child;\n      }); // rows and slidesPerRow logic is handled here\n\n      if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n        console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n        settings.variableWidth = false;\n      }\n\n      var newChildren = [];\n      var currentWidth = null;\n\n      for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n        var newSlide = [];\n\n        for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n          var row = [];\n\n          for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n            if (settings.variableWidth && children[k].props.style) {\n              currentWidth = children[k].props.style.width;\n            }\n\n            if (k >= children.length) break;\n            row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n              key: 100 * i + 10 * j + k,\n              tabIndex: -1,\n              style: {\n                width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n                display: \"inline-block\"\n              }\n            }));\n          }\n\n          newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n            key: 10 * i + j\n          }, row));\n        }\n\n        if (settings.variableWidth) {\n          newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n            key: i,\n            style: {\n              width: currentWidth\n            }\n          }, newSlide));\n        } else {\n          newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n            key: i\n          }, newSlide));\n        }\n      }\n\n      if (settings === \"unslick\") {\n        var className = \"regular slider \" + (this.props.className || \"\");\n        return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n          className: className\n        }, children);\n      } else if (newChildren.length <= settings.slidesToShow) {\n        settings.unslick = true;\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n        style: this.props.style,\n        ref: this.innerSliderRefHandler\n      }, settings), newChildren);\n    }\n  }]);\n\n  return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction 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; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n  _inherits(InnerSlider, _React$Component);\n\n  var _super = _createSuper(InnerSlider);\n\n  function InnerSlider(props) {\n    var _this;\n\n    _classCallCheck(this, InnerSlider);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n      return _this.list = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n      return _this.track = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n      if (_this.props.adaptiveHeight && _this.list) {\n        var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n        _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n      _this.props.onInit && _this.props.onInit();\n\n      if (_this.props.lazyLoad) {\n        var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n        if (slidesToLoad.length > 0) {\n          _this.setState(function (prevState) {\n            return {\n              lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n            };\n          });\n\n          if (_this.props.onLazyLoad) {\n            _this.props.onLazyLoad(slidesToLoad);\n          }\n        }\n      }\n\n      var spec = _objectSpread({\n        listRef: _this.list,\n        trackRef: _this.track\n      }, _this.props);\n\n      _this.updateState(spec, true, function () {\n        _this.adaptHeight();\n\n        _this.props.autoplay && _this.autoPlay(\"update\");\n      });\n\n      if (_this.props.lazyLoad === \"progressive\") {\n        _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n      }\n\n      _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n        if (_this.state.animating) {\n          _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n          _this.callbackTimers.push(setTimeout(function () {\n            return _this.onWindowResized();\n          }, _this.props.speed));\n        } else {\n          _this.onWindowResized();\n        }\n      });\n\n      _this.ro.observe(_this.list);\n\n      document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n        slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n        slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n      });\n\n      if (window.addEventListener) {\n        window.addEventListener(\"resize\", _this.onWindowResized);\n      } else {\n        window.attachEvent(\"onresize\", _this.onWindowResized);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n      if (_this.animationEndCallback) {\n        clearTimeout(_this.animationEndCallback);\n      }\n\n      if (_this.lazyLoadTimer) {\n        clearInterval(_this.lazyLoadTimer);\n      }\n\n      if (_this.callbackTimers.length) {\n        _this.callbackTimers.forEach(function (timer) {\n          return clearTimeout(timer);\n        });\n\n        _this.callbackTimers = [];\n      }\n\n      if (window.addEventListener) {\n        window.removeEventListener(\"resize\", _this.onWindowResized);\n      } else {\n        window.detachEvent(\"onresize\", _this.onWindowResized);\n      }\n\n      if (_this.autoplayTimer) {\n        clearInterval(_this.autoplayTimer);\n      }\n\n      _this.ro.disconnect();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n      _this.checkImagesLoad();\n\n      _this.props.onReInit && _this.props.onReInit();\n\n      if (_this.props.lazyLoad) {\n        var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n        if (slidesToLoad.length > 0) {\n          _this.setState(function (prevState) {\n            return {\n              lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n            };\n          });\n\n          if (_this.props.onLazyLoad) {\n            _this.props.onLazyLoad(slidesToLoad);\n          }\n        }\n      } // if (this.props.onLazyLoad) {\n      //   this.props.onLazyLoad([leftMostSlide])\n      // }\n\n\n      _this.adaptHeight();\n\n      var spec = _objectSpread(_objectSpread({\n        listRef: _this.list,\n        trackRef: _this.track\n      }, _this.props), _this.state);\n\n      var setTrackStyle = _this.didPropsChange(prevProps);\n\n      setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n        if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n          _this.changeSlide({\n            message: \"index\",\n            index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n            currentSlide: _this.state.currentSlide\n          });\n        }\n\n        if (_this.props.autoplay) {\n          _this.autoPlay(\"update\");\n        } else {\n          _this.pause(\"paused\");\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n      if (_this.debouncedResize) _this.debouncedResize.cancel();\n      _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n        return _this.resizeWindow(setTrackStyle);\n      }, 50);\n\n      _this.debouncedResize();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n      var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n      if (!isTrackMounted) return;\n\n      var spec = _objectSpread(_objectSpread({\n        listRef: _this.list,\n        trackRef: _this.track\n      }, _this.props), _this.state);\n\n      _this.updateState(spec, setTrackStyle, function () {\n        if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n      }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n      _this.setState({\n        animating: false\n      });\n\n      clearTimeout(_this.animationEndCallback);\n      delete _this.animationEndCallback;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n      var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n      spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n        slideIndex: updatedState.currentSlide\n      });\n      var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n      spec = _objectSpread(_objectSpread({}, spec), {}, {\n        left: targetLeft\n      });\n      var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n      if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n        updatedState[\"trackStyle\"] = trackStyle;\n      }\n\n      _this.setState(updatedState, callback);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n      if (_this.props.variableWidth) {\n        var _trackWidth = 0,\n            _trackLeft = 0;\n        var childrenWidths = [];\n        var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n          slideCount: _this.props.children.length\n        }));\n        var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n          slideCount: _this.props.children.length\n        }));\n\n        _this.props.children.forEach(function (child) {\n          childrenWidths.push(child.props.style.width);\n          _trackWidth += child.props.style.width;\n        });\n\n        for (var i = 0; i < preClones; i++) {\n          _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n          _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n        }\n\n        for (var _i = 0; _i < postClones; _i++) {\n          _trackWidth += childrenWidths[_i];\n        }\n\n        for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n          _trackLeft += childrenWidths[_i2];\n        }\n\n        var _trackStyle = {\n          width: _trackWidth + \"px\",\n          left: -_trackLeft + \"px\"\n        };\n\n        if (_this.props.centerMode) {\n          var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n          _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n        }\n\n        return {\n          trackStyle: _trackStyle\n        };\n      }\n\n      var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n      var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n        slideCount: childrenCount\n      });\n\n      var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n      var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n      var slideWidth = 100 / slideCount;\n      var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n      if (_this.props.centerMode) {\n        trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n      }\n\n      var trackStyle = {\n        width: trackWidth + \"%\",\n        left: trackLeft + \"%\"\n      };\n      return {\n        slideWidth: slideWidth + \"%\",\n        trackStyle: trackStyle\n      };\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n      var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n      var imagesCount = images.length,\n          loadedCount = 0;\n      Array.prototype.forEach.call(images, function (image) {\n        var handler = function handler() {\n          return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n        };\n\n        if (!image.onclick) {\n          image.onclick = function () {\n            return image.parentNode.focus();\n          };\n        } else {\n          var prevClickHandler = image.onclick;\n\n          image.onclick = function () {\n            prevClickHandler();\n            image.parentNode.focus();\n          };\n        }\n\n        if (!image.onload) {\n          if (_this.props.lazyLoad) {\n            image.onload = function () {\n              _this.adaptHeight();\n\n              _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n            };\n          } else {\n            image.onload = handler;\n\n            image.onerror = function () {\n              handler();\n              _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n            };\n          }\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n      var slidesToLoad = [];\n\n      var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n      for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n        if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n          slidesToLoad.push(index);\n          break;\n        }\n      }\n\n      for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n        if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n          slidesToLoad.push(_index);\n          break;\n        }\n      }\n\n      if (slidesToLoad.length > 0) {\n        _this.setState(function (state) {\n          return {\n            lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n          };\n        });\n\n        if (_this.props.onLazyLoad) {\n          _this.props.onLazyLoad(slidesToLoad);\n        }\n      } else {\n        if (_this.lazyLoadTimer) {\n          clearInterval(_this.lazyLoadTimer);\n          delete _this.lazyLoadTimer;\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n      var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var _this$props = _this.props,\n          asNavFor = _this$props.asNavFor,\n          beforeChange = _this$props.beforeChange,\n          onLazyLoad = _this$props.onLazyLoad,\n          speed = _this$props.speed,\n          afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n      var currentSlide = _this.state.currentSlide;\n\n      var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n        index: index\n      }, _this.props), _this.state), {}, {\n        trackRef: _this.track,\n        useCSS: _this.props.useCSS && !dontAnimate\n      })),\n          state = _slideHandler.state,\n          nextState = _slideHandler.nextState;\n\n      if (!state) return;\n      beforeChange && beforeChange(currentSlide, state.currentSlide);\n      var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n        return _this.state.lazyLoadedList.indexOf(value) < 0;\n      });\n      onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n      if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n        clearTimeout(_this.animationEndCallback);\n        afterChange && afterChange(currentSlide);\n        delete _this.animationEndCallback;\n      }\n\n      _this.setState(state, function () {\n        // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n        if (asNavFor && _this.asNavForIndex !== index) {\n          _this.asNavForIndex = index;\n          asNavFor.innerSlider.slideHandler(index);\n        }\n\n        if (!nextState) return;\n        _this.animationEndCallback = setTimeout(function () {\n          var animating = nextState.animating,\n              firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n          _this.setState(firstBatch, function () {\n            _this.callbackTimers.push(setTimeout(function () {\n              return _this.setState({\n                animating: animating\n              });\n            }, 10));\n\n            afterChange && afterChange(state.currentSlide);\n            delete _this.animationEndCallback;\n          });\n        }, speed);\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n      var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n      var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n      if (targetSlide !== 0 && !targetSlide) return;\n\n      if (dontAnimate === true) {\n        _this.slideHandler(targetSlide, dontAnimate);\n      } else {\n        _this.slideHandler(targetSlide);\n      }\n\n      _this.props.autoplay && _this.autoPlay(\"update\");\n\n      if (_this.props.focusOnSelect) {\n        var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n        nodes[0] && nodes[0].focus();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n      if (_this.clickable === false) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n\n      _this.clickable = true;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n      var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n      dir !== \"\" && _this.changeSlide({\n        message: dir\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n      _this.changeSlide(options);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n      var preventDefault = function preventDefault(e) {\n        e = e || window.event;\n        if (e.preventDefault) e.preventDefault();\n        e.returnValue = false;\n      };\n\n      window.ontouchmove = preventDefault;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n      window.ontouchmove = null;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n      if (_this.props.verticalSwiping) {\n        _this.disableBodyScroll();\n      }\n\n      var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n      state !== \"\" && _this.setState(state);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n      var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n        trackRef: _this.track,\n        listRef: _this.list,\n        slideIndex: _this.state.currentSlide\n      }));\n      if (!state) return;\n\n      if (state[\"swiping\"]) {\n        _this.clickable = false;\n      }\n\n      _this.setState(state);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n      var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n        trackRef: _this.track,\n        listRef: _this.list,\n        slideIndex: _this.state.currentSlide\n      }));\n      if (!state) return;\n      var triggerSlideHandler = state[\"triggerSlideHandler\"];\n      delete state[\"triggerSlideHandler\"];\n\n      _this.setState(state);\n\n      if (triggerSlideHandler === undefined) return;\n\n      _this.slideHandler(triggerSlideHandler);\n\n      if (_this.props.verticalSwiping) {\n        _this.enableBodyScroll();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n      _this.swipeEnd(e);\n\n      _this.clickable = true;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n      // this and fellow methods are wrapped in setTimeout\n      // to make sure initialize setState has happened before\n      // any of such methods are called\n      _this.callbackTimers.push(setTimeout(function () {\n        return _this.changeSlide({\n          message: \"previous\"\n        });\n      }, 0));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n      _this.callbackTimers.push(setTimeout(function () {\n        return _this.changeSlide({\n          message: \"next\"\n        });\n      }, 0));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n      var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      slide = Number(slide);\n      if (isNaN(slide)) return \"\";\n\n      _this.callbackTimers.push(setTimeout(function () {\n        return _this.changeSlide({\n          message: \"index\",\n          index: slide,\n          currentSlide: _this.state.currentSlide\n        }, dontAnimate);\n      }, 0));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n      var nextIndex;\n\n      if (_this.props.rtl) {\n        nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n      } else {\n        if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n          nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n        } else {\n          return false;\n        }\n      }\n\n      _this.slideHandler(nextIndex);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n      if (_this.autoplayTimer) {\n        clearInterval(_this.autoplayTimer);\n      }\n\n      var autoplaying = _this.state.autoplaying;\n\n      if (playType === \"update\") {\n        if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n          return;\n        }\n      } else if (playType === \"leave\") {\n        if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n          return;\n        }\n      } else if (playType === \"blur\") {\n        if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n          return;\n        }\n      }\n\n      _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n      _this.setState({\n        autoplaying: \"playing\"\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n      if (_this.autoplayTimer) {\n        clearInterval(_this.autoplayTimer);\n        _this.autoplayTimer = null;\n      }\n\n      var autoplaying = _this.state.autoplaying;\n\n      if (pauseType === \"paused\") {\n        _this.setState({\n          autoplaying: \"paused\"\n        });\n      } else if (pauseType === \"focused\") {\n        if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n          _this.setState({\n            autoplaying: \"focused\"\n          });\n        }\n      } else {\n        // pauseType  is 'hovered'\n        if (autoplaying === \"playing\") {\n          _this.setState({\n            autoplaying: \"hovered\"\n          });\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n      return _this.props.autoplay && _this.pause(\"hovered\");\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n      return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n      return _this.props.autoplay && _this.pause(\"hovered\");\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n      return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n      return _this.props.autoplay && _this.pause(\"focused\");\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n      return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n      var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n        \"slick-vertical\": _this.props.vertical,\n        \"slick-initialized\": true\n      });\n\n      var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n      var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n      var pauseOnHover = _this.props.pauseOnHover;\n      trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n        onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n        onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n        onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n        focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n      });\n      var dots;\n\n      if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n        var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n        var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n        dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n          clickHandler: _this.changeSlide,\n          onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n          onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n          onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n        });\n        dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n      }\n\n      var prevArrow, nextArrow;\n      var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n      arrowProps.clickHandler = _this.changeSlide;\n\n      if (_this.props.arrows) {\n        prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n        nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n      }\n\n      var verticalHeightStyle = null;\n\n      if (_this.props.vertical) {\n        verticalHeightStyle = {\n          height: _this.state.listHeight\n        };\n      }\n\n      var centerPaddingStyle = null;\n\n      if (_this.props.vertical === false) {\n        if (_this.props.centerMode === true) {\n          centerPaddingStyle = {\n            padding: \"0px \" + _this.props.centerPadding\n          };\n        }\n      } else {\n        if (_this.props.centerMode === true) {\n          centerPaddingStyle = {\n            padding: _this.props.centerPadding + \" 0px\"\n          };\n        }\n      }\n\n      var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n      var touchMove = _this.props.touchMove;\n      var listProps = {\n        className: \"slick-list\",\n        style: listStyle,\n        onClick: _this.clickHandler,\n        onMouseDown: touchMove ? _this.swipeStart : null,\n        onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n        onMouseUp: touchMove ? _this.swipeEnd : null,\n        onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n        onTouchStart: touchMove ? _this.swipeStart : null,\n        onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n        onTouchEnd: touchMove ? _this.touchEnd : null,\n        onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n        onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n      };\n      var innerSliderProps = {\n        className: className,\n        dir: \"ltr\",\n        style: _this.props.style\n      };\n\n      if (_this.props.unslick) {\n        listProps = {\n          className: \"slick-list\"\n        };\n        innerSliderProps = {\n          className: className\n        };\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        ref: _this.listRefHandler\n      }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n        ref: _this.trackRefHandler\n      }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n    });\n\n    _this.list = null;\n    _this.track = null;\n    _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n      currentSlide: _this.props.initialSlide,\n      slideCount: _react[\"default\"].Children.count(_this.props.children)\n    });\n    _this.callbackTimers = [];\n    _this.clickable = true;\n    _this.debouncedResize = null;\n\n    var ssrState = _this.ssrInit();\n\n    _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n    return _this;\n  }\n\n  _createClass(InnerSlider, [{\n    key: \"didPropsChange\",\n    value: function didPropsChange(prevProps) {\n      var setTrackStyle = false;\n\n      for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n        var key = _Object$keys[_i3];\n\n        if (!prevProps.hasOwnProperty(key)) {\n          setTrackStyle = true;\n          break;\n        }\n\n        if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n          continue;\n        }\n\n        if (prevProps[key] !== this.props[key]) {\n          setTrackStyle = true;\n          break;\n        }\n      }\n\n      return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n    }\n  }]);\n\n  return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n  animating: false,\n  autoplaying: null,\n  currentDirection: 0,\n  currentLeft: null,\n  currentSlide: 0,\n  direction: 1,\n  dragging: false,\n  edgeDragged: false,\n  initialized: false,\n  lazyLoadedList: [],\n  listHeight: null,\n  listWidth: null,\n  scrolling: false,\n  slideCount: null,\n  slideHeight: null,\n  slideWidth: null,\n  swipeLeft: null,\n  swiped: false,\n  // used by swipeEvent. differentites between touch and swipe.\n  swiping: false,\n  touchObject: {\n    startX: 0,\n    startY: 0,\n    curX: 0,\n    curY: 0\n  },\n  trackStyle: {},\n  trackWidth: 0,\n  targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction 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; }\n\nfunction _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; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n  var slickActive, slickCenter, slickCloned;\n  var centerOffset, index;\n\n  if (spec.rtl) {\n    index = spec.slideCount - 1 - spec.index;\n  } else {\n    index = spec.index;\n  }\n\n  slickCloned = index < 0 || index >= spec.slideCount;\n\n  if (spec.centerMode) {\n    centerOffset = Math.floor(spec.slidesToShow / 2);\n    slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n    if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n      slickActive = true;\n    }\n  } else {\n    slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n  }\n\n  var focusedSlide;\n\n  if (spec.targetSlide < 0) {\n    focusedSlide = spec.targetSlide + spec.slideCount;\n  } else if (spec.targetSlide >= spec.slideCount) {\n    focusedSlide = spec.targetSlide - spec.slideCount;\n  } else {\n    focusedSlide = spec.targetSlide;\n  }\n\n  var slickCurrent = index === focusedSlide;\n  return {\n    \"slick-slide\": true,\n    \"slick-active\": slickActive,\n    \"slick-center\": slickCenter,\n    \"slick-cloned\": slickCloned,\n    \"slick-current\": slickCurrent // dubious in case of RTL\n\n  };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n  var style = {};\n\n  if (spec.variableWidth === undefined || spec.variableWidth === false) {\n    style.width = spec.slideWidth;\n  }\n\n  if (spec.fade) {\n    style.position = \"relative\";\n\n    if (spec.vertical) {\n      style.top = -spec.index * parseInt(spec.slideHeight);\n    } else {\n      style.left = -spec.index * parseInt(spec.slideWidth);\n    }\n\n    style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n    if (spec.useCSS) {\n      style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n    }\n  }\n\n  return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n  return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n  var key;\n  var slides = [];\n  var preCloneSlides = [];\n  var postCloneSlides = [];\n\n  var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n  var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n  var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n  _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n    var child;\n    var childOnClickOptions = {\n      message: \"children\",\n      index: index,\n      slidesToScroll: spec.slidesToScroll,\n      currentSlide: spec.currentSlide\n    }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n    if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n      child = elem;\n    } else {\n      child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n    }\n\n    var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n      index: index\n    }));\n    var slideClass = child.props.className || \"\";\n    var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n      index: index\n    })); // push a cloned element of the desired slide\n\n    slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n      key: \"original\" + getKey(child, index),\n      \"data-index\": index,\n      className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n      tabIndex: \"-1\",\n      \"aria-hidden\": !slideClasses[\"slick-active\"],\n      style: _objectSpread(_objectSpread({\n        outline: \"none\"\n      }, child.props.style || {}), childStyle),\n      onClick: function onClick(e) {\n        child.props && child.props.onClick && child.props.onClick(e);\n\n        if (spec.focusOnSelect) {\n          spec.focusOnSelect(childOnClickOptions);\n        }\n      }\n    })); // if slide needs to be precloned or postcloned\n\n    if (spec.infinite && spec.fade === false) {\n      var preCloneNo = childrenCount - index;\n\n      if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n        key = -preCloneNo;\n\n        if (key >= startIndex) {\n          child = elem;\n        }\n\n        slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n          index: key\n        }));\n        preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n          key: \"precloned\" + getKey(child, key),\n          \"data-index\": key,\n          tabIndex: \"-1\",\n          className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n          \"aria-hidden\": !slideClasses[\"slick-active\"],\n          style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n          onClick: function onClick(e) {\n            child.props && child.props.onClick && child.props.onClick(e);\n\n            if (spec.focusOnSelect) {\n              spec.focusOnSelect(childOnClickOptions);\n            }\n          }\n        }));\n      }\n\n      if (childrenCount !== spec.slidesToShow) {\n        key = childrenCount + index;\n\n        if (key < endIndex) {\n          child = elem;\n        }\n\n        slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n          index: key\n        }));\n        postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n          key: \"postcloned\" + getKey(child, key),\n          \"data-index\": key,\n          tabIndex: \"-1\",\n          className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n          \"aria-hidden\": !slideClasses[\"slick-active\"],\n          style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n          onClick: function onClick(e) {\n            child.props && child.props.onClick && child.props.onClick(e);\n\n            if (spec.focusOnSelect) {\n              spec.focusOnSelect(childOnClickOptions);\n            }\n          }\n        }));\n      }\n    }\n  });\n\n  if (spec.rtl) {\n    return preCloneSlides.concat(slides, postCloneSlides).reverse();\n  } else {\n    return preCloneSlides.concat(slides, postCloneSlides);\n  }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n  _inherits(Track, _React$PureComponent);\n\n  var _super = _createSuper(Track);\n\n  function Track() {\n    var _this;\n\n    _classCallCheck(this, Track);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n      _this.node = ref;\n    });\n\n    return _this;\n  }\n\n  _createClass(Track, [{\n    key: \"render\",\n    value: function render() {\n      var slides = renderSlides(this.props);\n      var _this$props = this.props,\n          onMouseEnter = _this$props.onMouseEnter,\n          onMouseOver = _this$props.onMouseOver,\n          onMouseLeave = _this$props.onMouseLeave;\n      var mouseEvents = {\n        onMouseEnter: onMouseEnter,\n        onMouseOver: onMouseOver,\n        onMouseLeave: onMouseLeave\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        ref: this.handleRef,\n        className: \"slick-track\",\n        style: this.props.trackStyle\n      }, mouseEvents), slides);\n    }\n  }]);\n\n  return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Dots = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction 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; }\n\nfunction _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; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar getDotCount = function getDotCount(spec) {\n  var dots;\n\n  if (spec.infinite) {\n    dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n  } else {\n    dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n  }\n\n  return dots;\n};\n\nvar Dots = /*#__PURE__*/function (_React$PureComponent) {\n  _inherits(Dots, _React$PureComponent);\n\n  var _super = _createSuper(Dots);\n\n  function Dots() {\n    _classCallCheck(this, Dots);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Dots, [{\n    key: \"clickHandler\",\n    value: function clickHandler(options, e) {\n      // In Autoplay the focus stays on clicked button even after transition\n      // to next slide. That only goes away by click somewhere outside\n      e.preventDefault();\n      this.props.clickHandler(options);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          onMouseEnter = _this$props.onMouseEnter,\n          onMouseOver = _this$props.onMouseOver,\n          onMouseLeave = _this$props.onMouseLeave,\n          infinite = _this$props.infinite,\n          slidesToScroll = _this$props.slidesToScroll,\n          slidesToShow = _this$props.slidesToShow,\n          slideCount = _this$props.slideCount,\n          currentSlide = _this$props.currentSlide;\n      var dotCount = getDotCount({\n        slideCount: slideCount,\n        slidesToScroll: slidesToScroll,\n        slidesToShow: slidesToShow,\n        infinite: infinite\n      });\n      var mouseEvents = {\n        onMouseEnter: onMouseEnter,\n        onMouseOver: onMouseOver,\n        onMouseLeave: onMouseLeave\n      };\n      var dots = [];\n\n      for (var i = 0; i < dotCount; i++) {\n        var _rightBound = (i + 1) * slidesToScroll - 1;\n\n        var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n\n        var _leftBound = rightBound - (slidesToScroll - 1);\n\n        var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n        var className = (0, _classnames[\"default\"])({\n          \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n        });\n        var dotOptions = {\n          message: \"dots\",\n          index: i,\n          slidesToScroll: slidesToScroll,\n          currentSlide: currentSlide\n        };\n        var onClick = this.clickHandler.bind(this, dotOptions);\n        dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n          key: i,\n          className: className\n        }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n          onClick: onClick\n        })));\n      }\n\n      return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n        className: this.props.dotsClass\n      }, mouseEvents));\n    }\n  }]);\n\n  return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.NextArrow = exports.PrevArrow = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction 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; }\n\nfunction _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; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n  _inherits(PrevArrow, _React$PureComponent);\n\n  var _super = _createSuper(PrevArrow);\n\n  function PrevArrow() {\n    _classCallCheck(this, PrevArrow);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(PrevArrow, [{\n    key: \"clickHandler\",\n    value: function clickHandler(options, e) {\n      if (e) {\n        e.preventDefault();\n      }\n\n      this.props.clickHandler(options, e);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var prevClasses = {\n        \"slick-arrow\": true,\n        \"slick-prev\": true\n      };\n      var prevHandler = this.clickHandler.bind(this, {\n        message: \"previous\"\n      });\n\n      if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n        prevClasses[\"slick-disabled\"] = true;\n        prevHandler = null;\n      }\n\n      var prevArrowProps = {\n        key: \"0\",\n        \"data-role\": \"none\",\n        className: (0, _classnames[\"default\"])(prevClasses),\n        style: {\n          display: \"block\"\n        },\n        onClick: prevHandler\n      };\n      var customProps = {\n        currentSlide: this.props.currentSlide,\n        slideCount: this.props.slideCount\n      };\n      var prevArrow;\n\n      if (this.props.prevArrow) {\n        prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n      } else {\n        prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n          key: \"0\",\n          type: \"button\"\n        }, prevArrowProps), \" \", \"Previous\");\n      }\n\n      return prevArrow;\n    }\n  }]);\n\n  return PrevArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.PrevArrow = PrevArrow;\n\nvar NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n  _inherits(NextArrow, _React$PureComponent2);\n\n  var _super2 = _createSuper(NextArrow);\n\n  function NextArrow() {\n    _classCallCheck(this, NextArrow);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(NextArrow, [{\n    key: \"clickHandler\",\n    value: function clickHandler(options, e) {\n      if (e) {\n        e.preventDefault();\n      }\n\n      this.props.clickHandler(options, e);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var nextClasses = {\n        \"slick-arrow\": true,\n        \"slick-next\": true\n      };\n      var nextHandler = this.clickHandler.bind(this, {\n        message: \"next\"\n      });\n\n      if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n        nextClasses[\"slick-disabled\"] = true;\n        nextHandler = null;\n      }\n\n      var nextArrowProps = {\n        key: \"1\",\n        \"data-role\": \"none\",\n        className: (0, _classnames[\"default\"])(nextClasses),\n        style: {\n          display: \"block\"\n        },\n        onClick: nextHandler\n      };\n      var customProps = {\n        currentSlide: this.props.currentSlide,\n        slideCount: this.props.slideCount\n      };\n      var nextArrow;\n\n      if (this.props.nextArrow) {\n        nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n      } else {\n        nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n          key: \"1\",\n          type: \"button\"\n        }, nextArrowProps), \" \", \"Next\");\n      }\n\n      return nextArrow;\n    }\n  }]);\n\n  return NextArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.NextArrow = NextArrow;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n  var re = /[height|width]$/;\n  return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n  var mq = '';\n  var features = Object.keys(obj);\n  features.forEach(function (feature, index) {\n    var value = obj[feature];\n    feature = camel2hyphen(feature);\n    // Add px to dimension features\n    if (isDimension(feature) && typeof value === 'number') {\n      value = value + 'px';\n    }\n    if (value === true) {\n      mq += feature;\n    } else if (value === false) {\n      mq += 'not ' + feature;\n    } else {\n      mq += '(' + feature + ': ' + value + ')';\n    }\n    if (index < features.length-1) {\n      mq += ' and '\n    }\n  });\n  return mq;\n};\n\nvar json2mq = function (query) {\n  var mq = '';\n  if (typeof query === 'string') {\n    return query;\n  }\n  // Handling array of media queries\n  if (query instanceof Array) {\n    query.forEach(function (q, index) {\n      mq += obj2mq(q);\n      if (index < query.length-1) {\n        mq += ', '\n      }\n    });\n    return mq;\n  }\n  // Handling single media query\n  return obj2mq(query);\n};\n\nmodule.exports = json2mq;","var camel2hyphen = function (str) {\n  return str\n          .replace(/[A-Z]/g, function (match) {\n            return '-' + match.toLowerCase();\n          })\n          .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar defaultProps = {\n  accessibility: true,\n  adaptiveHeight: false,\n  afterChange: null,\n  appendDots: function appendDots(dots) {\n    return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n      style: {\n        display: \"block\"\n      }\n    }, dots);\n  },\n  arrows: true,\n  autoplay: false,\n  autoplaySpeed: 3000,\n  beforeChange: null,\n  centerMode: false,\n  centerPadding: \"50px\",\n  className: \"\",\n  cssEase: \"ease\",\n  customPaging: function customPaging(i) {\n    return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n  },\n  dots: false,\n  dotsClass: \"slick-dots\",\n  draggable: true,\n  easing: \"linear\",\n  edgeFriction: 0.35,\n  fade: false,\n  focusOnSelect: false,\n  infinite: true,\n  initialSlide: 0,\n  lazyLoad: null,\n  nextArrow: null,\n  onEdge: null,\n  onInit: null,\n  onLazyLoadError: null,\n  onReInit: null,\n  pauseOnDotsHover: false,\n  pauseOnFocus: false,\n  pauseOnHover: true,\n  prevArrow: null,\n  responsive: null,\n  rows: 1,\n  rtl: false,\n  slide: \"div\",\n  slidesPerRow: 1,\n  slidesToScroll: 1,\n  slidesToShow: 1,\n  speed: 500,\n  swipe: true,\n  swipeEvent: null,\n  swipeToSlide: false,\n  touchMove: true,\n  touchThreshold: 5,\n  useCSS: true,\n  useTransform: true,\n  variableWidth: false,\n  vertical: false,\n  waitForAnimate: true\n};\nvar _default = defaultProps;\nexports[\"default\"] = _default;","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n    if(!window.matchMedia) {\n        throw new Error('matchMedia not present, legacy browsers require a polyfill');\n    }\n\n    this.queries = {};\n    this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n    constructor : MediaQueryDispatch,\n\n    /**\n     * Registers a handler for the given media query\n     *\n     * @param {string} q the media query\n     * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n     * @param {function} options.match fired when query matched\n     * @param {function} [options.unmatch] fired when a query is no longer matched\n     * @param {function} [options.setup] fired when handler first triggered\n     * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n     * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n     */\n    register : function(q, options, shouldDegrade) {\n        var queries         = this.queries,\n            isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n        if(!queries[q]) {\n            queries[q] = new MediaQuery(q, isUnconditional);\n        }\n\n        //normalise to object in an array\n        if(isFunction(options)) {\n            options = { match : options };\n        }\n        if(!isArray(options)) {\n            options = [options];\n        }\n        each(options, function(handler) {\n            if (isFunction(handler)) {\n                handler = { match : handler };\n            }\n            queries[q].addHandler(handler);\n        });\n\n        return this;\n    },\n\n    /**\n     * unregisters a query and all it's handlers, or a specific handler for a query\n     *\n     * @param {string} q the media query to target\n     * @param {object || function} [handler] specific handler to unregister\n     */\n    unregister : function(q, handler) {\n        var query = this.queries[q];\n\n        if(query) {\n            if(handler) {\n                query.removeHandler(handler);\n            }\n            else {\n                query.clear();\n                delete this.queries[q];\n            }\n        }\n\n        return this;\n    }\n};\n\nmodule.exports = MediaQueryDispatch;\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n    this.query = query;\n    this.isUnconditional = isUnconditional;\n    this.handlers = [];\n    this.mql = window.matchMedia(query);\n\n    var self = this;\n    this.listener = function(mql) {\n        // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n        self.mql = mql.currentTarget || mql;\n        self.assess();\n    };\n    this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n    constuctor : MediaQuery,\n\n    /**\n     * add a handler for this query, triggering if already active\n     *\n     * @param {object} handler\n     * @param {function} handler.match callback for when query is activated\n     * @param {function} [handler.unmatch] callback for when query is deactivated\n     * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n     * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n     */\n    addHandler : function(handler) {\n        var qh = new QueryHandler(handler);\n        this.handlers.push(qh);\n\n        this.matches() && qh.on();\n    },\n\n    /**\n     * removes the given handler from the collection, and calls it's destroy methods\n     *\n     * @param {object || function} handler the handler to remove\n     */\n    removeHandler : function(handler) {\n        var handlers = this.handlers;\n        each(handlers, function(h, i) {\n            if(h.equals(handler)) {\n                h.destroy();\n                return !handlers.splice(i,1); //remove from array and exit each early\n            }\n        });\n    },\n\n    /**\n     * Determine whether the media query should be considered a match\n     *\n     * @return {Boolean} true if media query can be considered a match, false otherwise\n     */\n    matches : function() {\n        return this.mql.matches || this.isUnconditional;\n    },\n\n    /**\n     * Clears all handlers and unbinds events\n     */\n    clear : function() {\n        each(this.handlers, function(handler) {\n            handler.destroy();\n        });\n        this.mql.removeListener(this.listener);\n        this.handlers.length = 0; //clear array\n    },\n\n    /*\n        * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n        */\n    assess : function() {\n        var action = this.matches() ? 'on' : 'off';\n\n        each(this.handlers, function(handler) {\n            handler[action]();\n        });\n    }\n};\n\nmodule.exports = MediaQuery;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n    this.options = options;\n    !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n    constructor : QueryHandler,\n\n    /**\n     * coordinates setup of the handler\n     *\n     * @function\n     */\n    setup : function() {\n        if(this.options.setup) {\n            this.options.setup();\n        }\n        this.initialised = true;\n    },\n\n    /**\n     * coordinates setup and triggering of the handler\n     *\n     * @function\n     */\n    on : function() {\n        !this.initialised && this.setup();\n        this.options.match && this.options.match();\n    },\n\n    /**\n     * coordinates the unmatch event for the handler\n     *\n     * @function\n     */\n    off : function() {\n        this.options.unmatch && this.options.unmatch();\n    },\n\n    /**\n     * called when a handler is to be destroyed.\n     * delegates to the destroy or unmatch callbacks, depending on availability.\n     *\n     * @function\n     */\n    destroy : function() {\n        this.options.destroy ? this.options.destroy() : this.off();\n    },\n\n    /**\n     * determines equality by reference.\n     * if object is supplied compare options, if function, compare match callback\n     *\n     * @function\n     * @param {object || function} [target] the target for comparison\n     */\n    equals : function(target) {\n        return this.options === target || this.options.match === target;\n    }\n\n};\n\nmodule.exports = QueryHandler;\n","'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\nfunction compare(a, b) {\n  if (a === b) {\n    return 0;\n  }\n\n  var x = a.length;\n  var y = b.length;\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i];\n      y = b[i];\n      break;\n    }\n  }\n\n  if (x < y) {\n    return -1;\n  }\n  if (y < x) {\n    return 1;\n  }\n  return 0;\n}\nfunction isBuffer(b) {\n  if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n    return global.Buffer.isBuffer(b);\n  }\n  return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n  return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n  return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n  if (isBuffer(arrbuf)) {\n    return false;\n  }\n  if (typeof global.ArrayBuffer !== 'function') {\n    return false;\n  }\n  if (typeof ArrayBuffer.isView === 'function') {\n    return ArrayBuffer.isView(arrbuf);\n  }\n  if (!arrbuf) {\n    return false;\n  }\n  if (arrbuf instanceof DataView) {\n    return true;\n  }\n  if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n    return true;\n  }\n  return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n//                             actual: actual,\n//                             expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n  if (!util.isFunction(func)) {\n    return;\n  }\n  if (functionsHaveNames) {\n    return func.name;\n  }\n  var str = func.toString();\n  var match = str.match(regex);\n  return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n  this.name = 'AssertionError';\n  this.actual = options.actual;\n  this.expected = options.expected;\n  this.operator = options.operator;\n  if (options.message) {\n    this.message = options.message;\n    this.generatedMessage = false;\n  } else {\n    this.message = getMessage(this);\n    this.generatedMessage = true;\n  }\n  var stackStartFunction = options.stackStartFunction || fail;\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, stackStartFunction);\n  } else {\n    // non v8 browsers so we can have a stacktrace\n    var err = new Error();\n    if (err.stack) {\n      var out = err.stack;\n\n      // try to strip useless frames\n      var fn_name = getName(stackStartFunction);\n      var idx = out.indexOf('\\n' + fn_name);\n      if (idx >= 0) {\n        // once we have located the function frame\n        // we need to strip out everything before it (and its line)\n        var next_line = out.indexOf('\\n', idx + 1);\n        out = out.substring(next_line + 1);\n      }\n\n      this.stack = out;\n    }\n  }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n  if (typeof s === 'string') {\n    return s.length < n ? s : s.slice(0, n);\n  } else {\n    return s;\n  }\n}\nfunction inspect(something) {\n  if (functionsHaveNames || !util.isFunction(something)) {\n    return util.inspect(something);\n  }\n  var rawname = getName(something);\n  var name = rawname ? ': ' + rawname : '';\n  return '[Function' +  name + ']';\n}\nfunction getMessage(self) {\n  return truncate(inspect(self.actual), 128) + ' ' +\n         self.operator + ' ' +\n         truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided.  All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n  throw new assert.AssertionError({\n    message: message,\n    actual: actual,\n    expected: expected,\n    operator: operator,\n    stackStartFunction: stackStartFunction\n  });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n  if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n  if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n  if (actual == expected) {\n    fail(actual, expected, message, '!=', assert.notEqual);\n  }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n  if (!_deepEqual(actual, expected, false)) {\n    fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n  }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n  if (!_deepEqual(actual, expected, true)) {\n    fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n  }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n  } else if (isBuffer(actual) && isBuffer(expected)) {\n    return compare(actual, expected) === 0;\n\n  // 7.2. If the expected value is a Date object, the actual value is\n  // equivalent if it is also a Date object that refers to the same time.\n  } else if (util.isDate(actual) && util.isDate(expected)) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3 If the expected value is a RegExp object, the actual value is\n  // equivalent if it is also a RegExp object with the same source and\n  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n  } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n    return actual.source === expected.source &&\n           actual.global === expected.global &&\n           actual.multiline === expected.multiline &&\n           actual.lastIndex === expected.lastIndex &&\n           actual.ignoreCase === expected.ignoreCase;\n\n  // 7.4. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if ((actual === null || typeof actual !== 'object') &&\n             (expected === null || typeof expected !== 'object')) {\n    return strict ? actual === expected : actual == expected;\n\n  // If both values are instances of typed arrays, wrap their underlying\n  // ArrayBuffers in a Buffer each to increase performance\n  // This optimization requires the arrays to have the same type as checked by\n  // Object.prototype.toString (aka pToString). Never perform binary\n  // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n  // bit patterns are not identical.\n  } else if (isView(actual) && isView(expected) &&\n             pToString(actual) === pToString(expected) &&\n             !(actual instanceof Float32Array ||\n               actual instanceof Float64Array)) {\n    return compare(new Uint8Array(actual.buffer),\n                   new Uint8Array(expected.buffer)) === 0;\n\n  // 7.5 For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else if (isBuffer(actual) !== isBuffer(expected)) {\n    return false;\n  } else {\n    memos = memos || {actual: [], expected: []};\n\n    var actualIndex = memos.actual.indexOf(actual);\n    if (actualIndex !== -1) {\n      if (actualIndex === memos.expected.indexOf(expected)) {\n        return true;\n      }\n    }\n\n    memos.actual.push(actual);\n    memos.expected.push(expected);\n\n    return objEquiv(actual, expected, strict, memos);\n  }\n}\n\nfunction isArguments(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n  if (a === null || a === undefined || b === null || b === undefined)\n    return false;\n  // if one is a primitive, the other must be same\n  if (util.isPrimitive(a) || util.isPrimitive(b))\n    return a === b;\n  if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n    return false;\n  var aIsArgs = isArguments(a);\n  var bIsArgs = isArguments(b);\n  if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n    return false;\n  if (aIsArgs) {\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return _deepEqual(a, b, strict);\n  }\n  var ka = objectKeys(a);\n  var kb = objectKeys(b);\n  var key, i;\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length !== kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] !== kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n      return false;\n  }\n  return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n  if (_deepEqual(actual, expected, false)) {\n    fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n  }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n  if (_deepEqual(actual, expected, true)) {\n    fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n  }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n  if (actual !== expected) {\n    fail(actual, expected, message, '===', assert.strictEqual);\n  }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n  if (actual === expected) {\n    fail(actual, expected, message, '!==', assert.notStrictEqual);\n  }\n};\n\nfunction expectedException(actual, expected) {\n  if (!actual || !expected) {\n    return false;\n  }\n\n  if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n    return expected.test(actual);\n  }\n\n  try {\n    if (actual instanceof expected) {\n      return true;\n    }\n  } catch (e) {\n    // Ignore.  The instanceof check doesn't work for arrow functions.\n  }\n\n  if (Error.isPrototypeOf(expected)) {\n    return false;\n  }\n\n  return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n  var error;\n  try {\n    block();\n  } catch (e) {\n    error = e;\n  }\n  return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n  var actual;\n\n  if (typeof block !== 'function') {\n    throw new TypeError('\"block\" argument must be a function');\n  }\n\n  if (typeof expected === 'string') {\n    message = expected;\n    expected = null;\n  }\n\n  actual = _tryBlock(block);\n\n  message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n            (message ? ' ' + message : '.');\n\n  if (shouldThrow && !actual) {\n    fail(actual, expected, 'Missing expected exception' + message);\n  }\n\n  var userProvidedMessage = typeof message === 'string';\n  var isUnwantedException = !shouldThrow && util.isError(actual);\n  var isUnexpectedException = !shouldThrow && actual && !expected;\n\n  if ((isUnwantedException &&\n      userProvidedMessage &&\n      expectedException(actual, expected)) ||\n      isUnexpectedException) {\n    fail(actual, expected, 'Got unwanted exception' + message);\n  }\n\n  if ((shouldThrow && actual && expected &&\n      !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n    throw actual;\n  }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n  _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n  _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    if (hasOwn.call(obj, key)) keys.push(key);\n  }\n  return keys;\n};\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _makeEventProps = _interopRequireDefault(require(\"make-event-props\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _reactCalendar = _interopRequireDefault(require(\"react-calendar\"));\n\nvar _reactFit = _interopRequireDefault(require(\"react-fit\"));\n\nvar _DateInput = _interopRequireDefault(require(\"./DateInput\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _excluded = [\"calendarClassName\", \"className\", \"onChange\", \"value\"],\n    _excluded2 = [\"onChange\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _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; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar baseClassName = 'react-date-picker';\nvar outsideActionEvents = ['mousedown', 'focusin', 'touchstart'];\nvar allViews = ['century', 'decade', 'year', 'month'];\n\nvar DatePicker = /*#__PURE__*/function (_PureComponent) {\n  _inherits(DatePicker, _PureComponent);\n\n  var _super = _createSuper(DatePicker);\n\n  function DatePicker() {\n    var _this;\n\n    _classCallCheck(this, DatePicker);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"onOutsideAction\", function (event) {\n      // Try event.composedPath first to handle clicks inside a Shadow DOM.\n      var target = 'composedPath' in event ? event.composedPath()[0] : event.target;\n\n      if (_this.wrapper && !_this.wrapper.contains(target)) {\n        _this.closeCalendar();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value) {\n      var closeCalendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this.props.closeCalendar;\n      var onChange = _this.props.onChange;\n\n      if (closeCalendar) {\n        _this.closeCalendar();\n      }\n\n      if (onChange) {\n        onChange(value);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n      var _this$props = _this.props,\n          disabled = _this$props.disabled,\n          onFocus = _this$props.onFocus,\n          openCalendarOnFocus = _this$props.openCalendarOnFocus;\n\n      if (onFocus) {\n        onFocus(event);\n      } // Internet Explorer still fires onFocus on disabled elements\n\n\n      if (disabled) {\n        return;\n      }\n\n      if (openCalendarOnFocus) {\n        if (event.target.getAttribute('data-select') === 'true') {\n          return;\n        }\n\n        _this.openCalendar();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      if (event.key === 'Escape') {\n        _this.closeCalendar();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"openCalendar\", function () {\n      _this.setState({\n        isOpen: true\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"closeCalendar\", function () {\n      _this.setState(function (prevState) {\n        if (!prevState.isOpen) {\n          return null;\n        }\n\n        return {\n          isOpen: false\n        };\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"toggleCalendar\", function () {\n      _this.setState(function (prevState) {\n        return {\n          isOpen: !prevState.isOpen\n        };\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"stopPropagation\", function (event) {\n      return event.stopPropagation();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"clear\", function () {\n      return _this.onChange(null);\n    });\n\n    return _this;\n  }\n\n  _createClass(DatePicker, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.handleOutsideActionListeners();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var isOpen = this.state.isOpen;\n      var _this$props2 = this.props,\n          onCalendarClose = _this$props2.onCalendarClose,\n          onCalendarOpen = _this$props2.onCalendarOpen;\n\n      if (isOpen !== prevState.isOpen) {\n        this.handleOutsideActionListeners();\n        var callback = isOpen ? onCalendarOpen : onCalendarClose;\n        if (callback) callback();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.handleOutsideActionListeners(false);\n    }\n  }, {\n    key: \"eventProps\",\n    get: function get() {\n      return (0, _makeEventProps[\"default\"])(this.props);\n    }\n  }, {\n    key: \"handleOutsideActionListeners\",\n    value: function handleOutsideActionListeners(shouldListen) {\n      var _this2 = this;\n\n      var isOpen = this.state.isOpen;\n      var shouldListenWithFallback = typeof shouldListen !== 'undefined' ? shouldListen : isOpen;\n      var fnName = shouldListenWithFallback ? 'addEventListener' : 'removeEventListener';\n      outsideActionEvents.forEach(function (eventName) {\n        return document[fnName](eventName, _this2.onOutsideAction);\n      });\n      document[fnName]('keydown', this.onKeyDown);\n    }\n  }, {\n    key: \"renderInputs\",\n    value: function renderInputs() {\n      var _this$props3 = this.props,\n          autoFocus = _this$props3.autoFocus,\n          calendarAriaLabel = _this$props3.calendarAriaLabel,\n          calendarIcon = _this$props3.calendarIcon,\n          clearAriaLabel = _this$props3.clearAriaLabel,\n          clearIcon = _this$props3.clearIcon,\n          dayAriaLabel = _this$props3.dayAriaLabel,\n          dayPlaceholder = _this$props3.dayPlaceholder,\n          disableCalendar = _this$props3.disableCalendar,\n          disabled = _this$props3.disabled,\n          format = _this$props3.format,\n          locale = _this$props3.locale,\n          maxDate = _this$props3.maxDate,\n          maxDetail = _this$props3.maxDetail,\n          minDate = _this$props3.minDate,\n          monthAriaLabel = _this$props3.monthAriaLabel,\n          monthPlaceholder = _this$props3.monthPlaceholder,\n          name = _this$props3.name,\n          nativeInputAriaLabel = _this$props3.nativeInputAriaLabel,\n          required = _this$props3.required,\n          returnValue = _this$props3.returnValue,\n          showLeadingZeros = _this$props3.showLeadingZeros,\n          value = _this$props3.value,\n          yearAriaLabel = _this$props3.yearAriaLabel,\n          yearPlaceholder = _this$props3.yearPlaceholder;\n      var isOpen = this.state.isOpen;\n\n      var _concat = [].concat(value),\n          _concat2 = _slicedToArray(_concat, 1),\n          valueFrom = _concat2[0];\n\n      var ariaLabelProps = {\n        dayAriaLabel: dayAriaLabel,\n        monthAriaLabel: monthAriaLabel,\n        nativeInputAriaLabel: nativeInputAriaLabel,\n        yearAriaLabel: yearAriaLabel\n      };\n      var placeholderProps = {\n        dayPlaceholder: dayPlaceholder,\n        monthPlaceholder: monthPlaceholder,\n        yearPlaceholder: yearPlaceholder\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        className: \"\".concat(baseClassName, \"__wrapper\")\n      }, /*#__PURE__*/_react[\"default\"].createElement(_DateInput[\"default\"], _extends({}, ariaLabelProps, placeholderProps, {\n        // eslint-disable-next-line jsx-a11y/no-autofocus\n        autoFocus: autoFocus,\n        className: \"\".concat(baseClassName, \"__inputGroup\"),\n        disabled: disabled,\n        format: format,\n        isCalendarOpen: isOpen,\n        locale: locale,\n        maxDate: maxDate,\n        maxDetail: maxDetail,\n        minDate: minDate,\n        name: name,\n        onChange: this.onChange,\n        required: required,\n        returnValue: returnValue,\n        showLeadingZeros: showLeadingZeros,\n        value: valueFrom\n      })), clearIcon !== null && /*#__PURE__*/_react[\"default\"].createElement(\"button\", {\n        \"aria-label\": clearAriaLabel,\n        className: \"\".concat(baseClassName, \"__clear-button \").concat(baseClassName, \"__button\"),\n        disabled: disabled,\n        onClick: this.clear,\n        onFocus: this.stopPropagation,\n        type: \"button\"\n      }, clearIcon), calendarIcon !== null && !disableCalendar && /*#__PURE__*/_react[\"default\"].createElement(\"button\", {\n        \"aria-label\": calendarAriaLabel,\n        className: \"\".concat(baseClassName, \"__calendar-button \").concat(baseClassName, \"__button\"),\n        disabled: disabled,\n        onBlur: this.resetValue,\n        onClick: this.toggleCalendar,\n        onFocus: this.stopPropagation,\n        type: \"button\"\n      }, calendarIcon));\n    }\n  }, {\n    key: \"renderCalendar\",\n    value: function renderCalendar() {\n      var disableCalendar = this.props.disableCalendar;\n      var isOpen = this.state.isOpen;\n\n      if (isOpen === null || disableCalendar) {\n        return null;\n      }\n\n      var _this$props4 = this.props,\n          calendarClassName = _this$props4.calendarClassName,\n          datePickerClassName = _this$props4.className,\n          onChange = _this$props4.onChange,\n          value = _this$props4.value,\n          calendarProps = _objectWithoutProperties(_this$props4, _excluded);\n\n      var className = \"\".concat(baseClassName, \"__calendar\");\n      return /*#__PURE__*/_react[\"default\"].createElement(_reactFit[\"default\"], null, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        ref: function ref(_ref) {\n          if (_ref && !isOpen) {\n            _ref.removeAttribute('style');\n          }\n        },\n        className: (0, _mergeClassNames[\"default\"])(className, \"\".concat(className, \"--\").concat(isOpen ? 'open' : 'closed')),\n        style: isOpen ? undefined : {}\n      }, /*#__PURE__*/_react[\"default\"].createElement(_reactCalendar[\"default\"], _extends({\n        className: calendarClassName,\n        onChange: this.onChange,\n        value: value || null\n      }, calendarProps))));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var eventProps = this.eventProps;\n      var _this$props5 = this.props,\n          className = _this$props5.className,\n          disabled = _this$props5.disabled;\n      var isOpen = this.state.isOpen;\n\n      var onChange = eventProps.onChange,\n          eventPropsWithoutOnChange = _objectWithoutProperties(eventProps, _excluded2);\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        className: (0, _mergeClassNames[\"default\"])(baseClassName, \"\".concat(baseClassName, \"--\").concat(isOpen ? 'open' : 'closed'), \"\".concat(baseClassName, \"--\").concat(disabled ? 'disabled' : 'enabled'), className)\n      }, eventPropsWithoutOnChange, {\n        onFocus: this.onFocus,\n        ref: function ref(_ref2) {\n          if (!_ref2) {\n            return;\n          }\n\n          _this3.wrapper = _ref2;\n        }\n      }), this.renderInputs(), this.renderCalendar());\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.isOpen !== prevState.isOpenProps) {\n        return {\n          isOpen: nextProps.isOpen,\n          isOpenProps: nextProps.isOpen\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return DatePicker;\n}(_react.PureComponent);\n\nexports[\"default\"] = DatePicker;\nvar iconProps = {\n  xmlns: 'http://www.w3.org/2000/svg',\n  width: 19,\n  height: 19,\n  viewBox: '0 0 19 19',\n  stroke: 'black',\n  strokeWidth: 2\n};\n\nvar CalendarIcon = /*#__PURE__*/_react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n  className: \"\".concat(baseClassName, \"__calendar-button__icon \").concat(baseClassName, \"__button__icon\")\n}), /*#__PURE__*/_react[\"default\"].createElement(\"rect\", {\n  fill: \"none\",\n  height: \"15\",\n  width: \"15\",\n  x: \"2\",\n  y: \"2\"\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n  x1: \"6\",\n  x2: \"6\",\n  y1: \"0\",\n  y2: \"4\"\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n  x1: \"13\",\n  x2: \"13\",\n  y1: \"0\",\n  y2: \"4\"\n}));\n\nvar ClearIcon = /*#__PURE__*/_react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n  className: \"\".concat(baseClassName, \"__clear-button__icon \").concat(baseClassName, \"__button__icon\")\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n  x1: \"4\",\n  x2: \"15\",\n  y1: \"4\",\n  y2: \"15\"\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n  x1: \"15\",\n  x2: \"4\",\n  y1: \"4\",\n  y2: \"15\"\n}));\n\nDatePicker.defaultProps = {\n  calendarIcon: CalendarIcon,\n  clearIcon: ClearIcon,\n  closeCalendar: true,\n  isOpen: null,\n  openCalendarOnFocus: true,\n  returnValue: 'start'\n};\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\n\nDatePicker.propTypes = {\n  autoFocus: _propTypes[\"default\"].bool,\n  calendarAriaLabel: _propTypes[\"default\"].string,\n  calendarClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n  calendarIcon: _propTypes[\"default\"].node,\n  className: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n  clearAriaLabel: _propTypes[\"default\"].string,\n  clearIcon: _propTypes[\"default\"].node,\n  closeCalendar: _propTypes[\"default\"].bool,\n  dayAriaLabel: _propTypes[\"default\"].string,\n  dayPlaceholder: _propTypes[\"default\"].string,\n  disableCalendar: _propTypes[\"default\"].bool,\n  disabled: _propTypes[\"default\"].bool,\n  format: _propTypes[\"default\"].string,\n  isOpen: _propTypes[\"default\"].bool,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  maxDetail: _propTypes[\"default\"].oneOf(allViews),\n  minDate: _propTypes2.isMinDate,\n  monthAriaLabel: _propTypes[\"default\"].string,\n  monthPlaceholder: _propTypes[\"default\"].string,\n  name: _propTypes[\"default\"].string,\n  nativeInputAriaLabel: _propTypes[\"default\"].string,\n  onCalendarClose: _propTypes[\"default\"].func,\n  onCalendarOpen: _propTypes[\"default\"].func,\n  onChange: _propTypes[\"default\"].func,\n  onFocus: _propTypes[\"default\"].func,\n  openCalendarOnFocus: _propTypes[\"default\"].bool,\n  required: _propTypes[\"default\"].bool,\n  returnValue: _propTypes[\"default\"].oneOf(['start', 'end', 'range']),\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n  yearAriaLabel: _propTypes[\"default\"].string,\n  yearPlaceholder: _propTypes[\"default\"].string\n};","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\n// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = [\n    'onCompositionEnd',\n    'onCompositionStart',\n    'onCompositionUpdate',\n];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var mediaEvents = [\n    'onAbort',\n    'onCanPlay',\n    'onCanPlayThrough',\n    'onDurationChange',\n    'onEmptied',\n    'onEncrypted',\n    'onEnded',\n    'onError',\n    'onLoadedData',\n    'onLoadedMetadata',\n    'onLoadStart',\n    'onPause',\n    'onPlay',\n    'onPlaying',\n    'onProgress',\n    'onRateChange',\n    'onSeeked',\n    'onSeeking',\n    'onStalled',\n    'onSuspend',\n    'onTimeUpdate',\n    'onVolumeChange',\n    'onWaiting',\n];\nexport var mouseEvents = [\n    'onClick',\n    'onContextMenu',\n    'onDoubleClick',\n    'onMouseDown',\n    'onMouseEnter',\n    'onMouseLeave',\n    'onMouseMove',\n    'onMouseOut',\n    'onMouseOver',\n    'onMouseUp',\n];\nexport var dragEvents = [\n    'onDrag',\n    'onDragEnd',\n    'onDragEnter',\n    'onDragExit',\n    'onDragLeave',\n    'onDragOver',\n    'onDragStart',\n    'onDrop',\n];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var pointerEvents = [\n    'onPointerDown',\n    'onPointerMove',\n    'onPointerUp',\n    'onPointerCancel',\n    'onGotPointerCapture',\n    'onLostPointerCapture',\n    'onPointerEnter',\n    'onPointerLeave',\n    'onPointerOver',\n    'onPointerOut',\n];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var animationEvents = [\n    'onAnimationStart',\n    'onAnimationEnd',\n    'onAnimationIteration',\n];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var changeEvents = ['onChange'];\nexport var allEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], clipboardEvents, true), compositionEvents, true), focusEvents, true), formEvents, true), imageEvents, true), keyboardEvents, true), mediaEvents, true), mouseEvents, true), dragEvents, true), selectionEvents, true), touchEvents, true), pointerEvents, true), uiEvents, true), wheelEvents, true), animationEvents, true), transitionEvents, true), changeEvents, true), otherEvents, true);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n *   shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n    var eventProps = {};\n    allEvents.forEach(function (eventName) {\n        var eventHandler = props[eventName];\n        if (!eventHandler) {\n            return;\n        }\n        if (getArgs) {\n            eventProps[eventName] = (function (event) {\n                return eventHandler(event, getArgs(eventName));\n            });\n        }\n        else {\n            eventProps[eventName] = eventHandler;\n        }\n    });\n    return eventProps;\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Divider = _interopRequireDefault(require(\"./Divider\"));\n\nvar _DayInput = _interopRequireDefault(require(\"./DateInput/DayInput\"));\n\nvar _MonthInput = _interopRequireDefault(require(\"./DateInput/MonthInput\"));\n\nvar _MonthSelect = _interopRequireDefault(require(\"./DateInput/MonthSelect\"));\n\nvar _YearInput = _interopRequireDefault(require(\"./DateInput/YearInput\"));\n\nvar _NativeInput = _interopRequireDefault(require(\"./DateInput/NativeInput\"));\n\nvar _dateFormatter = require(\"./shared/dateFormatter\");\n\nvar _dates = require(\"./shared/dates\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _utils = require(\"./shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\nvar defaultMinDate = new Date();\ndefaultMinDate.setFullYear(1, 0, 1);\ndefaultMinDate.setHours(0, 0, 0, 0);\nvar defaultMaxDate = new Date(8.64e15);\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nfunction toDate(value) {\n  if (value instanceof Date) {\n    return value;\n  }\n\n  return new Date(value);\n}\n\nfunction datesAreDifferent(date1, date2) {\n  return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n}\n/**\n * Returns value type that can be returned with currently applied settings.\n */\n\n\nfunction getValueType(maxDetail) {\n  return allValueTypes[allViews.indexOf(maxDetail)];\n}\n\nfunction getValue(value, index) {\n  if (!value) {\n    return null;\n  }\n\n  var rawValue = Array.isArray(value) && value.length === 2 ? value[index] : value;\n\n  if (!rawValue) {\n    return null;\n  }\n\n  var valueDate = toDate(rawValue);\n\n  if (isNaN(valueDate.getTime())) {\n    throw new Error(\"Invalid date: \".concat(value));\n  }\n\n  return valueDate;\n}\n\nfunction getDetailValue(_ref, index) {\n  var value = _ref.value,\n      minDate = _ref.minDate,\n      maxDate = _ref.maxDate,\n      maxDetail = _ref.maxDetail;\n  var valuePiece = getValue(value, index);\n\n  if (!valuePiece) {\n    return null;\n  }\n\n  var valueType = getValueType(maxDetail);\n  var detailValueFrom = [_dates.getBegin, _dates.getEnd][index](valueType, valuePiece);\n  return (0, _utils.between)(detailValueFrom, minDate, maxDate);\n}\n\nvar getDetailValueFrom = function getDetailValueFrom(args) {\n  return getDetailValue(args, 0);\n};\n\nvar getDetailValueTo = function getDetailValueTo(args) {\n  return getDetailValue(args, 1);\n};\n\nvar getDetailValueArray = function getDetailValueArray(args) {\n  var value = args.value;\n\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return [getDetailValueFrom, getDetailValueTo].map(function (fn) {\n    return fn(args);\n  });\n};\n\nfunction isInternalInput(element) {\n  return element.getAttribute('data-input') === 'true';\n}\n\nfunction findInput(element, property) {\n  var nextElement = element;\n\n  do {\n    nextElement = nextElement[property];\n  } while (nextElement && !isInternalInput(nextElement));\n\n  return nextElement;\n}\n\nfunction focus(element) {\n  if (element) {\n    element.focus();\n  }\n}\n\nfunction _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances) {\n  var usedFunctions = [];\n  var pattern = new RegExp(Object.keys(elementFunctions).map(function (el) {\n    return \"\".concat(el, \"+\");\n  }).join('|'), 'g');\n  var matches = placeholder.match(pattern);\n  return placeholder.split(pattern).reduce(function (arr, element, index) {\n    var divider = element &&\n    /*#__PURE__*/\n    // eslint-disable-next-line react/no-array-index-key\n    _react[\"default\"].createElement(_Divider[\"default\"], {\n      key: \"separator_\".concat(index)\n    }, element);\n\n    var res = [].concat(_toConsumableArray(arr), [divider]);\n    var currentMatch = matches && matches[index];\n\n    if (currentMatch) {\n      var renderFunction = elementFunctions[currentMatch] || elementFunctions[Object.keys(elementFunctions).find(function (elementFunction) {\n        return currentMatch.match(elementFunction);\n      })];\n\n      if (!allowMultipleInstances && usedFunctions.includes(renderFunction)) {\n        res.push(currentMatch);\n      } else {\n        res.push(renderFunction(currentMatch, index));\n        usedFunctions.push(renderFunction);\n      }\n    }\n\n    return res;\n  }, []);\n}\n\nvar DateInput = /*#__PURE__*/function (_PureComponent) {\n  _inherits(DateInput, _PureComponent);\n\n  var _super = _createSuper(DateInput);\n\n  function DateInput() {\n    var _this;\n\n    _classCallCheck(this, DateInput);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      year: null,\n      month: null,\n      day: null\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"dayInput\", /*#__PURE__*/(0, _react.createRef)());\n\n    _defineProperty(_assertThisInitialized(_this), \"monthInput\", /*#__PURE__*/(0, _react.createRef)());\n\n    _defineProperty(_assertThisInitialized(_this), \"yearInput\", /*#__PURE__*/(0, _react.createRef)());\n\n    _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n      if (event.target === event.currentTarget) {\n        // Wrapper was directly clicked\n        var firstInput = event.target.children[1];\n        focus(firstInput);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      switch (event.key) {\n        case 'ArrowLeft':\n        case 'ArrowRight':\n        case _this.divider:\n          {\n            event.preventDefault();\n            var input = event.target;\n            var property = event.key === 'ArrowLeft' ? 'previousElementSibling' : 'nextElementSibling';\n            var nextInput = findInput(input, property);\n            focus(nextInput);\n            break;\n          }\n\n        default:\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyUp\", function (event) {\n      var key = event.key,\n          input = event.target;\n      var isNumberKey = !isNaN(parseInt(key, 10));\n\n      if (!isNumberKey) {\n        return;\n      }\n\n      var value = input.value;\n      var max = input.getAttribute('max');\n      /**\n       * Given 1, the smallest possible number the user could type by adding another digit is 10.\n       * 10 would be a valid value given max = 12, so we won't jump to the next input.\n       * However, given 2, smallers possible number would be 20, and thus keeping the focus in\n       * this field doesn't make sense.\n       */\n\n      if (value * 10 > max || value.length >= max.length) {\n        var property = 'nextElementSibling';\n        var nextInput = findInput(input, property);\n        focus(nextInput);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChange\", function (event) {\n      var _event$target = event.target,\n          name = _event$target.name,\n          value = _event$target.value;\n\n      _this.setState(_defineProperty({}, name, value), _this.onChangeExternal);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChangeNative\", function (event) {\n      var onChange = _this.props.onChange;\n      var value = event.target.value;\n\n      if (!onChange) {\n        return;\n      }\n\n      var processedValue = function () {\n        if (!value) {\n          return null;\n        }\n\n        var _value$split = value.split('-'),\n            _value$split2 = _slicedToArray(_value$split, 3),\n            yearString = _value$split2[0],\n            monthString = _value$split2[1],\n            dayString = _value$split2[2];\n\n        var year = parseInt(yearString, 10);\n        var monthIndex = parseInt(monthString, 10) - 1 || 0;\n        var day = parseInt(dayString, 10) || 1;\n        var proposedValue = new Date();\n        proposedValue.setFullYear(year, monthIndex, day);\n        proposedValue.setHours(0, 0, 0, 0);\n        return proposedValue;\n      }();\n\n      onChange(processedValue, false);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChangeExternal\", function () {\n      var onChange = _this.props.onChange;\n\n      if (!onChange) {\n        return;\n      }\n\n      var formElements = [_this.dayInput.current, _this.monthInput.current, _this.yearInput.current].filter(Boolean);\n      var values = {};\n      formElements.forEach(function (formElement) {\n        values[formElement.name] = formElement.value;\n      });\n\n      if (formElements.every(function (formElement) {\n        return !formElement.value;\n      })) {\n        onChange(null, false);\n      } else if (formElements.every(function (formElement) {\n        return formElement.value && formElement.validity.valid;\n      })) {\n        var year = parseInt(values.year, 10) || new Date().getFullYear();\n        var monthIndex = parseInt(values.month || 1, 10) - 1;\n        var day = parseInt(values.day || 1, 10);\n        var proposedValue = new Date();\n        proposedValue.setFullYear(year, monthIndex, day);\n        proposedValue.setHours(0, 0, 0, 0);\n\n        var processedValue = _this.getProcessedValue(proposedValue);\n\n        onChange(processedValue, false);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderDay\", function (currentMatch, index) {\n      var _this$props = _this.props,\n          autoFocus = _this$props.autoFocus,\n          dayAriaLabel = _this$props.dayAriaLabel,\n          dayPlaceholder = _this$props.dayPlaceholder,\n          showLeadingZeros = _this$props.showLeadingZeros;\n      var _this$state = _this.state,\n          day = _this$state.day,\n          month = _this$state.month,\n          year = _this$state.year;\n\n      if (currentMatch && currentMatch.length > 2) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n      return /*#__PURE__*/_react[\"default\"].createElement(_DayInput[\"default\"], _extends({\n        key: \"day\"\n      }, _this.commonInputProps, {\n        ariaLabel: dayAriaLabel // eslint-disable-next-line jsx-a11y/no-autofocus\n        ,\n        autoFocus: index === 0 && autoFocus,\n        inputRef: _this.dayInput,\n        month: month,\n        placeholder: dayPlaceholder,\n        showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n        value: day,\n        year: year\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderMonth\", function (currentMatch, index) {\n      var _this$props2 = _this.props,\n          autoFocus = _this$props2.autoFocus,\n          locale = _this$props2.locale,\n          monthAriaLabel = _this$props2.monthAriaLabel,\n          monthPlaceholder = _this$props2.monthPlaceholder,\n          showLeadingZeros = _this$props2.showLeadingZeros;\n      var _this$state2 = _this.state,\n          month = _this$state2.month,\n          year = _this$state2.year;\n\n      if (currentMatch && currentMatch.length > 4) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      if (currentMatch.length > 2) {\n        return /*#__PURE__*/_react[\"default\"].createElement(_MonthSelect[\"default\"], _extends({\n          key: \"month\"\n        }, _this.commonInputProps, {\n          ariaLabel: monthAriaLabel // eslint-disable-next-line jsx-a11y/no-autofocus\n          ,\n          autoFocus: index === 0 && autoFocus,\n          inputRef: _this.monthInput,\n          locale: locale,\n          placeholder: monthPlaceholder,\n          \"short\": currentMatch.length === 3,\n          value: month,\n          year: year\n        }));\n      }\n\n      var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n      return /*#__PURE__*/_react[\"default\"].createElement(_MonthInput[\"default\"], _extends({\n        key: \"month\"\n      }, _this.commonInputProps, {\n        ariaLabel: monthAriaLabel // eslint-disable-next-line jsx-a11y/no-autofocus\n        ,\n        autoFocus: index === 0 && autoFocus,\n        inputRef: _this.monthInput,\n        placeholder: monthPlaceholder,\n        showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n        value: month,\n        year: year\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderYear\", function (currentMatch, index) {\n      var _this$props3 = _this.props,\n          autoFocus = _this$props3.autoFocus,\n          yearAriaLabel = _this$props3.yearAriaLabel,\n          yearPlaceholder = _this$props3.yearPlaceholder;\n      var year = _this.state.year;\n      return /*#__PURE__*/_react[\"default\"].createElement(_YearInput[\"default\"], _extends({\n        key: \"year\"\n      }, _this.commonInputProps, {\n        ariaLabel: yearAriaLabel // eslint-disable-next-line jsx-a11y/no-autofocus\n        ,\n        autoFocus: index === 0 && autoFocus,\n        inputRef: _this.yearInput,\n        placeholder: yearPlaceholder,\n        value: year,\n        valueType: _this.valueType\n      }));\n    });\n\n    return _this;\n  }\n\n  _createClass(DateInput, [{\n    key: \"formatDate\",\n    get: function get() {\n      var maxDetail = this.props.maxDetail;\n      var options = {\n        year: 'numeric'\n      };\n      var level = allViews.indexOf(maxDetail);\n\n      if (level >= 2) {\n        options.month = 'numeric';\n      }\n\n      if (level >= 3) {\n        options.day = 'numeric';\n      }\n\n      return (0, _dateFormatter.getFormatter)(options);\n    }\n    /**\n     * Gets current value in a desired format.\n     */\n\n  }, {\n    key: \"getProcessedValue\",\n    value: function getProcessedValue(value) {\n      var _this$props4 = this.props,\n          minDate = _this$props4.minDate,\n          maxDate = _this$props4.maxDate,\n          maxDetail = _this$props4.maxDetail,\n          returnValue = _this$props4.returnValue;\n\n      var processFunction = function () {\n        switch (returnValue) {\n          case 'start':\n            return getDetailValueFrom;\n\n          case 'end':\n            return getDetailValueTo;\n\n          case 'range':\n            return getDetailValueArray;\n\n          default:\n            throw new Error('Invalid returnValue.');\n        }\n      }();\n\n      return processFunction({\n        value: value,\n        minDate: minDate,\n        maxDate: maxDate,\n        maxDetail: maxDetail\n      });\n    }\n  }, {\n    key: \"divider\",\n    get: function get() {\n      var dividers = this.placeholder.match(/[^0-9a-z]/i);\n      return dividers ? dividers[0] : null;\n    }\n  }, {\n    key: \"placeholder\",\n    get: function get() {\n      var _this$props5 = this.props,\n          format = _this$props5.format,\n          locale = _this$props5.locale;\n\n      if (format) {\n        return format;\n      }\n\n      var year = 2017;\n      var monthIndex = 11;\n      var day = 11;\n      var date = new Date(year, monthIndex, day);\n      var formattedDate = this.formatDate(locale, date);\n      var datePieces = ['year', 'month', 'day'];\n      var datePieceReplacements = ['y', 'M', 'd'];\n\n      function formatDatePiece(name, dateToFormat) {\n        return (0, _dateFormatter.getFormatter)(_defineProperty({\n          useGrouping: false\n        }, name, 'numeric'))(locale, dateToFormat).match(/\\d{1,}/);\n      }\n\n      var placeholder = formattedDate;\n      datePieces.forEach(function (datePiece, index) {\n        var formattedDatePiece = formatDatePiece(datePiece, date);\n        var datePieceReplacement = datePieceReplacements[index];\n        placeholder = placeholder.replace(formattedDatePiece, datePieceReplacement);\n      }); // See: https://github.com/wojtekmaj/react-date-picker/issues/396\n\n      placeholder = placeholder.replace('17', 'y');\n      return placeholder;\n    }\n  }, {\n    key: \"commonInputProps\",\n    get: function get() {\n      var _this$props6 = this.props,\n          className = _this$props6.className,\n          disabled = _this$props6.disabled,\n          isCalendarOpen = _this$props6.isCalendarOpen,\n          maxDate = _this$props6.maxDate,\n          minDate = _this$props6.minDate,\n          required = _this$props6.required;\n      return {\n        className: className,\n        disabled: disabled,\n        maxDate: maxDate || defaultMaxDate,\n        minDate: minDate || defaultMinDate,\n        onChange: this.onChange,\n        onKeyDown: this.onKeyDown,\n        onKeyUp: this.onKeyUp,\n        // This is only for showing validity when editing\n        required: required || isCalendarOpen\n      };\n    }\n  }, {\n    key: \"valueType\",\n    get: function get() {\n      var maxDetail = this.props.maxDetail;\n      return getValueType(maxDetail);\n    }\n  }, {\n    key: \"renderCustomInputs\",\n    value: function renderCustomInputs() {\n      var placeholder = this.placeholder;\n      var format = this.props.format;\n      var elementFunctions = {\n        d: this.renderDay,\n        M: this.renderMonth,\n        y: this.renderYear\n      };\n      var allowMultipleInstances = typeof format !== 'undefined';\n      return _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances);\n    }\n  }, {\n    key: \"renderNativeInput\",\n    value: function renderNativeInput() {\n      var _this$props7 = this.props,\n          disabled = _this$props7.disabled,\n          maxDate = _this$props7.maxDate,\n          minDate = _this$props7.minDate,\n          name = _this$props7.name,\n          nativeInputAriaLabel = _this$props7.nativeInputAriaLabel,\n          required = _this$props7.required;\n      var value = this.state.value;\n      return /*#__PURE__*/_react[\"default\"].createElement(_NativeInput[\"default\"], {\n        key: \"date\",\n        ariaLabel: nativeInputAriaLabel,\n        disabled: disabled,\n        maxDate: maxDate || defaultMaxDate,\n        minDate: minDate || defaultMinDate,\n        name: name,\n        onChange: this.onChangeNative,\n        required: required,\n        value: value,\n        valueType: this.valueType\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var className = this.props.className;\n      return (\n        /*#__PURE__*/\n        // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n        _react[\"default\"].createElement(\"div\", {\n          className: className,\n          onClick: this.onClick\n        }, this.renderNativeInput(), this.renderCustomInputs())\n      );\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var minDate = nextProps.minDate,\n          maxDate = nextProps.maxDate,\n          maxDetail = nextProps.maxDetail;\n      var nextState = {};\n      /**\n       * If isCalendarOpen flag has changed, we have to update it.\n       * It's saved in state purely for use in getDerivedStateFromProps.\n       */\n\n      if (nextProps.isCalendarOpen !== prevState.isCalendarOpen) {\n        nextState.isCalendarOpen = nextProps.isCalendarOpen;\n      }\n      /**\n       * If the next value is different from the current one  (with an exception of situation in\n       * which values provided are limited by minDate and maxDate so that the dates are the same),\n       * get a new one.\n       */\n\n\n      var nextValue = getDetailValueFrom({\n        value: nextProps.value,\n        minDate: minDate,\n        maxDate: maxDate,\n        maxDetail: maxDetail\n      });\n      var values = [nextValue, prevState.value];\n\n      if ( // Toggling calendar visibility resets values\n      nextState.isCalendarOpen || // Flag was toggled\n      datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n        return getDetailValueFrom({\n          value: value,\n          minDate: minDate,\n          maxDate: maxDate,\n          maxDetail: maxDetail\n        });\n      }))) || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n        return getDetailValueTo({\n          value: value,\n          minDate: minDate,\n          maxDate: maxDate,\n          maxDetail: maxDetail\n        });\n      })))) {\n        if (nextValue) {\n          nextState.year = (0, _dateUtils.getYear)(nextValue).toString();\n          nextState.month = (0, _dateUtils.getMonthHuman)(nextValue).toString();\n          nextState.day = (0, _dateUtils.getDate)(nextValue).toString();\n        } else {\n          nextState.year = null;\n          nextState.month = null;\n          nextState.day = null;\n        }\n\n        nextState.value = nextValue;\n      }\n\n      return nextState;\n    }\n  }]);\n\n  return DateInput;\n}(_react.PureComponent);\n\nexports[\"default\"] = DateInput;\nDateInput.defaultProps = {\n  maxDetail: 'month',\n  name: 'date',\n  returnValue: 'start'\n};\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\n\nDateInput.propTypes = {\n  autoFocus: _propTypes[\"default\"].bool,\n  className: _propTypes[\"default\"].string.isRequired,\n  dayAriaLabel: _propTypes[\"default\"].string,\n  dayPlaceholder: _propTypes[\"default\"].string,\n  disabled: _propTypes[\"default\"].bool,\n  format: _propTypes[\"default\"].string,\n  isCalendarOpen: _propTypes[\"default\"].bool,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  maxDetail: _propTypes[\"default\"].oneOf(allViews),\n  minDate: _propTypes2.isMinDate,\n  monthAriaLabel: _propTypes[\"default\"].string,\n  monthPlaceholder: _propTypes[\"default\"].string,\n  name: _propTypes[\"default\"].string,\n  nativeInputAriaLabel: _propTypes[\"default\"].string,\n  onChange: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  returnValue: _propTypes[\"default\"].oneOf(['start', 'end', 'range']),\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n  yearAriaLabel: _propTypes[\"default\"].string,\n  yearPlaceholder: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Divider;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Divider(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n    className: \"react-date-picker__inputGroup__divider\"\n  }, children);\n}\n\nDivider.propTypes = {\n  children: _propTypes[\"default\"].node\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = DayInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nvar _excluded = [\"maxDate\", \"minDate\", \"month\", \"year\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction DayInput(_ref) {\n  var maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      month = _ref.month,\n      year = _ref.year,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var currentMonthMaxDays = function () {\n    if (!month) {\n      return 31;\n    }\n\n    return (0, _dateUtils.getDaysInMonth)(new Date(year, month - 1, 1));\n  }();\n\n  function isSameMonth(date) {\n    return date && year === (0, _dateUtils.getYear)(date).toString() && month === (0, _dateUtils.getMonthHuman)(date).toString();\n  }\n\n  var maxDay = (0, _utils.safeMin)(currentMonthMaxDays, isSameMonth(maxDate) && (0, _dateUtils.getDate)(maxDate));\n  var minDay = (0, _utils.safeMax)(1, isSameMonth(minDate) && (0, _dateUtils.getDate)(minDate));\n  return /*#__PURE__*/_react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxDay,\n    min: minDay,\n    name: \"day\"\n  }, otherProps));\n}\n\nDayInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  inputRef: _propTypes2.isRef,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  month: _propTypes[\"default\"].string,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].string,\n  year: _propTypes[\"default\"].string\n};","/**\n * A function that merges React refs into one.\n * Supports both functions and ref objects created using createRef() and useRef().\n *\n * Usage:\n * ```jsx\n * <div ref={mergeRefs(ref1, ref2, ref3)} />\n * ```\n *\n * @param {(React.Ref<T> | undefined)[]} inputRefs Array of refs\n * @returns {React.Ref<T> | React.RefCallback<T>} Merged refs\n */\nexport default function mergeRefs() {\n    var inputRefs = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        inputRefs[_i] = arguments[_i];\n    }\n    var filteredInputRefs = inputRefs.filter(Boolean);\n    if (filteredInputRefs.length <= 1) {\n        var firstRef = filteredInputRefs[0];\n        return firstRef || null;\n    }\n    return function mergedRefs(ref) {\n        filteredInputRefs.forEach(function (inputRef) {\n            if (typeof inputRef === 'function') {\n                inputRef(ref);\n            }\n            else if (inputRef) {\n                inputRef.current = ref;\n            }\n        });\n    };\n}\n","var allowedVariants = ['normal', 'small-caps'];\n/**\n * Gets font CSS shorthand property given element.\n *\n * @param {HTMLElement} element Element to get font CSS shorthand property from\n */\nexport function getFontShorthand(element) {\n    if (!element) {\n        return '';\n    }\n    var style = window.getComputedStyle(element);\n    if (style.font) {\n        return style.font;\n    }\n    var isFontDefined = style.fontFamily !== '';\n    if (!isFontDefined) {\n        return '';\n    }\n    var fontVariant = allowedVariants.includes(style.fontVariant) ? style.fontVariant : 'normal';\n    return \"\".concat(style.fontStyle, \" \").concat(fontVariant, \" \").concat(style.fontWeight, \" \").concat(style.fontSize, \" / \").concat(style.lineHeight, \" \").concat(style.fontFamily);\n}\nvar cachedCanvas;\n/**\n * Measures text width given text and font CSS shorthand.\n *\n * @param {string} text Text to measure\n * @param {string} font Font to use when measuring the text\n */\nexport function measureText(text, font) {\n    var canvas = cachedCanvas || (cachedCanvas = document.createElement('canvas'));\n    var context = canvas.getContext('2d');\n    // Context type not supported\n    if (!context) {\n        return null;\n    }\n    context.font = font;\n    var width = context.measureText(text).width;\n    return Math.ceil(width);\n}\n/**\n * Updates input element width to fit its content given input element\n * @param {HTMLInputElement} element\n */\nexport function updateInputWidth(element) {\n    if (typeof document === 'undefined' || !element) {\n        return null;\n    }\n    var font = getFontShorthand(element);\n    var text = element.value || element.placeholder;\n    var width = measureText(text, font);\n    if (width === null) {\n        return null;\n    }\n    element.style.width = \"\".concat(width, \"px\");\n    return width;\n}\nexport default updateInputWidth;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = MonthInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nvar _excluded = [\"maxDate\", \"minDate\", \"year\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction MonthInput(_ref) {\n  var maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      year = _ref.year,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  function isSameYear(date) {\n    return date && year === (0, _dateUtils.getYear)(date).toString();\n  }\n\n  var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n  var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n  return /*#__PURE__*/_react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxMonth,\n    min: minMonth,\n    name: \"month\"\n  }, otherProps));\n}\n\nMonthInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  inputRef: _propTypes2.isRef,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].string,\n  year: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = MonthSelect;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nvar _excluded = [\"ariaLabel\", \"className\", \"inputRef\", \"locale\", \"maxDate\", \"minDate\", \"placeholder\", \"short\", \"value\", \"year\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction MonthSelect(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      className = _ref.className,\n      inputRef = _ref.inputRef,\n      locale = _ref.locale,\n      maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n      _short = _ref[\"short\"],\n      value = _ref.value,\n      year = _ref.year,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  function isSameYear(date) {\n    return date && year === (0, _dateUtils.getYear)(date).toString();\n  }\n\n  var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n  var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n\n  var dates = _toConsumableArray(Array(12)).map(function (el, index) {\n    return new Date(2019, index, 1);\n  });\n\n  var name = 'month';\n  var formatter = _short ? _dateFormatter.formatShortMonth : _dateFormatter.formatMonth;\n  return /*#__PURE__*/_react[\"default\"].createElement(\"select\", _extends({\n    \"aria-label\": ariaLabel,\n    className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(name)),\n    \"data-input\": \"true\",\n    \"data-select\": \"true\",\n    name: name,\n    ref: inputRef,\n    value: value !== null ? value : ''\n  }, otherProps), !value && /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n    value: \"\"\n  }, placeholder), dates.map(function (date) {\n    var month = (0, _dateUtils.getMonthHuman)(date);\n    var disabled = month < minMonth || month > maxMonth;\n    return /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n      key: month,\n      disabled: disabled,\n      value: month\n    }, formatter(locale, date));\n  }));\n}\n\nMonthSelect.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  inputRef: _propTypes2.isRef,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  \"short\": _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].string,\n  year: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = YearInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nvar _excluded = [\"maxDate\", \"minDate\", \"placeholder\", \"valueType\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction YearInput(_ref) {\n  var maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '----' : _ref$placeholder,\n      valueType = _ref.valueType,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var maxYear = (0, _utils.safeMin)(275760, maxDate && (0, _dateUtils.getYear)(maxDate));\n  var minYear = (0, _utils.safeMax)(1, minDate && (0, _dateUtils.getYear)(minDate));\n\n  var yearStep = function () {\n    if (valueType === 'century') {\n      return 10;\n    }\n\n    return 1;\n  }();\n\n  return /*#__PURE__*/_react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxYear,\n    min: minYear,\n    name: \"year\",\n    placeholder: placeholder,\n    step: yearStep\n  }, otherProps));\n}\n\nYearInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  inputRef: _propTypes2.isRef,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].string,\n  valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = NativeInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction NativeInput(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      disabled = _ref.disabled,\n      maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      name = _ref.name,\n      onChange = _ref.onChange,\n      required = _ref.required,\n      value = _ref.value,\n      valueType = _ref.valueType;\n\n  var nativeInputType = function () {\n    switch (valueType) {\n      case 'decade':\n      case 'year':\n        return 'number';\n\n      case 'month':\n        return 'month';\n\n      case 'day':\n        return 'date';\n\n      default:\n        throw new Error('Invalid valueType.');\n    }\n  }();\n\n  var nativeValueParser = function () {\n    switch (valueType) {\n      case 'century':\n      case 'decade':\n      case 'year':\n        return _dateUtils.getYear;\n\n      case 'month':\n        return _dateUtils.getISOLocalMonth;\n\n      case 'day':\n        return _dateUtils.getISOLocalDate;\n\n      default:\n        throw new Error('Invalid valueType.');\n    }\n  }();\n\n  function stopPropagation(event) {\n    event.stopPropagation();\n  }\n\n  return /*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n    \"aria-label\": ariaLabel,\n    disabled: disabled,\n    max: maxDate ? nativeValueParser(maxDate) : null,\n    min: minDate ? nativeValueParser(minDate) : null,\n    name: name,\n    onChange: onChange,\n    onFocus: stopPropagation,\n    required: required,\n    style: {\n      visibility: 'hidden',\n      position: 'absolute',\n      zIndex: '-999'\n    },\n    type: nativeInputType,\n    value: value ? nativeValueParser(value) : ''\n  });\n}\n\nNativeInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  disabled: _propTypes[\"default\"].bool,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  name: _propTypes[\"default\"].string,\n  onChange: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]),\n  valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getBegin = getBegin;\nexports.getEnd = getEnd;\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\n/**\n * Returns the beginning of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\nfunction getBegin(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return (0, _dateUtils.getCenturyStart)(date);\n\n    case 'decade':\n      return (0, _dateUtils.getDecadeStart)(date);\n\n    case 'year':\n      return (0, _dateUtils.getYearStart)(date);\n\n    case 'month':\n      return (0, _dateUtils.getMonthStart)(date);\n\n    case 'day':\n      return (0, _dateUtils.getDayStart)(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n/**\n * Returns the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\n\nfunction getEnd(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return (0, _dateUtils.getCenturyEnd)(date);\n\n    case 'decade':\n      return (0, _dateUtils.getDecadeEnd)(date);\n\n    case 'year':\n      return (0, _dateUtils.getYearEnd)(date);\n\n    case 'month':\n      return (0, _dateUtils.getMonthEnd)(date);\n\n    case 'day':\n      return (0, _dateUtils.getDayEnd)(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n  return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n *   http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n//   http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n//   http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param  {BitMatrix} matrix  Modules matrix\n * @param  {Number}    version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n  const size = matrix.size\n  const pos = FinderPattern.getPositions(version)\n\n  for (let i = 0; i < pos.length; i++) {\n    const row = pos[i][0]\n    const col = pos[i][1]\n\n    for (let r = -1; r <= 7; r++) {\n      if (row + r <= -1 || size <= row + r) continue\n\n      for (let c = -1; c <= 7; c++) {\n        if (col + c <= -1 || size <= col + c) continue\n\n        if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n          (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n          (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n          matrix.set(row + r, col + c, true, true)\n        } else {\n          matrix.set(row + r, col + c, false, true)\n        }\n      }\n    }\n  }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param  {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n  const size = matrix.size\n\n  for (let r = 8; r < size - 8; r++) {\n    const value = r % 2 === 0\n    matrix.set(r, 6, value, true)\n    matrix.set(6, r, value, true)\n  }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param  {BitMatrix} matrix  Modules matrix\n * @param  {Number}    version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n  const pos = AlignmentPattern.getPositions(version)\n\n  for (let i = 0; i < pos.length; i++) {\n    const row = pos[i][0]\n    const col = pos[i][1]\n\n    for (let r = -2; r <= 2; r++) {\n      for (let c = -2; c <= 2; c++) {\n        if (r === -2 || r === 2 || c === -2 || c === 2 ||\n          (r === 0 && c === 0)) {\n          matrix.set(row + r, col + c, true, true)\n        } else {\n          matrix.set(row + r, col + c, false, true)\n        }\n      }\n    }\n  }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param  {BitMatrix} matrix  Modules matrix\n * @param  {Number}    version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n  const size = matrix.size\n  const bits = Version.getEncodedBits(version)\n  let row, col, mod\n\n  for (let i = 0; i < 18; i++) {\n    row = Math.floor(i / 3)\n    col = i % 3 + size - 8 - 3\n    mod = ((bits >> i) & 1) === 1\n\n    matrix.set(row, col, mod, true)\n    matrix.set(col, row, mod, true)\n  }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param  {BitMatrix} matrix               Modules matrix\n * @param  {ErrorCorrectionLevel}    errorCorrectionLevel Error correction level\n * @param  {Number}    maskPattern          Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n  const size = matrix.size\n  const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n  let i, mod\n\n  for (i = 0; i < 15; i++) {\n    mod = ((bits >> i) & 1) === 1\n\n    // vertical\n    if (i < 6) {\n      matrix.set(i, 8, mod, true)\n    } else if (i < 8) {\n      matrix.set(i + 1, 8, mod, true)\n    } else {\n      matrix.set(size - 15 + i, 8, mod, true)\n    }\n\n    // horizontal\n    if (i < 8) {\n      matrix.set(8, size - i - 1, mod, true)\n    } else if (i < 9) {\n      matrix.set(8, 15 - i - 1 + 1, mod, true)\n    } else {\n      matrix.set(8, 15 - i - 1, mod, true)\n    }\n  }\n\n  // fixed module\n  matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param  {BitMatrix}  matrix Modules matrix\n * @param  {Uint8Array} data   Data codewords\n */\nfunction setupData (matrix, data) {\n  const size = matrix.size\n  let inc = -1\n  let row = size - 1\n  let bitIndex = 7\n  let byteIndex = 0\n\n  for (let col = size - 1; col > 0; col -= 2) {\n    if (col === 6) col--\n\n    while (true) {\n      for (let c = 0; c < 2; c++) {\n        if (!matrix.isReserved(row, col - c)) {\n          let dark = false\n\n          if (byteIndex < data.length) {\n            dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n          }\n\n          matrix.set(row, col - c, dark)\n          bitIndex--\n\n          if (bitIndex === -1) {\n            byteIndex++\n            bitIndex = 7\n          }\n        }\n      }\n\n      row += inc\n\n      if (row < 0 || size <= row) {\n        row -= inc\n        inc = -inc\n        break\n      }\n    }\n  }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param  {Number}   version              QR Code version\n * @param  {ErrorCorrectionLevel}   errorCorrectionLevel Error correction level\n * @param  {ByteData} data                 Data input\n * @return {Uint8Array}                    Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n  // Prepare data buffer\n  const buffer = new BitBuffer()\n\n  segments.forEach(function (data) {\n    // prefix data with mode indicator (4 bits)\n    buffer.put(data.mode.bit, 4)\n\n    // Prefix data with character count indicator.\n    // The character count indicator is a string of bits that represents the\n    // number of characters that are being encoded.\n    // The character count indicator must be placed after the mode indicator\n    // and must be a certain number of bits long, depending on the QR version\n    // and data mode\n    // @see {@link Mode.getCharCountIndicator}.\n    buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n    // add binary data sequence to buffer\n    data.write(buffer)\n  })\n\n  // Calculate required number of bits\n  const totalCodewords = Utils.getSymbolTotalCodewords(version)\n  const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n  const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n  // Add a terminator.\n  // If the bit string is shorter than the total number of required bits,\n  // a terminator of up to four 0s must be added to the right side of the string.\n  // If the bit string is more than four bits shorter than the required number of bits,\n  // add four 0s to the end.\n  if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n    buffer.put(0, 4)\n  }\n\n  // If the bit string is fewer than four bits shorter, add only the number of 0s that\n  // are needed to reach the required number of bits.\n\n  // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n  // pad the string on the right with 0s to make the string's length a multiple of 8.\n  while (buffer.getLengthInBits() % 8 !== 0) {\n    buffer.putBit(0)\n  }\n\n  // Add pad bytes if the string is still shorter than the total number of required bits.\n  // Extend the buffer to fill the data capacity of the symbol corresponding to\n  // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n  // and 00010001 (0x11) alternately.\n  const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n  for (let i = 0; i < remainingByte; i++) {\n    buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n  }\n\n  return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param  {BitBuffer} bitBuffer            Data to encode\n * @param  {Number}    version              QR Code version\n * @param  {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array}                     Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n  // Total codewords for this QR code version (Data + Error correction)\n  const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n  // Total number of error correction codewords\n  const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n  // Total number of data codewords\n  const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n  // Total number of blocks\n  const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n  // Calculate how many blocks each group should contain\n  const blocksInGroup2 = totalCodewords % ecTotalBlocks\n  const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n  const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n  const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n  const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n  // Number of EC codewords is the same for both groups\n  const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n  // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n  const rs = new ReedSolomonEncoder(ecCount)\n\n  let offset = 0\n  const dcData = new Array(ecTotalBlocks)\n  const ecData = new Array(ecTotalBlocks)\n  let maxDataSize = 0\n  const buffer = new Uint8Array(bitBuffer.buffer)\n\n  // Divide the buffer into the required number of blocks\n  for (let b = 0; b < ecTotalBlocks; b++) {\n    const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n    // extract a block of data from buffer\n    dcData[b] = buffer.slice(offset, offset + dataSize)\n\n    // Calculate EC codewords for this data block\n    ecData[b] = rs.encode(dcData[b])\n\n    offset += dataSize\n    maxDataSize = Math.max(maxDataSize, dataSize)\n  }\n\n  // Create final data\n  // Interleave the data and error correction codewords from each block\n  const data = new Uint8Array(totalCodewords)\n  let index = 0\n  let i, r\n\n  // Add data codewords\n  for (i = 0; i < maxDataSize; i++) {\n    for (r = 0; r < ecTotalBlocks; r++) {\n      if (i < dcData[r].length) {\n        data[index++] = dcData[r][i]\n      }\n    }\n  }\n\n  // Apped EC codewords\n  for (i = 0; i < ecCount; i++) {\n    for (r = 0; r < ecTotalBlocks; r++) {\n      data[index++] = ecData[r][i]\n    }\n  }\n\n  return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param  {String} data                 Input string\n * @param  {Number} version              QR Code version\n * @param  {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param  {MaskPattern} maskPattern     Mask pattern\n * @return {Object}                      Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n  let segments\n\n  if (Array.isArray(data)) {\n    segments = Segments.fromArray(data)\n  } else if (typeof data === 'string') {\n    let estimatedVersion = version\n\n    if (!estimatedVersion) {\n      const rawSegments = Segments.rawSplit(data)\n\n      // Estimate best version that can contain raw splitted segments\n      estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n    }\n\n    // Build optimized segments\n    // If estimated version is undefined, try with the highest version\n    segments = Segments.fromString(data, estimatedVersion || 40)\n  } else {\n    throw new Error('Invalid data')\n  }\n\n  // Get the min version that can contain data\n  const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n  // If no version is found, data cannot be stored\n  if (!bestVersion) {\n    throw new Error('The amount of data is too big to be stored in a QR Code')\n  }\n\n  // If not specified, use min version as default\n  if (!version) {\n    version = bestVersion\n\n  // Check if the specified version can contain the data\n  } else if (version < bestVersion) {\n    throw new Error('\\n' +\n      'The chosen QR Code version cannot contain this amount of data.\\n' +\n      'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n    )\n  }\n\n  const dataBits = createData(version, errorCorrectionLevel, segments)\n\n  // Allocate matrix buffer\n  const moduleCount = Utils.getSymbolSize(version)\n  const modules = new BitMatrix(moduleCount)\n\n  // Add function modules\n  setupFinderPattern(modules, version)\n  setupTimingPattern(modules)\n  setupAlignmentPattern(modules, version)\n\n  // Add temporary dummy bits for format info just to set them as reserved.\n  // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n  // since the masking operation must be performed only on the encoding region.\n  // These blocks will be replaced with correct values later in code.\n  setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n  if (version >= 7) {\n    setupVersionInfo(modules, version)\n  }\n\n  // Add data codewords\n  setupData(modules, dataBits)\n\n  if (isNaN(maskPattern)) {\n    // Find best mask pattern\n    maskPattern = MaskPattern.getBestMask(modules,\n      setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n  }\n\n  // Apply mask pattern\n  MaskPattern.applyMask(maskPattern, modules)\n\n  // Replace format info bits with correct values\n  setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n  return {\n    modules: modules,\n    version: version,\n    errorCorrectionLevel: errorCorrectionLevel,\n    maskPattern: maskPattern,\n    segments: segments\n  }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data                 Input data\n * @param {Object} options                      Optional configurations\n * @param {Number} options.version              QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc         Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n  if (typeof data === 'undefined' || data === '') {\n    throw new Error('No input text')\n  }\n\n  let errorCorrectionLevel = ECLevel.M\n  let version\n  let mask\n\n  if (typeof options !== 'undefined') {\n    // Use higher error correction level as default\n    errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n    version = Version.from(options.version)\n    mask = MaskPattern.from(options.maskPattern)\n\n    if (options.toSJISFunc) {\n      Utils.setToSJISFunction(options.toSJISFunc)\n    }\n  }\n\n  return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","function BitBuffer () {\n  this.buffer = []\n  this.length = 0\n}\n\nBitBuffer.prototype = {\n\n  get: function (index) {\n    const bufIndex = Math.floor(index / 8)\n    return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n  },\n\n  put: function (num, length) {\n    for (let i = 0; i < length; i++) {\n      this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n    }\n  },\n\n  getLengthInBits: function () {\n    return this.length\n  },\n\n  putBit: function (bit) {\n    const bufIndex = Math.floor(this.length / 8)\n    if (this.buffer.length <= bufIndex) {\n      this.buffer.push(0)\n    }\n\n    if (bit) {\n      this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n    }\n\n    this.length++\n  }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n  if (!size || size < 1) {\n    throw new Error('BitMatrix size must be defined and greater than 0')\n  }\n\n  this.size = size\n  this.data = new Uint8Array(size * size)\n  this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number}  row\n * @param {Number}  col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n  const index = row * this.size + col\n  this.data[index] = value\n  if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param  {Number}  row\n * @param  {Number}  col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n  return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number}  row\n * @param {Number}  col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n  this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number}   row\n * @param {Number}   col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n  return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param  {Number} version QR Code version\n * @return {Array}          Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n  if (version === 1) return []\n\n  const posCount = Math.floor(version / 7) + 2\n  const size = getSymbolSize(version)\n  const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n  const positions = [size - 7] // Last coord is always (size - 7)\n\n  for (let i = 1; i < posCount - 1; i++) {\n    positions[i] = positions[i - 1] - intervals\n  }\n\n  positions.push(6) // First coord is always 6\n\n  return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param  {Number} version QR Code version\n * @return {Array}          Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n  const coords = []\n  const pos = exports.getRowColCoords(version)\n  const posLength = pos.length\n\n  for (let i = 0; i < posLength; i++) {\n    for (let j = 0; j < posLength; j++) {\n      // Skip if position is occupied by finder patterns\n      if ((i === 0 && j === 0) || // top-left\n          (i === 0 && j === posLength - 1) || // bottom-left\n          (i === posLength - 1 && j === 0)) { // top-right\n        continue\n      }\n\n      coords.push([pos[i], pos[j]])\n    }\n  }\n\n  return coords\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param  {Number} version QR Code version\n * @return {Array}          Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n  const size = getSymbolSize(version)\n\n  return [\n    // top-left\n    [0, 0],\n    // top-right\n    [size - FINDER_PATTERN_SIZE, 0],\n    // bottom-left\n    [0, size - FINDER_PATTERN_SIZE]\n  ]\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n  PATTERN000: 0,\n  PATTERN001: 1,\n  PATTERN010: 2,\n  PATTERN011: 3,\n  PATTERN100: 4,\n  PATTERN101: 5,\n  PATTERN110: 6,\n  PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n  N1: 3,\n  N2: 3,\n  N3: 40,\n  N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param  {Number}  mask    Mask pattern\n * @return {Boolean}         true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n  return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param  {Number|String} value        Mask pattern value\n * @return {Number}                     Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n  return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n  const size = data.size\n  let points = 0\n  let sameCountCol = 0\n  let sameCountRow = 0\n  let lastCol = null\n  let lastRow = null\n\n  for (let row = 0; row < size; row++) {\n    sameCountCol = sameCountRow = 0\n    lastCol = lastRow = null\n\n    for (let col = 0; col < size; col++) {\n      let module = data.get(row, col)\n      if (module === lastCol) {\n        sameCountCol++\n      } else {\n        if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n        lastCol = module\n        sameCountCol = 1\n      }\n\n      module = data.get(col, row)\n      if (module === lastRow) {\n        sameCountRow++\n      } else {\n        if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n        lastRow = module\n        sameCountRow = 1\n      }\n    }\n\n    if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n    if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n  }\n\n  return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n  const size = data.size\n  let points = 0\n\n  for (let row = 0; row < size - 1; row++) {\n    for (let col = 0; col < size - 1; col++) {\n      const last = data.get(row, col) +\n        data.get(row, col + 1) +\n        data.get(row + 1, col) +\n        data.get(row + 1, col + 1)\n\n      if (last === 4 || last === 0) points++\n    }\n  }\n\n  return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n  const size = data.size\n  let points = 0\n  let bitsCol = 0\n  let bitsRow = 0\n\n  for (let row = 0; row < size; row++) {\n    bitsCol = bitsRow = 0\n    for (let col = 0; col < size; col++) {\n      bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n      if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n      bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n      if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n    }\n  }\n\n  return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n  let darkCount = 0\n  const modulesCount = data.data.length\n\n  for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n  const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n  return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param  {Number} maskPattern Pattern reference value\n * @param  {Number} i           Row\n * @param  {Number} j           Column\n * @return {Boolean}            Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n  switch (maskPattern) {\n    case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n    case exports.Patterns.PATTERN001: return i % 2 === 0\n    case exports.Patterns.PATTERN010: return j % 3 === 0\n    case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n    case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n    case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n    case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n    case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n    default: throw new Error('bad maskPattern:' + maskPattern)\n  }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param  {Number}    pattern Pattern reference number\n * @param  {BitMatrix} data    BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n  const size = data.size\n\n  for (let col = 0; col < size; col++) {\n    for (let row = 0; row < size; row++) {\n      if (data.isReserved(row, col)) continue\n      data.xor(row, col, getMaskAt(pattern, row, col))\n    }\n  }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param  {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n  const numPatterns = Object.keys(exports.Patterns).length\n  let bestPattern = 0\n  let lowerPenalty = Infinity\n\n  for (let p = 0; p < numPatterns; p++) {\n    setupFormatFunc(p)\n    exports.applyMask(p, data)\n\n    // Calculate penalty\n    const penalty =\n      exports.getPenaltyN1(data) +\n      exports.getPenaltyN2(data) +\n      exports.getPenaltyN3(data) +\n      exports.getPenaltyN4(data)\n\n    // Undo previously applied mask\n    exports.applyMask(p, data)\n\n    if (penalty < lowerPenalty) {\n      lowerPenalty = penalty\n      bestPattern = p\n    }\n  }\n\n  return bestPattern\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n  this.genPoly = undefined\n  this.degree = degree\n\n  if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param  {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n  // create an irreducible generator polynomial\n  this.degree = degree\n  this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param  {Uint8Array} data Buffer containing input data\n * @return {Uint8Array}      Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n  if (!this.genPoly) {\n    throw new Error('Encoder not initialized')\n  }\n\n  // Calculate EC for this data block\n  // extends data size to data+genPoly size\n  const paddedData = new Uint8Array(data.length + this.degree)\n  paddedData.set(data)\n\n  // The error correction codewords are the remainder after dividing the data codewords\n  // by a generator polynomial\n  const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n  // return EC data blocks (last n byte, where n is the degree of genPoly)\n  // If coefficients number in remainder are less than genPoly degree,\n  // pad with 0s to the left to reach the needed number of coefficients\n  const start = this.degree - remainder.length\n  if (start > 0) {\n    const buff = new Uint8Array(this.degree)\n    buff.set(remainder, start)\n\n    return buff\n  }\n\n  return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param  {Uint8Array} p1 Polynomial\n * @param  {Uint8Array} p2 Polynomial\n * @return {Uint8Array}    Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n  const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n  for (let i = 0; i < p1.length; i++) {\n    for (let j = 0; j < p2.length; j++) {\n      coeff[i + j] ^= GF.mul(p1[i], p2[j])\n    }\n  }\n\n  return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param  {Uint8Array} divident Polynomial\n * @param  {Uint8Array} divisor  Polynomial\n * @return {Uint8Array}          Remainder\n */\nexports.mod = function mod (divident, divisor) {\n  let result = new Uint8Array(divident)\n\n  while ((result.length - divisor.length) >= 0) {\n    const coeff = result[0]\n\n    for (let i = 0; i < divisor.length; i++) {\n      result[i] ^= GF.mul(divisor[i], coeff)\n    }\n\n    // remove all zeros from buffer head\n    let offset = 0\n    while (offset < result.length && result[offset] === 0) offset++\n    result = result.slice(offset)\n  }\n\n  return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param  {Number} degree Degree of the generator polynomial\n * @return {Uint8Array}    Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n  let poly = new Uint8Array([1])\n  for (let i = 0; i < degree; i++) {\n    poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n  }\n\n  return poly\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n  let x = 1\n  for (let i = 0; i < 255; i++) {\n    EXP_TABLE[i] = x\n    LOG_TABLE[x] = i\n\n    x <<= 1 // multiply by 2\n\n    // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n    // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n    if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n      x ^= 0x11D\n    }\n  }\n\n  // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n  // stay inside the bounds (because we will mainly use this table for the multiplication of\n  // two GF numbers, no more).\n  // @see {@link mul}\n  for (let i = 255; i < 512; i++) {\n    EXP_TABLE[i] = EXP_TABLE[i - 255]\n  }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param  {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n  if (n < 1) throw new Error('log(' + n + ')')\n  return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param  {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n  return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param  {Number} x\n * @param  {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n  if (x === 0 || y === 0) return 0\n\n  // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n  // @see {@link initTables}\n  return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n  for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n    if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n      return currentVersion\n    }\n  }\n\n  return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n  // Character count indicator + mode indicator bits\n  return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n  let totalBits = 0\n\n  segments.forEach(function (data) {\n    const reservedBits = getReservedBitsCount(data.mode, version)\n    totalBits += reservedBits + data.getBitsLength()\n  })\n\n  return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n  for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n    const length = getTotalBitsFromDataArray(segments, currentVersion)\n    if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n      return currentVersion\n    }\n  }\n\n  return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param  {Number|String} value        QR Code version\n * @param  {Number}        defaultValue Fallback value\n * @return {Number}                     QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n  if (VersionCheck.isValid(value)) {\n    return parseInt(value, 10)\n  }\n\n  return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param  {Number} version              QR Code version (1-40)\n * @param  {Number} errorCorrectionLevel Error correction level\n * @param  {Mode}   mode                 Data mode\n * @return {Number}                      Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n  if (!VersionCheck.isValid(version)) {\n    throw new Error('Invalid QR Code version')\n  }\n\n  // Use Byte mode as default\n  if (typeof mode === 'undefined') mode = Mode.BYTE\n\n  // Total codewords for this QR code version (Data + Error correction)\n  const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n  // Total number of error correction codewords\n  const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n  // Total number of data codewords\n  const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n  if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n  const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n  // Return max number of storable codewords\n  switch (mode) {\n    case Mode.NUMERIC:\n      return Math.floor((usableBits / 10) * 3)\n\n    case Mode.ALPHANUMERIC:\n      return Math.floor((usableBits / 11) * 2)\n\n    case Mode.KANJI:\n      return Math.floor(usableBits / 13)\n\n    case Mode.BYTE:\n    default:\n      return Math.floor(usableBits / 8)\n  }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param  {Segment} data                    Segment of data\n * @param  {Number} [errorCorrectionLevel=H] Error correction level\n * @param  {Mode} mode                       Data mode\n * @return {Number}                          QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n  let seg\n\n  const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n  if (Array.isArray(data)) {\n    if (data.length > 1) {\n      return getBestVersionForMixedData(data, ecl)\n    }\n\n    if (data.length === 0) {\n      return 1\n    }\n\n    seg = data[0]\n  } else {\n    seg = data\n  }\n\n  return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param  {Number} version QR Code version\n * @return {Number}         Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n  if (!VersionCheck.isValid(version) || version < 7) {\n    throw new Error('Invalid QR Code version')\n  }\n\n  let d = version << 12\n\n  while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n    d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n  }\n\n  return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param  {Number} errorCorrectionLevel Error correction level\n * @param  {Number} mask                 Mask pattern\n * @return {Number}                      Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n  const data = ((errorCorrectionLevel.bit << 3) | mask)\n  let d = data << 10\n\n  while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n    d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n  }\n\n  // xor final data with mask pattern in order to ensure that\n  // no combination of Error Correction Level and data mask pattern\n  // will result in an all-zero data string\n  return ((data << 10) | d) ^ G15_MASK\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param  {String} str Input string\n * @return {Number}     Number of byte\n */\nfunction getStringByteLength (str) {\n  return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param  {Mode}   mode Segment mode\n * @param  {String} str  String to process\n * @return {Array}       Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n  const segments = []\n  let result\n\n  while ((result = regex.exec(str)) !== null) {\n    segments.push({\n      data: result[0],\n      index: result.index,\n      mode: mode,\n      length: result[0].length\n    })\n  }\n\n  return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param  {String} dataStr Input string\n * @return {Array}          Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n  const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n  const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n  let byteSegs\n  let kanjiSegs\n\n  if (Utils.isKanjiModeEnabled()) {\n    byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n    kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n  } else {\n    byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n    kanjiSegs = []\n  }\n\n  const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n  return segs\n    .sort(function (s1, s2) {\n      return s1.index - s2.index\n    })\n    .map(function (obj) {\n      return {\n        data: obj.data,\n        mode: obj.mode,\n        length: obj.length\n      }\n    })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param  {Number} length String length\n * @param  {Mode} mode     Segment mode\n * @return {Number}        Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n  switch (mode) {\n    case Mode.NUMERIC:\n      return NumericData.getBitsLength(length)\n    case Mode.ALPHANUMERIC:\n      return AlphanumericData.getBitsLength(length)\n    case Mode.KANJI:\n      return KanjiData.getBitsLength(length)\n    case Mode.BYTE:\n      return ByteData.getBitsLength(length)\n  }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param  {Array} segs Array of object with segments data\n * @return {Array}      Array of object with segments data\n */\nfunction mergeSegments (segs) {\n  return segs.reduce(function (acc, curr) {\n    const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n    if (prevSeg && prevSeg.mode === curr.mode) {\n      acc[acc.length - 1].data += curr.data\n      return acc\n    }\n\n    acc.push(curr)\n    return acc\n  }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param  {Array} segs Array of object with segments data\n * @return {Array}      Array of object with segments data\n */\nfunction buildNodes (segs) {\n  const nodes = []\n  for (let i = 0; i < segs.length; i++) {\n    const seg = segs[i]\n\n    switch (seg.mode) {\n      case Mode.NUMERIC:\n        nodes.push([seg,\n          { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n          { data: seg.data, mode: Mode.BYTE, length: seg.length }\n        ])\n        break\n      case Mode.ALPHANUMERIC:\n        nodes.push([seg,\n          { data: seg.data, mode: Mode.BYTE, length: seg.length }\n        ])\n        break\n      case Mode.KANJI:\n        nodes.push([seg,\n          { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n        ])\n        break\n      case Mode.BYTE:\n        nodes.push([\n          { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n        ])\n    }\n  }\n\n  return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param  {Array} nodes    Array of object with segments data\n * @param  {Number} version QR Code version\n * @return {Object}         Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n  const table = {}\n  const graph = { start: {} }\n  let prevNodeIds = ['start']\n\n  for (let i = 0; i < nodes.length; i++) {\n    const nodeGroup = nodes[i]\n    const currentNodeIds = []\n\n    for (let j = 0; j < nodeGroup.length; j++) {\n      const node = nodeGroup[j]\n      const key = '' + i + j\n\n      currentNodeIds.push(key)\n      table[key] = { node: node, lastCount: 0 }\n      graph[key] = {}\n\n      for (let n = 0; n < prevNodeIds.length; n++) {\n        const prevNodeId = prevNodeIds[n]\n\n        if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n          graph[prevNodeId][key] =\n            getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n            getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n          table[prevNodeId].lastCount += node.length\n        } else {\n          if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n          graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n            4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n        }\n      }\n    }\n\n    prevNodeIds = currentNodeIds\n  }\n\n  for (let n = 0; n < prevNodeIds.length; n++) {\n    graph[prevNodeIds[n]].end = 0\n  }\n\n  return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param  {String} data             Input data\n * @param  {Mode | String} modesHint Data mode\n * @return {Segment}                 Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n  let mode\n  const bestMode = Mode.getBestModeForData(data)\n\n  mode = Mode.from(modesHint, bestMode)\n\n  // Make sure data can be encoded\n  if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n    throw new Error('\"' + data + '\"' +\n      ' cannot be encoded with mode ' + Mode.toString(mode) +\n      '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n  }\n\n  // Use Mode.BYTE if Kanji support is disabled\n  if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n    mode = Mode.BYTE\n  }\n\n  switch (mode) {\n    case Mode.NUMERIC:\n      return new NumericData(data)\n\n    case Mode.ALPHANUMERIC:\n      return new AlphanumericData(data)\n\n    case Mode.KANJI:\n      return new KanjiData(data)\n\n    case Mode.BYTE:\n      return new ByteData(data)\n  }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param  {Array} array Array of objects with segments data\n * @return {Array}       Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n  return array.reduce(function (acc, seg) {\n    if (typeof seg === 'string') {\n      acc.push(buildSingleSegment(seg, null))\n    } else if (seg.data) {\n      acc.push(buildSingleSegment(seg.data, seg.mode))\n    }\n\n    return acc\n  }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param  {String} data    Input string\n * @param  {Number} version QR Code version\n * @return {Array}          Array of segments\n */\nexports.fromString = function fromString (data, version) {\n  const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n  const nodes = buildNodes(segs)\n  const graph = buildGraph(nodes, version)\n  const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n  const optimizedSegs = []\n  for (let i = 1; i < path.length - 1; i++) {\n    optimizedSegs.push(graph.table[path[i]].node)\n  }\n\n  return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param  {string} data Input string\n * @return {Array}       Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n  return exports.fromArray(\n    getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n  )\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n  this.mode = Mode.NUMERIC\n  this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n  return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n  return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n  let i, group, value\n\n  // The input data string is divided into groups of three digits,\n  // and each group is converted to its 10-bit binary equivalent.\n  for (i = 0; i + 3 <= this.data.length; i += 3) {\n    group = this.data.substr(i, 3)\n    value = parseInt(group, 10)\n\n    bitBuffer.put(value, 10)\n  }\n\n  // If the number of input digits is not an exact multiple of three,\n  // the final one or two digits are converted to 4 or 7 bits respectively.\n  const remainingNum = this.data.length - i\n  if (remainingNum > 0) {\n    group = this.data.substr(i)\n    value = parseInt(group, 10)\n\n    bitBuffer.put(value, remainingNum * 3 + 1)\n  }\n}\n\nmodule.exports = NumericData\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n  'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n  ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n  this.mode = Mode.ALPHANUMERIC\n  this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n  return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n  return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n  let i\n\n  // Input data characters are divided into groups of two characters\n  // and encoded as 11-bit binary codes.\n  for (i = 0; i + 2 <= this.data.length; i += 2) {\n    // The character value of the first character is multiplied by 45\n    let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n    // The character value of the second digit is added to the product\n    value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n    // The sum is then stored as 11-bit binary number\n    bitBuffer.put(value, 11)\n  }\n\n  // If the number of input data characters is not a multiple of two,\n  // the character value of the final character is encoded as a 6-bit binary number.\n  if (this.data.length % 2) {\n    bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n  }\n}\n\nmodule.exports = AlphanumericData\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n  this.mode = Mode.BYTE\n  if (typeof (data) === 'string') {\n    data = encodeUtf8(data)\n  }\n  this.data = new Uint8Array(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n  return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n  return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n  for (let i = 0, l = this.data.length; i < l; i++) {\n    bitBuffer.put(this.data[i], 8)\n  }\n}\n\nmodule.exports = ByteData\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n  var result = []\n  var size = input.length\n\n  for (var index = 0; index < size; index++) {\n    var point = input.charCodeAt(index)\n\n    if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n      var second = input.charCodeAt(index + 1)\n\n      if (second >= 0xDC00 && second <= 0xDFFF) {\n        // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n        index += 1\n      }\n    }\n\n    // US-ASCII\n    if (point < 0x80) {\n      result.push(point)\n      continue\n    }\n\n    // 2-byte UTF-8\n    if (point < 0x800) {\n      result.push((point >> 6) | 192)\n      result.push((point & 63) | 128)\n      continue\n    }\n\n    // 3-byte UTF-8\n    if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n      result.push((point >> 12) | 224)\n      result.push(((point >> 6) & 63) | 128)\n      result.push((point & 63) | 128)\n      continue\n    }\n\n    // 4-byte UTF-8\n    if (point >= 0x10000 && point <= 0x10FFFF) {\n      result.push((point >> 18) | 240)\n      result.push(((point >> 12) & 63) | 128)\n      result.push(((point >> 6) & 63) | 128)\n      result.push((point & 63) | 128)\n      continue\n    }\n\n    // Invalid character\n    result.push(0xEF, 0xBF, 0xBD)\n  }\n\n  return new Uint8Array(result).buffer\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n  this.mode = Mode.KANJI\n  this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n  return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n  return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n  let i\n\n  // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n  // These byte values are shifted from the JIS X 0208 values.\n  // JIS X 0208 gives details of the shift coded representation.\n  for (i = 0; i < this.data.length; i++) {\n    let value = Utils.toSJIS(this.data[i])\n\n    // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n    if (value >= 0x8140 && value <= 0x9FFC) {\n      // Subtract 0x8140 from Shift JIS value\n      value -= 0x8140\n\n    // For characters with Shift JIS values from 0xE040 to 0xEBBF\n    } else if (value >= 0xE040 && value <= 0xEBBF) {\n      // Subtract 0xC140 from Shift JIS value\n      value -= 0xC140\n    } else {\n      throw new Error(\n        'Invalid SJIS character: ' + this.data[i] + '\\n' +\n        'Make sure your charset is UTF-8')\n    }\n\n    // Multiply most significant byte of result by 0xC0\n    // and add least significant byte to product\n    value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n    // Convert result to a 13-bit binary string\n    bitBuffer.put(value, 13)\n  }\n}\n\nmodule.exports = KanjiData\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n *   Wyatt Baldwin <self@wyattbaldwin.com>\n *   All rights reserved\n *\n * Licensed under the MIT license.\n *\n *   http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n  single_source_shortest_paths: function(graph, s, d) {\n    // Predecessor map for each node that has been encountered.\n    // node ID => predecessor node ID\n    var predecessors = {};\n\n    // Costs of shortest paths from s to all nodes encountered.\n    // node ID => cost\n    var costs = {};\n    costs[s] = 0;\n\n    // Costs of shortest paths from s to all nodes encountered; differs from\n    // `costs` in that it provides easy access to the node that currently has\n    // the known shortest path from s.\n    // XXX: Do we actually need both `costs` and `open`?\n    var open = dijkstra.PriorityQueue.make();\n    open.push(s, 0);\n\n    var closest,\n        u, v,\n        cost_of_s_to_u,\n        adjacent_nodes,\n        cost_of_e,\n        cost_of_s_to_u_plus_cost_of_e,\n        cost_of_s_to_v,\n        first_visit;\n    while (!open.empty()) {\n      // In the nodes remaining in graph that have a known cost from s,\n      // find the node, u, that currently has the shortest path from s.\n      closest = open.pop();\n      u = closest.value;\n      cost_of_s_to_u = closest.cost;\n\n      // Get nodes adjacent to u...\n      adjacent_nodes = graph[u] || {};\n\n      // ...and explore the edges that connect u to those nodes, updating\n      // the cost of the shortest paths to any or all of those nodes as\n      // necessary. v is the node across the current edge from u.\n      for (v in adjacent_nodes) {\n        if (adjacent_nodes.hasOwnProperty(v)) {\n          // Get the cost of the edge running from u to v.\n          cost_of_e = adjacent_nodes[v];\n\n          // Cost of s to u plus the cost of u to v across e--this is *a*\n          // cost from s to v that may or may not be less than the current\n          // known cost to v.\n          cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n          // If we haven't visited v yet OR if the current known cost from s to\n          // v is greater than the new cost we just found (cost of s to u plus\n          // cost of u to v across e), update v's cost in the cost list and\n          // update v's predecessor in the predecessor list (it's now u).\n          cost_of_s_to_v = costs[v];\n          first_visit = (typeof costs[v] === 'undefined');\n          if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n            costs[v] = cost_of_s_to_u_plus_cost_of_e;\n            open.push(v, cost_of_s_to_u_plus_cost_of_e);\n            predecessors[v] = u;\n          }\n        }\n      }\n    }\n\n    if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n      var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n      throw new Error(msg);\n    }\n\n    return predecessors;\n  },\n\n  extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n    var nodes = [];\n    var u = d;\n    var predecessor;\n    while (u) {\n      nodes.push(u);\n      predecessor = predecessors[u];\n      u = predecessors[u];\n    }\n    nodes.reverse();\n    return nodes;\n  },\n\n  find_path: function(graph, s, d) {\n    var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n    return dijkstra.extract_shortest_path_from_predecessor_list(\n      predecessors, d);\n  },\n\n  /**\n   * A very naive priority queue implementation.\n   */\n  PriorityQueue: {\n    make: function (opts) {\n      var T = dijkstra.PriorityQueue,\n          t = {},\n          key;\n      opts = opts || {};\n      for (key in T) {\n        if (T.hasOwnProperty(key)) {\n          t[key] = T[key];\n        }\n      }\n      t.queue = [];\n      t.sorter = opts.sorter || T.default_sorter;\n      return t;\n    },\n\n    default_sorter: function (a, b) {\n      return a.cost - b.cost;\n    },\n\n    /**\n     * Add a new item to the queue and ensure the highest priority element\n     * is at the front of the queue.\n     */\n    push: function (value, cost) {\n      var item = {value: value, cost: cost};\n      this.queue.push(item);\n      this.queue.sort(this.sorter);\n    },\n\n    /**\n     * Return the highest priority element in the queue.\n     */\n    pop: function () {\n      return this.queue.shift();\n    },\n\n    empty: function () {\n      return this.queue.length === 0;\n    }\n  }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n  module.exports = dijkstra;\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n  ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n  if (!canvas.style) canvas.style = {}\n  canvas.height = size\n  canvas.width = size\n  canvas.style.height = size + 'px'\n  canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n  try {\n    return document.createElement('canvas')\n  } catch (e) {\n    throw new Error('You need to specify a canvas element')\n  }\n}\n\nexports.render = function render (qrData, canvas, options) {\n  let opts = options\n  let canvasEl = canvas\n\n  if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n    opts = canvas\n    canvas = undefined\n  }\n\n  if (!canvas) {\n    canvasEl = getCanvasElement()\n  }\n\n  opts = Utils.getOptions(opts)\n  const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n  const ctx = canvasEl.getContext('2d')\n  const image = ctx.createImageData(size, size)\n  Utils.qrToImageData(image.data, qrData, opts)\n\n  clearCanvas(ctx, canvasEl, size)\n  ctx.putImageData(image, 0, 0)\n\n  return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n  let opts = options\n\n  if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n    opts = canvas\n    canvas = undefined\n  }\n\n  if (!opts) opts = {}\n\n  const canvasEl = exports.render(qrData, canvas, opts)\n\n  const type = opts.type || 'image/png'\n  const rendererOpts = opts.rendererOpts || {}\n\n  return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n  const alpha = color.a / 255\n  const str = attrib + '=\"' + color.hex + '\"'\n\n  return alpha < 1\n    ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n    : str\n}\n\nfunction svgCmd (cmd, x, y) {\n  let str = cmd + x\n  if (typeof y !== 'undefined') str += ' ' + y\n\n  return str\n}\n\nfunction qrToPath (data, size, margin) {\n  let path = ''\n  let moveBy = 0\n  let newRow = false\n  let lineLength = 0\n\n  for (let i = 0; i < data.length; i++) {\n    const col = Math.floor(i % size)\n    const row = Math.floor(i / size)\n\n    if (!col && !newRow) newRow = true\n\n    if (data[i]) {\n      lineLength++\n\n      if (!(i > 0 && col > 0 && data[i - 1])) {\n        path += newRow\n          ? svgCmd('M', col + margin, 0.5 + row + margin)\n          : svgCmd('m', moveBy, 0)\n\n        moveBy = 0\n        newRow = false\n      }\n\n      if (!(col + 1 < size && data[i + 1])) {\n        path += svgCmd('h', lineLength)\n        lineLength = 0\n      }\n    } else {\n      moveBy++\n    }\n  }\n\n  return path\n}\n\nexports.render = function render (qrData, options, cb) {\n  const opts = Utils.getOptions(options)\n  const size = qrData.modules.size\n  const data = qrData.modules.data\n  const qrcodesize = size + opts.margin * 2\n\n  const bg = !opts.color.light.a\n    ? ''\n    : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n      ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>'\n\n  const path =\n    '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n    ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>'\n\n  const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n  const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n  const svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n'\n\n  if (typeof cb === 'function') {\n    cb(null, svgTag)\n  }\n\n  return svgTag\n}\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","var _CALENDAR_TYPE_LOCALE;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var CALENDAR_TYPES = {\n  ARABIC: 'Arabic',\n  HEBREW: 'Hebrew',\n  ISO_8601: 'ISO 8601',\n  US: 'US'\n};\nexport var CALENDAR_TYPE_LOCALES = (_CALENDAR_TYPE_LOCALE = {}, _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.US, ['en-CA', 'en-US', 'es-AR', 'es-BO', 'es-CL', 'es-CO', 'es-CR', 'es-DO', 'es-EC', 'es-GT', 'es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PR', 'es-SV', 'es-VE', 'pt-BR']), _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.ARABIC, [// ar-LB, ar-MA intentionally missing\n'ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LY', 'ar-OM', 'ar-QA', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-YE', 'dv', 'dv-MV', 'ps', 'ps-AR']), _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.HEBREW, ['he', 'he-IL']), _CALENDAR_TYPE_LOCALE);\nexport var WEEKDAYS = _toConsumableArray(Array(7)).map(function (el, index) {\n  return index;\n});","import getUserLocale from 'get-user-locale';\nvar formatterCache = new Map();\n\nfunction getFormatter(options) {\n  return function (locale, date) {\n    var localeWithDefault = locale || getUserLocale();\n\n    if (!formatterCache.has(localeWithDefault)) {\n      formatterCache.set(localeWithDefault, new Map());\n    }\n\n    var formatterCacheLocale = formatterCache.get(localeWithDefault);\n\n    if (!formatterCacheLocale.has(options)) {\n      formatterCacheLocale.set(options, new Intl.DateTimeFormat(localeWithDefault, options).format);\n    }\n\n    return formatterCacheLocale.get(options)(date);\n  };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\n\n\nfunction toSafeHour(date) {\n  var safeDate = new Date(date);\n  return new Date(safeDate.setHours(12));\n}\n\nfunction getSafeFormatter(options) {\n  return function (locale, date) {\n    return getFormatter(options)(locale, toSafeHour(date));\n  };\n}\n\nvar formatDateOptions = {\n  day: 'numeric',\n  month: 'numeric',\n  year: 'numeric'\n};\nvar formatDayOptions = {\n  day: 'numeric'\n};\nvar formatLongDateOptions = {\n  day: 'numeric',\n  month: 'long',\n  year: 'numeric'\n};\nvar formatMonthOptions = {\n  month: 'long'\n};\nvar formatMonthYearOptions = {\n  month: 'long',\n  year: 'numeric'\n};\nvar formatShortWeekdayOptions = {\n  weekday: 'short'\n};\nvar formatWeekdayOptions = {\n  weekday: 'long'\n};\nvar formatYearOptions = {\n  year: 'numeric'\n};\nexport var formatDate = getSafeFormatter(formatDateOptions);\nexport var formatDay = getSafeFormatter(formatDayOptions);\nexport var formatLongDate = getSafeFormatter(formatLongDateOptions);\nexport var formatMonth = getSafeFormatter(formatMonthOptions);\nexport var formatMonthYear = getSafeFormatter(formatMonthYearOptions);\nexport var formatShortWeekday = getSafeFormatter(formatShortWeekdayOptions);\nexport var formatWeekday = getSafeFormatter(formatWeekdayOptions);\nexport var formatYear = getSafeFormatter(formatYearOptions);","import { getYear, getMonth as getMonthIndex, getCenturyStart, getPreviousCenturyStart, getNextCenturyStart, getCenturyEnd, getPreviousCenturyEnd, getCenturyRange, getDecadeStart, getPreviousDecadeStart, getNextDecadeStart, getDecadeEnd, getPreviousDecadeEnd, getDecadeRange, getYearStart, getPreviousYearStart, getNextYearStart, getYearEnd, getPreviousYearEnd, getYearRange, getMonthStart, getPreviousMonthStart, getNextMonthStart, getMonthEnd, getPreviousMonthEnd, getMonthRange, getDayStart, getDayEnd, getDayRange } from '@wojtekmaj/date-utils';\nimport { CALENDAR_TYPES, WEEKDAYS } from './const';\nimport { formatYear as defaultFormatYear } from './dateFormatter';\nvar SUNDAY = WEEKDAYS[0];\nvar FRIDAY = WEEKDAYS[5];\nvar SATURDAY = WEEKDAYS[6];\n/* Simple getters - getting a property of a given point in time */\n\nexport function getDayOfWeek(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n  var weekday = date.getDay();\n\n  switch (calendarType) {\n    case CALENDAR_TYPES.ISO_8601:\n      // Shifts days of the week so that Monday is 0, Sunday is 6\n      return (weekday + 6) % 7;\n\n    case CALENDAR_TYPES.ARABIC:\n      return (weekday + 1) % 7;\n\n    case CALENDAR_TYPES.HEBREW:\n    case CALENDAR_TYPES.US:\n      return weekday;\n\n    default:\n      throw new Error('Unsupported calendar type.');\n  }\n}\n/**\n * Century\n */\n\nexport function getBeginOfCenturyYear(date) {\n  var beginOfCentury = getCenturyStart(date);\n  return getYear(beginOfCentury);\n}\n/**\n * Decade\n */\n\nexport function getBeginOfDecadeYear(date) {\n  var beginOfDecade = getDecadeStart(date);\n  return getYear(beginOfDecade);\n}\n/**\n * Week\n */\n\n/**\n * Returns the beginning of a given week.\n *\n * @param {Date} date Date.\n * @param {string} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\nexport function getBeginOfWeek(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n  var year = getYear(date);\n  var monthIndex = getMonthIndex(date);\n  var day = date.getDate() - getDayOfWeek(date, calendarType);\n  return new Date(year, monthIndex, day);\n}\n/**\n * Gets week number according to ISO 8601 or US standard.\n * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4.\n * In US calendar week 1 is the one with January 1.\n *\n * @param {Date} date Date.\n * @param {string} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\nexport function getWeekNumber(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n  var calendarTypeForWeekNumber = calendarType === CALENDAR_TYPES.US ? CALENDAR_TYPES.US : CALENDAR_TYPES.ISO_8601;\n  var beginOfWeek = getBeginOfWeek(date, calendarType);\n  var year = getYear(date) + 1;\n  var dayInWeekOne;\n  var beginOfFirstWeek; // Look for the first week one that does not come after a given date\n\n  do {\n    dayInWeekOne = new Date(year, 0, calendarTypeForWeekNumber === CALENDAR_TYPES.ISO_8601 ? 4 : 1);\n    beginOfFirstWeek = getBeginOfWeek(dayInWeekOne, calendarType);\n    year -= 1;\n  } while (date < beginOfFirstWeek);\n\n  return Math.round((beginOfWeek - beginOfFirstWeek) / (8.64e7 * 7)) + 1;\n}\n/**\n * Others\n */\n\n/**\n * Returns the beginning of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\nexport function getBegin(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getCenturyStart(date);\n\n    case 'decade':\n      return getDecadeStart(date);\n\n    case 'year':\n      return getYearStart(date);\n\n    case 'month':\n      return getMonthStart(date);\n\n    case 'day':\n      return getDayStart(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\nexport function getBeginPrevious(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getPreviousCenturyStart(date);\n\n    case 'decade':\n      return getPreviousDecadeStart(date);\n\n    case 'year':\n      return getPreviousYearStart(date);\n\n    case 'month':\n      return getPreviousMonthStart(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\nexport function getBeginNext(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getNextCenturyStart(date);\n\n    case 'decade':\n      return getNextDecadeStart(date);\n\n    case 'year':\n      return getNextYearStart(date);\n\n    case 'month':\n      return getNextMonthStart(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\nexport var getBeginPrevious2 = function getBeginPrevious2(rangeType, date) {\n  switch (rangeType) {\n    case 'decade':\n      return getPreviousDecadeStart(date, -100);\n\n    case 'year':\n      return getPreviousYearStart(date, -10);\n\n    case 'month':\n      return getPreviousMonthStart(date, -12);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n};\nexport var getBeginNext2 = function getBeginNext2(rangeType, date) {\n  switch (rangeType) {\n    case 'decade':\n      return getNextDecadeStart(date, 100);\n\n    case 'year':\n      return getNextYearStart(date, 10);\n\n    case 'month':\n      return getNextMonthStart(date, 12);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n};\n/**\n * Returns the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\nexport function getEnd(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getCenturyEnd(date);\n\n    case 'decade':\n      return getDecadeEnd(date);\n\n    case 'year':\n      return getYearEnd(date);\n\n    case 'month':\n      return getMonthEnd(date);\n\n    case 'day':\n      return getDayEnd(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\nexport function getEndPrevious(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getPreviousCenturyEnd(date);\n\n    case 'decade':\n      return getPreviousDecadeEnd(date);\n\n    case 'year':\n      return getPreviousYearEnd(date);\n\n    case 'month':\n      return getPreviousMonthEnd(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\nexport var getEndPrevious2 = function getEndPrevious2(rangeType, date) {\n  switch (rangeType) {\n    case 'decade':\n      return getPreviousDecadeEnd(date, -100);\n\n    case 'year':\n      return getPreviousYearEnd(date, -10);\n\n    case 'month':\n      return getPreviousMonthEnd(date, -12);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n};\n/**\n * Returns an array with the beginning and the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\nexport function getRange(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getCenturyRange(date);\n\n    case 'decade':\n      return getDecadeRange(date);\n\n    case 'year':\n      return getYearRange(date);\n\n    case 'month':\n      return getMonthRange(date);\n\n    case 'day':\n      return getDayRange(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n/**\n * Creates a range out of two values, ensuring they are in order and covering entire period ranges.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date1 First date.\n * @param {Date} date2 Second date.\n */\n\nexport function getValueRange(rangeType, date1, date2) {\n  var rawNextValue = [date1, date2].sort(function (a, b) {\n    return a - b;\n  });\n  return [getBegin(rangeType, rawNextValue[0]), getEnd(rangeType, rawNextValue[1])];\n}\n\nfunction toYearLabel(locale) {\n  var formatYear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFormatYear;\n  var dates = arguments.length > 2 ? arguments[2] : undefined;\n  return dates.map(function (date) {\n    return formatYear(locale, date);\n  }).join(' – ');\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2001-2100.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\n\nexport function getCenturyLabel(locale, formatYear, date) {\n  return toYearLabel(locale, formatYear, getCenturyRange(date));\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2011-2020.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\nexport function getDecadeLabel(locale, formatYear, date) {\n  return toYearLabel(locale, formatYear, getDecadeRange(date));\n}\n/**\n * Returns a boolean determining whether a given date is on Saturday or Sunday.\n *\n * @param {Date} date Date.\n */\n\nexport function isWeekend(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n  var weekday = date.getDay();\n\n  switch (calendarType) {\n    case CALENDAR_TYPES.ARABIC:\n    case CALENDAR_TYPES.HEBREW:\n      return weekday === FRIDAY || weekday === SATURDAY;\n\n    case CALENDAR_TYPES.ISO_8601:\n    case CALENDAR_TYPES.US:\n      return weekday === SATURDAY || weekday === SUNDAY;\n\n    default:\n      throw new Error('Unsupported calendar type.');\n  }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport PropTypes from 'prop-types';\nimport { CALENDAR_TYPES } from './const';\nvar calendarTypes = Object.values(CALENDAR_TYPES);\nvar allViews = ['century', 'decade', 'year', 'month'];\nexport var isCalendarType = PropTypes.oneOf(calendarTypes);\nexport var isClassName = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]);\nexport var isMinDate = function isMinDate(props, propName, componentName) {\n  var minDate = props[propName];\n\n  if (!minDate) {\n    return null;\n  }\n\n  if (!(minDate instanceof Date)) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n  }\n\n  var maxDate = props.maxDate;\n\n  if (maxDate && minDate > maxDate) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n  }\n\n  return null;\n};\nexport var isMaxDate = function isMaxDate(props, propName, componentName) {\n  var maxDate = props[propName];\n\n  if (!maxDate) {\n    return null;\n  }\n\n  if (!(maxDate instanceof Date)) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n  }\n\n  var minDate = props.minDate;\n\n  if (minDate && maxDate < minDate) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n  }\n\n  return null;\n};\nexport var isRef = PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n  current: PropTypes.any\n})]);\nexport var isValue = PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date))]);\nexport var isViews = PropTypes.arrayOf(PropTypes.oneOf(allViews));\nexport var isView = function isView(props, propName, componentName) {\n  var view = props[propName];\n  var views = props.views;\n  var allowedViews = views || allViews;\n\n  if (view !== undefined && allowedViews.indexOf(view) === -1) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of value `\").concat(view, \"` supplied to `\").concat(componentName, \"`, expected one of [\").concat(allowedViews.map(function (a) {\n      return \"\\\"\".concat(a, \"\\\"\");\n    }).join(', '), \"].\"));\n  } // Everything is fine\n\n\n  return null;\n};\n\nisView.isRequired = function (props, propName, componentName) {\n  var view = props[propName];\n\n  if (!view) {\n    return new Error(\"The prop `\".concat(propName, \"` is marked as required in `\").concat(componentName, \"`, but its value is `\").concat(view, \"`.\"));\n  }\n\n  return isView(props, propName, componentName);\n};\n\nexport var tileGroupProps = {\n  activeStartDate: PropTypes.instanceOf(Date).isRequired,\n  hover: PropTypes.instanceOf(Date),\n  locale: PropTypes.string,\n  maxDate: isMaxDate,\n  minDate: isMinDate,\n  onClick: PropTypes.func,\n  onMouseOver: PropTypes.func,\n  tileClassName: PropTypes.oneOfType([PropTypes.func, isClassName]),\n  tileContent: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n  value: isValue,\n  valueType: PropTypes.string\n};\nexport var tileProps = {\n  activeStartDate: PropTypes.instanceOf(Date).isRequired,\n  classes: PropTypes.arrayOf(PropTypes.string).isRequired,\n  date: PropTypes.instanceOf(Date).isRequired,\n  locale: PropTypes.string,\n  maxDate: isMaxDate,\n  minDate: isMinDate,\n  onClick: PropTypes.func,\n  onMouseOver: PropTypes.func,\n  style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n  tileClassName: PropTypes.oneOfType([PropTypes.func, isClassName]),\n  tileContent: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n  tileDisabled: PropTypes.func\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getUserLocale } from 'get-user-locale';\nimport { getCenturyLabel, getDecadeLabel, getBeginNext, getBeginNext2, getBeginPrevious, getBeginPrevious2, getEndPrevious, getEndPrevious2 } from '../shared/dates';\nimport { formatMonthYear as defaultFormatMonthYear, formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { isView, isViews } from '../shared/propTypes';\nvar className = 'react-calendar__navigation';\nexport default function Navigation(_ref) {\n  var activeStartDate = _ref.activeStartDate,\n      drillUp = _ref.drillUp,\n      _ref$formatMonthYear = _ref.formatMonthYear,\n      formatMonthYear = _ref$formatMonthYear === void 0 ? defaultFormatMonthYear : _ref$formatMonthYear,\n      _ref$formatYear = _ref.formatYear,\n      formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n      locale = _ref.locale,\n      maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      _ref$navigationAriaLa = _ref.navigationAriaLabel,\n      navigationAriaLabel = _ref$navigationAriaLa === void 0 ? '' : _ref$navigationAriaLa,\n      navigationAriaLive = _ref.navigationAriaLive,\n      navigationLabel = _ref.navigationLabel,\n      _ref$next2AriaLabel = _ref.next2AriaLabel,\n      next2AriaLabel = _ref$next2AriaLabel === void 0 ? '' : _ref$next2AriaLabel,\n      _ref$next2Label = _ref.next2Label,\n      next2Label = _ref$next2Label === void 0 ? '»' : _ref$next2Label,\n      _ref$nextAriaLabel = _ref.nextAriaLabel,\n      nextAriaLabel = _ref$nextAriaLabel === void 0 ? '' : _ref$nextAriaLabel,\n      _ref$nextLabel = _ref.nextLabel,\n      nextLabel = _ref$nextLabel === void 0 ? '›' : _ref$nextLabel,\n      _ref$prev2AriaLabel = _ref.prev2AriaLabel,\n      prev2AriaLabel = _ref$prev2AriaLabel === void 0 ? '' : _ref$prev2AriaLabel,\n      _ref$prev2Label = _ref.prev2Label,\n      prev2Label = _ref$prev2Label === void 0 ? '«' : _ref$prev2Label,\n      _ref$prevAriaLabel = _ref.prevAriaLabel,\n      prevAriaLabel = _ref$prevAriaLabel === void 0 ? '' : _ref$prevAriaLabel,\n      _ref$prevLabel = _ref.prevLabel,\n      prevLabel = _ref$prevLabel === void 0 ? '‹' : _ref$prevLabel,\n      setActiveStartDate = _ref.setActiveStartDate,\n      showDoubleView = _ref.showDoubleView,\n      view = _ref.view,\n      views = _ref.views;\n  var drillUpAvailable = views.indexOf(view) > 0;\n  var shouldShowPrevNext2Buttons = view !== 'century';\n  var previousActiveStartDate = getBeginPrevious(view, activeStartDate);\n  var previousActiveStartDate2 = shouldShowPrevNext2Buttons && getBeginPrevious2(view, activeStartDate);\n  var nextActiveStartDate = getBeginNext(view, activeStartDate);\n  var nextActiveStartDate2 = shouldShowPrevNext2Buttons && getBeginNext2(view, activeStartDate);\n\n  var prevButtonDisabled = function () {\n    if (previousActiveStartDate.getFullYear() < 0) {\n      return true;\n    }\n\n    var previousActiveEndDate = getEndPrevious(view, activeStartDate);\n    return minDate && minDate >= previousActiveEndDate;\n  }();\n\n  var prev2ButtonDisabled = shouldShowPrevNext2Buttons && function () {\n    if (previousActiveStartDate2.getFullYear() < 0) {\n      return true;\n    }\n\n    var previousActiveEndDate = getEndPrevious2(view, activeStartDate);\n    return minDate && minDate >= previousActiveEndDate;\n  }();\n\n  var nextButtonDisabled = maxDate && maxDate < nextActiveStartDate;\n  var next2ButtonDisabled = shouldShowPrevNext2Buttons && maxDate && maxDate < nextActiveStartDate2;\n\n  function onClickPrevious() {\n    setActiveStartDate(previousActiveStartDate, 'prev');\n  }\n\n  function onClickPrevious2() {\n    setActiveStartDate(previousActiveStartDate2, 'prev2');\n  }\n\n  function onClickNext() {\n    setActiveStartDate(nextActiveStartDate, 'next');\n  }\n\n  function onClickNext2() {\n    setActiveStartDate(nextActiveStartDate2, 'next2');\n  }\n\n  function renderLabel(date) {\n    var label = function () {\n      switch (view) {\n        case 'century':\n          return getCenturyLabel(locale, formatYear, date);\n\n        case 'decade':\n          return getDecadeLabel(locale, formatYear, date);\n\n        case 'year':\n          return formatYear(locale, date);\n\n        case 'month':\n          return formatMonthYear(locale, date);\n\n        default:\n          throw new Error(\"Invalid view: \".concat(view, \".\"));\n      }\n    }();\n\n    return navigationLabel ? navigationLabel({\n      date: date,\n      label: label,\n      locale: locale || getUserLocale(),\n      view: view\n    }) : label;\n  }\n\n  function renderButton() {\n    var labelClassName = \"\".concat(className, \"__label\");\n    return /*#__PURE__*/React.createElement(\"button\", {\n      \"aria-label\": navigationAriaLabel,\n      \"aria-live\": navigationAriaLive,\n      className: labelClassName,\n      disabled: !drillUpAvailable,\n      onClick: drillUp,\n      style: {\n        flexGrow: 1\n      },\n      type: \"button\"\n    }, /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--from\")\n    }, renderLabel(activeStartDate)), showDoubleView && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(labelClassName, \"__divider\")\n    }, \" \\u2013 \"), /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--to\")\n    }, renderLabel(nextActiveStartDate))));\n  }\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: className\n  }, prev2Label !== null && shouldShowPrevNext2Buttons && /*#__PURE__*/React.createElement(\"button\", {\n    \"aria-label\": prev2AriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__prev2-button\"),\n    disabled: prev2ButtonDisabled,\n    onClick: onClickPrevious2,\n    type: \"button\"\n  }, prev2Label), prevLabel !== null && /*#__PURE__*/React.createElement(\"button\", {\n    \"aria-label\": prevAriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__prev-button\"),\n    disabled: prevButtonDisabled,\n    onClick: onClickPrevious,\n    type: \"button\"\n  }, prevLabel), renderButton(), nextLabel !== null && /*#__PURE__*/React.createElement(\"button\", {\n    \"aria-label\": nextAriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__next-button\"),\n    disabled: nextButtonDisabled,\n    onClick: onClickNext,\n    type: \"button\"\n  }, nextLabel), next2Label !== null && shouldShowPrevNext2Buttons && /*#__PURE__*/React.createElement(\"button\", {\n    \"aria-label\": next2AriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__next2-button\"),\n    disabled: next2ButtonDisabled,\n    onClick: onClickNext2,\n    type: \"button\"\n  }, next2Label));\n}\nNavigation.propTypes = {\n  activeStartDate: PropTypes.instanceOf(Date).isRequired,\n  drillUp: PropTypes.func.isRequired,\n  formatMonthYear: PropTypes.func,\n  formatYear: PropTypes.func,\n  locale: PropTypes.string,\n  maxDate: PropTypes.instanceOf(Date),\n  minDate: PropTypes.instanceOf(Date),\n  navigationAriaLabel: PropTypes.string,\n  navigationAriaLive: PropTypes.string,\n  navigationLabel: PropTypes.func,\n  next2AriaLabel: PropTypes.string,\n  next2Label: PropTypes.node,\n  nextAriaLabel: PropTypes.string,\n  nextLabel: PropTypes.node,\n  prev2AriaLabel: PropTypes.string,\n  prev2Label: PropTypes.node,\n  prevAriaLabel: PropTypes.string,\n  prevLabel: PropTypes.node,\n  setActiveStartDate: PropTypes.func.isRequired,\n  showDoubleView: PropTypes.bool,\n  view: isView.isRequired,\n  views: isViews.isRequired\n};","var _excluded = [\"children\", \"className\", \"direction\", \"count\", \"offset\", \"style\", \"wrap\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction toPercent(num) {\n  return \"\".concat(num, \"%\");\n}\n\nexport default function Flex(_ref) {\n  var children = _ref.children,\n      className = _ref.className,\n      direction = _ref.direction,\n      count = _ref.count,\n      offset = _ref.offset,\n      style = _ref.style,\n      wrap = _ref.wrap,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: className,\n    style: _objectSpread({\n      display: 'flex',\n      flexDirection: direction,\n      flexWrap: wrap ? 'wrap' : 'no-wrap'\n    }, style)\n  }, otherProps), React.Children.map(children, function (child, index) {\n    return /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n      style: {\n        flexBasis: toPercent(100 / count),\n        flexShrink: 0,\n        flexGrow: 0,\n        overflow: 'hidden',\n        marginLeft: offset && index === 0 ? toPercent(100 * offset / count) : null\n      }\n    }));\n  }));\n}\nFlex.propTypes = {\n  children: PropTypes.node,\n  className: PropTypes.string,\n  count: PropTypes.number.isRequired,\n  direction: PropTypes.string,\n  offset: PropTypes.number,\n  style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n  wrap: PropTypes.bool\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\nimport { getRange } from './dates';\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\n\nexport function between(value, min, max) {\n  if (min && min > value) {\n    return min;\n  }\n\n  if (max && max < value) {\n    return max;\n  }\n\n  return value;\n}\nexport function isValueWithinRange(value, range) {\n  return range[0] <= value && range[1] >= value;\n}\nexport function isRangeWithinRange(greaterRange, smallerRange) {\n  return greaterRange[0] <= smallerRange[0] && greaterRange[1] >= smallerRange[1];\n}\nexport function doRangesOverlap(range1, range2) {\n  return isValueWithinRange(range1[0], range2) || isValueWithinRange(range1[1], range2);\n}\n\nfunction getRangeClassNames(valueRange, dateRange, baseClassName) {\n  var isRange = doRangesOverlap(dateRange, valueRange);\n  var classes = [];\n\n  if (isRange) {\n    classes.push(baseClassName);\n    var isRangeStart = isValueWithinRange(valueRange[0], dateRange);\n    var isRangeEnd = isValueWithinRange(valueRange[1], dateRange);\n\n    if (isRangeStart) {\n      classes.push(\"\".concat(baseClassName, \"Start\"));\n    }\n\n    if (isRangeEnd) {\n      classes.push(\"\".concat(baseClassName, \"End\"));\n    }\n\n    if (isRangeStart && isRangeEnd) {\n      classes.push(\"\".concat(baseClassName, \"BothEnds\"));\n    }\n  }\n\n  return classes;\n}\n\nexport function getTileClasses() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      value = _ref.value,\n      valueType = _ref.valueType,\n      date = _ref.date,\n      dateType = _ref.dateType,\n      hover = _ref.hover;\n\n  var className = 'react-calendar__tile';\n  var classes = [className];\n\n  if (!date) {\n    return classes;\n  }\n\n  if (!Array.isArray(date) && !dateType) {\n    throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n  }\n\n  var now = new Date();\n  var dateRange = Array.isArray(date) ? date : getRange(dateType, date);\n\n  if (isValueWithinRange(now, dateRange)) {\n    classes.push(\"\".concat(className, \"--now\"));\n  }\n\n  if (!value) {\n    return classes;\n  }\n\n  if (!Array.isArray(value) && !valueType) {\n    throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n  }\n\n  var valueRange = Array.isArray(value) ? value : getRange(valueType, value);\n\n  if (isRangeWithinRange(valueRange, dateRange)) {\n    classes.push(\"\".concat(className, \"--active\"));\n  } else if (doRangesOverlap(valueRange, dateRange)) {\n    classes.push(\"\".concat(className, \"--hasActive\"));\n  }\n\n  var valueRangeClassNames = getRangeClassNames(valueRange, dateRange, \"\".concat(className, \"--range\"));\n  classes.push.apply(classes, _toConsumableArray(valueRangeClassNames));\n  var valueArray = [].concat(value);\n\n  if (hover && valueArray.length === 1) {\n    var hoverRange = hover > valueRange[0] ? [valueRange[0], hover] : [hover, valueRange[0]];\n    var hoverRangeClassNames = getRangeClassNames(hoverRange, dateRange, \"\".concat(className, \"--hover\"));\n    classes.push.apply(classes, _toConsumableArray(hoverRangeClassNames));\n  }\n\n  return classes;\n}","var _excluded = [\"className\", \"count\", \"dateTransform\", \"dateType\", \"end\", \"hover\", \"offset\", \"start\", \"step\", \"tile\", \"value\", \"valueType\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Flex from './Flex';\nimport { getTileClasses } from './shared/utils';\nimport { tileGroupProps } from './shared/propTypes';\nexport default function TileGroup(_ref) {\n  var className = _ref.className,\n      _ref$count = _ref.count,\n      count = _ref$count === void 0 ? 3 : _ref$count,\n      dateTransform = _ref.dateTransform,\n      dateType = _ref.dateType,\n      end = _ref.end,\n      hover = _ref.hover,\n      offset = _ref.offset,\n      start = _ref.start,\n      _ref$step = _ref.step,\n      step = _ref$step === void 0 ? 1 : _ref$step,\n      Tile = _ref.tile,\n      value = _ref.value,\n      valueType = _ref.valueType,\n      tileProps = _objectWithoutProperties(_ref, _excluded);\n\n  var tiles = [];\n\n  for (var point = start; point <= end; point += step) {\n    var date = dateTransform(point);\n    tiles.push( /*#__PURE__*/React.createElement(Tile, _extends({\n      key: date.getTime(),\n      classes: getTileClasses({\n        value: value,\n        valueType: valueType,\n        date: date,\n        dateType: dateType,\n        hover: hover\n      }),\n      date: date,\n      point: point\n    }, tileProps)));\n  }\n\n  return /*#__PURE__*/React.createElement(Flex, {\n    className: className,\n    count: count,\n    offset: offset,\n    wrap: true\n  }, tiles);\n}\nTileGroup.propTypes = _objectSpread(_objectSpread({}, tileGroupProps), {}, {\n  activeStartDate: PropTypes.instanceOf(Date),\n  count: PropTypes.number,\n  dateTransform: PropTypes.func.isRequired,\n  dateType: PropTypes.string,\n  offset: PropTypes.number,\n  step: PropTypes.number,\n  tile: PropTypes.func.isRequired\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport mergeClassNames from 'merge-class-names';\nimport { tileProps } from './shared/propTypes';\n\nfunction datesAreDifferent(date1, date2) {\n  return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n}\n\nfunction getValue(nextProps, prop) {\n  var activeStartDate = nextProps.activeStartDate,\n      date = nextProps.date,\n      view = nextProps.view;\n  return typeof prop === 'function' ? prop({\n    activeStartDate: activeStartDate,\n    date: date,\n    view: view\n  }) : prop;\n}\n\nvar Tile = /*#__PURE__*/function (_Component) {\n  _inherits(Tile, _Component);\n\n  var _super = _createSuper(Tile);\n\n  function Tile() {\n    var _this;\n\n    _classCallCheck(this, Tile);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n    return _this;\n  }\n\n  _createClass(Tile, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          activeStartDate = _this$props.activeStartDate,\n          children = _this$props.children,\n          classes = _this$props.classes,\n          date = _this$props.date,\n          formatAbbr = _this$props.formatAbbr,\n          locale = _this$props.locale,\n          maxDate = _this$props.maxDate,\n          maxDateTransform = _this$props.maxDateTransform,\n          minDate = _this$props.minDate,\n          minDateTransform = _this$props.minDateTransform,\n          onClick = _this$props.onClick,\n          onMouseOver = _this$props.onMouseOver,\n          style = _this$props.style,\n          tileDisabled = _this$props.tileDisabled,\n          view = _this$props.view;\n      var _this$state = this.state,\n          tileClassName = _this$state.tileClassName,\n          tileContent = _this$state.tileContent;\n      return /*#__PURE__*/React.createElement(\"button\", {\n        className: mergeClassNames(classes, tileClassName),\n        disabled: minDate && minDateTransform(minDate) > date || maxDate && maxDateTransform(maxDate) < date || tileDisabled && tileDisabled({\n          activeStartDate: activeStartDate,\n          date: date,\n          view: view\n        }),\n        onClick: onClick && function (event) {\n          return onClick(date, event);\n        },\n        onFocus: onMouseOver && function () {\n          return onMouseOver(date);\n        },\n        onMouseOver: onMouseOver && function () {\n          return onMouseOver(date);\n        },\n        style: style,\n        type: \"button\"\n      }, formatAbbr ? /*#__PURE__*/React.createElement(\"abbr\", {\n        \"aria-label\": formatAbbr(locale, date)\n      }, children) : children, tileContent);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var activeStartDate = nextProps.activeStartDate,\n          tileClassName = nextProps.tileClassName,\n          tileContent = nextProps.tileContent;\n      var nextState = {};\n\n      if (tileClassName !== prevState.tileClassNameProps || datesAreDifferent(activeStartDate, prevState.activeStartDateProps)) {\n        nextState.tileClassName = getValue(nextProps, tileClassName);\n        nextState.tileClassNameProps = tileClassName;\n      }\n\n      if (tileContent !== prevState.tileContentProps || datesAreDifferent(activeStartDate, prevState.activeStartDateProps)) {\n        nextState.tileContent = getValue(nextProps, tileContent);\n        nextState.tileContentProps = tileContent;\n      }\n\n      nextState.activeStartDateProps = activeStartDate;\n      return nextState;\n    }\n  }]);\n\n  return Tile;\n}(Component);\n\nexport { Tile as default };\nTile.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n  children: PropTypes.node.isRequired,\n  formatAbbr: PropTypes.func,\n  maxDateTransform: PropTypes.func.isRequired,\n  minDateTransform: PropTypes.func.isRequired\n});","var _excluded = [\"classes\", \"formatYear\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getDecadeStart, getDecadeEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { getDecadeLabel } from '../shared/dates';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__century-view__decades__decade';\nexport default function Decade(_ref) {\n  var classes = _ref.classes,\n      _ref$formatYear = _ref.formatYear,\n      formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var date = otherProps.date,\n      locale = otherProps.locale;\n  return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n    classes: [].concat(classes, className),\n    maxDateTransform: getDecadeEnd,\n    minDateTransform: getDecadeStart,\n    view: \"century\"\n  }), getDecadeLabel(locale, formatYear, date));\n}\nDecade.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n  formatYear: PropTypes.func\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport { getDecadeStart } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Decade from './Decade';\nimport { getBeginOfCenturyYear } from '../shared/dates';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Decades(props) {\n  var activeStartDate = props.activeStartDate;\n  var start = getBeginOfCenturyYear(activeStartDate);\n  var end = start + 99;\n  return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n    className: \"react-calendar__century-view__decades\",\n    dateTransform: getDecadeStart,\n    dateType: \"decade\",\n    end: end,\n    start: start,\n    step: 10,\n    tile: Decade\n  }));\n}\nDecades.propTypes = _objectSpread({}, tileGroupProps);","import React from 'react';\nimport Decades from './CenturyView/Decades';\nexport default function CenturyView(props) {\n  function renderDecades() {\n    return /*#__PURE__*/React.createElement(Decades, props);\n  }\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"react-calendar__century-view\"\n  }, renderDecades());\n}","var _excluded = [\"classes\", \"formatYear\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYearStart, getYearEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__decade-view__years__year';\nexport default function Year(_ref) {\n  var classes = _ref.classes,\n      _ref$formatYear = _ref.formatYear,\n      formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var date = otherProps.date,\n      locale = otherProps.locale;\n  return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n    classes: [].concat(classes, className),\n    maxDateTransform: getYearEnd,\n    minDateTransform: getYearStart,\n    view: \"decade\"\n  }), formatYear(locale, date));\n}\nYear.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n  formatYear: PropTypes.func\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport TileGroup from '../TileGroup';\nimport Year from './Year';\nimport { getBeginOfDecadeYear } from '../shared/dates';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Years(props) {\n  var activeStartDate = props.activeStartDate;\n  var start = getBeginOfDecadeYear(activeStartDate);\n  var end = start + 9;\n  return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n    className: \"react-calendar__decade-view__years\",\n    dateTransform: function dateTransform(year) {\n      var date = new Date();\n      date.setFullYear(year, 0, 1);\n      date.setHours(0, 0, 0, 0);\n      return date;\n    },\n    dateType: \"year\",\n    end: end,\n    start: start,\n    tile: Year\n  }));\n}\nYears.propTypes = _objectSpread({}, tileGroupProps);","import React from 'react';\nimport Years from './DecadeView/Years';\nexport default function DecadeView(props) {\n  function renderYears() {\n    return /*#__PURE__*/React.createElement(Years, props);\n  }\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"react-calendar__decade-view\"\n  }, renderYears());\n}","var _excluded = [\"classes\", \"formatMonth\", \"formatMonthYear\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getMonthStart, getMonthEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { formatMonth as defaultFormatMonth, formatMonthYear as defaultFormatMonthYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__year-view__months__month';\nexport default function Month(_ref) {\n  var classes = _ref.classes,\n      _ref$formatMonth = _ref.formatMonth,\n      formatMonth = _ref$formatMonth === void 0 ? defaultFormatMonth : _ref$formatMonth,\n      _ref$formatMonthYear = _ref.formatMonthYear,\n      formatMonthYear = _ref$formatMonthYear === void 0 ? defaultFormatMonthYear : _ref$formatMonthYear,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var date = otherProps.date,\n      locale = otherProps.locale;\n  return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n    classes: [].concat(classes, className),\n    formatAbbr: formatMonthYear,\n    maxDateTransform: getMonthEnd,\n    minDateTransform: getMonthStart,\n    view: \"year\"\n  }), formatMonth(locale, date));\n}\nMonth.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n  formatMonth: PropTypes.func,\n  formatMonthYear: PropTypes.func\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYear } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Month from './Month';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Months(props) {\n  var activeStartDate = props.activeStartDate;\n  var start = 0;\n  var end = 11;\n  var year = getYear(activeStartDate);\n  return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n    className: \"react-calendar__year-view__months\",\n    dateTransform: function dateTransform(monthIndex) {\n      var date = new Date();\n      date.setFullYear(year, monthIndex, 1);\n      date.setHours(0, 0, 0, 0);\n      return date;\n    },\n    dateType: \"month\",\n    end: end,\n    start: start,\n    tile: Month\n  }));\n}\nMonths.propTypes = _objectSpread(_objectSpread({}, tileGroupProps), {}, {\n  locale: PropTypes.string\n});","import React from 'react';\nimport Months from './YearView/Months';\nexport default function YearView(props) {\n  function renderMonths() {\n    return /*#__PURE__*/React.createElement(Months, props);\n  }\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"react-calendar__year-view\"\n  }, renderMonths());\n}","var _excluded = [\"formatDay\", \"formatLongDate\", \"calendarType\", \"classes\", \"currentMonthIndex\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getDayStart, getDayEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { isWeekend } from '../shared/dates';\nimport { formatDay as defaultFormatDay, formatLongDate as defaultFormatLongDate } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__month-view__days__day';\nexport default function Day(_ref) {\n  var _ref$formatDay = _ref.formatDay,\n      formatDay = _ref$formatDay === void 0 ? defaultFormatDay : _ref$formatDay,\n      _ref$formatLongDate = _ref.formatLongDate,\n      formatLongDate = _ref$formatLongDate === void 0 ? defaultFormatLongDate : _ref$formatLongDate,\n      calendarType = _ref.calendarType,\n      classes = _ref.classes,\n      currentMonthIndex = _ref.currentMonthIndex,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var date = otherProps.date,\n      locale = otherProps.locale;\n  return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n    classes: [].concat(classes, className, isWeekend(date, calendarType) ? \"\".concat(className, \"--weekend\") : null, date.getMonth() !== currentMonthIndex ? \"\".concat(className, \"--neighboringMonth\") : null),\n    formatAbbr: formatLongDate,\n    maxDateTransform: getDayEnd,\n    minDateTransform: getDayStart,\n    view: \"month\"\n  }), formatDay(locale, date));\n}\nDay.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n  currentMonthIndex: PropTypes.number.isRequired,\n  formatDay: PropTypes.func,\n  formatLongDate: PropTypes.func\n});","var _excluded = [\"showFixedNumberOfWeeks\", \"showNeighboringMonth\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYear, getMonth, getDaysInMonth } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Day from './Day';\nimport { getDayOfWeek } from '../shared/dates';\nimport { isCalendarType, tileGroupProps } from '../shared/propTypes';\nexport default function Days(props) {\n  var activeStartDate = props.activeStartDate,\n      calendarType = props.calendarType;\n\n  var showFixedNumberOfWeeks = props.showFixedNumberOfWeeks,\n      showNeighboringMonth = props.showNeighboringMonth,\n      otherProps = _objectWithoutProperties(props, _excluded);\n\n  var year = getYear(activeStartDate);\n  var monthIndex = getMonth(activeStartDate);\n  var hasFixedNumberOfWeeks = showFixedNumberOfWeeks || showNeighboringMonth;\n  var dayOfWeek = getDayOfWeek(activeStartDate, calendarType);\n  var offset = hasFixedNumberOfWeeks ? 0 : dayOfWeek;\n  /**\n   * Defines on which day of the month the grid shall start. If we simply show current\n   * month, we obviously start on day one, but if showNeighboringMonth is set to\n   * true, we need to find the beginning of the week the first day of the month is in.\n   */\n\n  var start = (hasFixedNumberOfWeeks ? -dayOfWeek : 0) + 1;\n  /**\n   * Defines on which day of the month the grid shall end. If we simply show current\n   * month, we need to stop on the last day of the month, but if showNeighboringMonth\n   * is set to true, we need to find the end of the week the last day of the month is in.\n   */\n\n  var end = function () {\n    if (showFixedNumberOfWeeks) {\n      // Always show 6 weeks\n      return start + 6 * 7 - 1;\n    }\n\n    var daysInMonth = getDaysInMonth(activeStartDate);\n\n    if (showNeighboringMonth) {\n      var activeEndDate = new Date();\n      activeEndDate.setFullYear(year, monthIndex, daysInMonth);\n      activeEndDate.setHours(0, 0, 0, 0);\n      var daysUntilEndOfTheWeek = 7 - getDayOfWeek(activeEndDate, calendarType) - 1;\n      return daysInMonth + daysUntilEndOfTheWeek;\n    }\n\n    return daysInMonth;\n  }();\n\n  return /*#__PURE__*/React.createElement(TileGroup, _extends({}, otherProps, {\n    className: \"react-calendar__month-view__days\",\n    count: 7,\n    currentMonthIndex: monthIndex,\n    dateTransform: function dateTransform(day) {\n      var date = new Date();\n      date.setFullYear(year, monthIndex, day);\n      date.setHours(0, 0, 0, 0);\n      return date;\n    },\n    dateType: \"day\",\n    end: end,\n    offset: offset,\n    start: start,\n    tile: Day\n  }));\n}\nDays.propTypes = _objectSpread({\n  calendarType: isCalendarType.isRequired,\n  showFixedNumberOfWeeks: PropTypes.bool,\n  showNeighboringMonth: PropTypes.bool\n}, tileGroupProps);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport mergeClassNames from 'merge-class-names';\nimport { getYear, getMonth, getMonthStart } from '@wojtekmaj/date-utils';\nimport Flex from '../Flex';\nimport { getDayOfWeek, isWeekend } from '../shared/dates';\nimport { formatShortWeekday as defaultFormatShortWeekday, formatWeekday as defaultFormatWeekday } from '../shared/dateFormatter';\nimport { isCalendarType } from '../shared/propTypes';\nvar className = 'react-calendar__month-view__weekdays';\nvar weekdayClassName = \"\".concat(className, \"__weekday\");\nexport default function Weekdays(props) {\n  var calendarType = props.calendarType,\n      _props$formatShortWee = props.formatShortWeekday,\n      formatShortWeekday = _props$formatShortWee === void 0 ? defaultFormatShortWeekday : _props$formatShortWee,\n      _props$formatWeekday = props.formatWeekday,\n      formatWeekday = _props$formatWeekday === void 0 ? defaultFormatWeekday : _props$formatWeekday,\n      locale = props.locale,\n      onMouseLeave = props.onMouseLeave;\n  var anyDate = new Date();\n  var beginOfMonth = getMonthStart(anyDate);\n  var year = getYear(beginOfMonth);\n  var monthIndex = getMonth(beginOfMonth);\n  var weekdays = [];\n\n  for (var weekday = 1; weekday <= 7; weekday += 1) {\n    var weekdayDate = new Date(year, monthIndex, weekday - getDayOfWeek(beginOfMonth, calendarType));\n    var abbr = formatWeekday(locale, weekdayDate);\n    weekdays.push( /*#__PURE__*/React.createElement(\"div\", {\n      key: weekday,\n      className: mergeClassNames(weekdayClassName, isWeekend(weekdayDate, calendarType) && \"\".concat(weekdayClassName, \"--weekend\"))\n    }, /*#__PURE__*/React.createElement(\"abbr\", {\n      \"aria-label\": abbr,\n      title: abbr\n    }, formatShortWeekday(locale, weekdayDate).replace('.', ''))));\n  }\n\n  return /*#__PURE__*/React.createElement(Flex, {\n    className: className,\n    count: 7,\n    onFocus: onMouseLeave,\n    onMouseOver: onMouseLeave\n  }, weekdays);\n}\nWeekdays.propTypes = {\n  calendarType: isCalendarType.isRequired,\n  formatShortWeekday: PropTypes.func,\n  formatWeekday: PropTypes.func,\n  locale: PropTypes.string,\n  onMouseLeave: PropTypes.func\n};","var _excluded = [\"date\", \"onClickWeekNumber\", \"weekNumber\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar className = 'react-calendar__tile';\nexport default function WeekNumber(_ref) {\n  var date = _ref.date,\n      onClickWeekNumber = _ref.onClickWeekNumber,\n      weekNumber = _ref.weekNumber,\n      otherProps = _objectWithoutProperties(_ref, _excluded);\n\n  var props = _objectSpread({\n    className: className\n  }, otherProps);\n\n  var children = /*#__PURE__*/React.createElement(\"span\", null, weekNumber);\n  return onClickWeekNumber ? /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n    onClick: function onClick(event) {\n      return onClickWeekNumber(weekNumber, date, event);\n    },\n    type: \"button\"\n  }), children) : /*#__PURE__*/React.createElement(\"div\", props, children);\n}\nWeekNumber.propTypes = {\n  date: PropTypes.instanceOf(Date).isRequired,\n  onClickWeekNumber: PropTypes.func,\n  weekNumber: PropTypes.node.isRequired\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYear, getMonth, getDate, getDaysInMonth } from '@wojtekmaj/date-utils';\nimport WeekNumber from './WeekNumber';\nimport Flex from '../Flex';\nimport { getBeginOfWeek, getDayOfWeek, getWeekNumber } from '../shared/dates';\nimport { isCalendarType } from '../shared/propTypes';\nexport default function WeekNumbers(props) {\n  var activeStartDate = props.activeStartDate,\n      calendarType = props.calendarType,\n      onClickWeekNumber = props.onClickWeekNumber,\n      onMouseLeave = props.onMouseLeave,\n      showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n  var numberOfWeeks = function () {\n    if (showFixedNumberOfWeeks) {\n      return 6;\n    }\n\n    var numberOfDays = getDaysInMonth(activeStartDate);\n    var startWeekday = getDayOfWeek(activeStartDate, calendarType);\n    var days = numberOfDays - (7 - startWeekday);\n    return 1 + Math.ceil(days / 7);\n  }();\n\n  var dates = function () {\n    var year = getYear(activeStartDate);\n    var monthIndex = getMonth(activeStartDate);\n    var day = getDate(activeStartDate);\n    var result = [];\n\n    for (var index = 0; index < numberOfWeeks; index += 1) {\n      result.push(getBeginOfWeek(new Date(year, monthIndex, day + index * 7), calendarType));\n    }\n\n    return result;\n  }();\n\n  var weekNumbers = dates.map(function (date) {\n    return getWeekNumber(date, calendarType);\n  });\n  return /*#__PURE__*/React.createElement(Flex, {\n    className: \"react-calendar__month-view__weekNumbers\",\n    count: numberOfWeeks,\n    direction: \"column\",\n    onFocus: onMouseLeave,\n    onMouseOver: onMouseLeave,\n    style: {\n      flexBasis: 'calc(100% * (1 / 8)',\n      flexShrink: 0\n    }\n  }, weekNumbers.map(function (weekNumber, weekIndex) {\n    return /*#__PURE__*/React.createElement(WeekNumber, {\n      key: weekNumber,\n      date: dates[weekIndex],\n      onClickWeekNumber: onClickWeekNumber,\n      weekNumber: weekNumber\n    });\n  }));\n}\nWeekNumbers.propTypes = {\n  activeStartDate: PropTypes.instanceOf(Date).isRequired,\n  calendarType: isCalendarType.isRequired,\n  onClickWeekNumber: PropTypes.func,\n  onMouseLeave: PropTypes.func,\n  showFixedNumberOfWeeks: PropTypes.bool\n};","var _excluded = [\"calendarType\", \"formatShortWeekday\", \"formatWeekday\", \"onClickWeekNumber\", \"showWeekNumbers\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport mergeClassNames from 'merge-class-names';\nimport Days from './MonthView/Days';\nimport Weekdays from './MonthView/Weekdays';\nimport WeekNumbers from './MonthView/WeekNumbers';\nimport { CALENDAR_TYPES, CALENDAR_TYPE_LOCALES } from './shared/const';\nimport { isCalendarType } from './shared/propTypes';\n\nfunction getCalendarTypeFromLocale(locale) {\n  return Object.keys(CALENDAR_TYPE_LOCALES).find(function (calendarType) {\n    return CALENDAR_TYPE_LOCALES[calendarType].includes(locale);\n  }) || CALENDAR_TYPES.ISO_8601;\n}\n\nexport default function MonthView(props) {\n  var activeStartDate = props.activeStartDate,\n      locale = props.locale,\n      onMouseLeave = props.onMouseLeave,\n      showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n  var _props$calendarType = props.calendarType,\n      calendarType = _props$calendarType === void 0 ? getCalendarTypeFromLocale(locale) : _props$calendarType,\n      formatShortWeekday = props.formatShortWeekday,\n      formatWeekday = props.formatWeekday,\n      onClickWeekNumber = props.onClickWeekNumber,\n      showWeekNumbers = props.showWeekNumbers,\n      childProps = _objectWithoutProperties(props, _excluded);\n\n  function renderWeekdays() {\n    return /*#__PURE__*/React.createElement(Weekdays, {\n      calendarType: calendarType,\n      formatShortWeekday: formatShortWeekday,\n      formatWeekday: formatWeekday,\n      locale: locale,\n      onMouseLeave: onMouseLeave\n    });\n  }\n\n  function renderWeekNumbers() {\n    if (!showWeekNumbers) {\n      return null;\n    }\n\n    return /*#__PURE__*/React.createElement(WeekNumbers, {\n      activeStartDate: activeStartDate,\n      calendarType: calendarType,\n      onClickWeekNumber: onClickWeekNumber,\n      onMouseLeave: onMouseLeave,\n      showFixedNumberOfWeeks: showFixedNumberOfWeeks\n    });\n  }\n\n  function renderDays() {\n    return /*#__PURE__*/React.createElement(Days, _extends({\n      calendarType: calendarType\n    }, childProps));\n  }\n\n  var className = 'react-calendar__month-view';\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: mergeClassNames(className, showWeekNumbers ? \"\".concat(className, \"--weekNumbers\") : '')\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: {\n      display: 'flex',\n      alignItems: 'flex-end'\n    }\n  }, renderWeekNumbers(), /*#__PURE__*/React.createElement(\"div\", {\n    style: {\n      flexGrow: 1,\n      width: '100%'\n    }\n  }, renderWeekdays(), renderDays())));\n}\nMonthView.propTypes = {\n  activeStartDate: PropTypes.instanceOf(Date).isRequired,\n  calendarType: isCalendarType,\n  formatShortWeekday: PropTypes.func,\n  formatWeekday: PropTypes.func,\n  locale: PropTypes.string,\n  onClickWeekNumber: PropTypes.func,\n  onMouseLeave: PropTypes.func,\n  showFixedNumberOfWeeks: PropTypes.bool,\n  showWeekNumbers: PropTypes.bool\n};","var _excluded = [\"activeStartDate\", \"defaultActiveStartDate\", \"defaultValue\", \"defaultView\", \"maxDetail\", \"minDetail\", \"value\", \"view\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _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; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _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.\"); }\n\nfunction _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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _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; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport mergeClassNames from 'merge-class-names';\nimport Navigation from './Calendar/Navigation';\nimport CenturyView from './CenturyView';\nimport DecadeView from './DecadeView';\nimport YearView from './YearView';\nimport MonthView from './MonthView';\nimport { getBegin, getBeginNext, getEnd, getValueRange } from './shared/dates';\nimport { isCalendarType, isClassName, isMaxDate, isMinDate, isRef, isValue, isView } from './shared/propTypes';\nimport { between } from './shared/utils';\nvar defaultMinDate = new Date();\ndefaultMinDate.setFullYear(1, 0, 1);\ndefaultMinDate.setHours(0, 0, 0, 0);\nvar defaultMaxDate = new Date(8.64e15);\nvar baseClassName = 'react-calendar';\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nfunction toDate(value) {\n  if (value instanceof Date) {\n    return value;\n  }\n\n  return new Date(value);\n}\n/**\n * Returns views array with disallowed values cut off.\n */\n\n\nfunction getLimitedViews(minDetail, maxDetail) {\n  return allViews.slice(allViews.indexOf(minDetail), allViews.indexOf(maxDetail) + 1);\n}\n/**\n * Determines whether a given view is allowed with currently applied settings.\n */\n\n\nfunction isViewAllowed(view, minDetail, maxDetail) {\n  var views = getLimitedViews(minDetail, maxDetail);\n  return views.indexOf(view) !== -1;\n}\n/**\n * Gets either provided view if allowed by minDetail and maxDetail, or gets\n * the default view if not allowed.\n */\n\n\nfunction getView(view, minDetail, maxDetail) {\n  if (isViewAllowed(view, minDetail, maxDetail)) {\n    return view;\n  }\n\n  return maxDetail;\n}\n/**\n * Returns value type that can be returned with currently applied settings.\n */\n\n\nfunction getValueType(maxDetail) {\n  return allValueTypes[allViews.indexOf(maxDetail)];\n}\n\nfunction getValue(value, index) {\n  if (!value) {\n    return null;\n  }\n\n  var rawValue = Array.isArray(value) && value.length === 2 ? value[index] : value;\n\n  if (!rawValue) {\n    return null;\n  }\n\n  var valueDate = toDate(rawValue);\n\n  if (isNaN(valueDate.getTime())) {\n    throw new Error(\"Invalid date: \".concat(value));\n  }\n\n  return valueDate;\n}\n\nfunction getDetailValue(_ref, index) {\n  var value = _ref.value,\n      minDate = _ref.minDate,\n      maxDate = _ref.maxDate,\n      maxDetail = _ref.maxDetail;\n  var valuePiece = getValue(value, index);\n\n  if (!valuePiece) {\n    return null;\n  }\n\n  var valueType = getValueType(maxDetail);\n  var detailValueFrom = [getBegin, getEnd][index](valueType, valuePiece);\n  return between(detailValueFrom, minDate, maxDate);\n}\n\nvar getDetailValueFrom = function getDetailValueFrom(args) {\n  return getDetailValue(args, 0);\n};\n\nvar getDetailValueTo = function getDetailValueTo(args) {\n  return getDetailValue(args, 1);\n};\n\nvar getDetailValueArray = function getDetailValueArray(args) {\n  var value = args.value;\n\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return [getDetailValueFrom, getDetailValueTo].map(function (fn) {\n    return fn(args);\n  });\n};\n\nfunction getActiveStartDate(props) {\n  var maxDate = props.maxDate,\n      maxDetail = props.maxDetail,\n      minDate = props.minDate,\n      minDetail = props.minDetail,\n      value = props.value,\n      view = props.view;\n  var rangeType = getView(view, minDetail, maxDetail);\n  var valueFrom = getDetailValueFrom({\n    value: value,\n    minDate: minDate,\n    maxDate: maxDate,\n    maxDetail: maxDetail\n  }) || new Date();\n  return getBegin(rangeType, valueFrom);\n}\n\nfunction getInitialActiveStartDate(props) {\n  var activeStartDate = props.activeStartDate,\n      defaultActiveStartDate = props.defaultActiveStartDate,\n      defaultValue = props.defaultValue,\n      defaultView = props.defaultView,\n      maxDetail = props.maxDetail,\n      minDetail = props.minDetail,\n      value = props.value,\n      view = props.view,\n      otherProps = _objectWithoutProperties(props, _excluded);\n\n  var rangeType = getView(view, minDetail, maxDetail);\n  var valueFrom = activeStartDate || defaultActiveStartDate;\n\n  if (valueFrom) {\n    return getBegin(rangeType, valueFrom);\n  }\n\n  return getActiveStartDate(_objectSpread({\n    maxDetail: maxDetail,\n    minDetail: minDetail,\n    value: value || defaultValue,\n    view: view || defaultView\n  }, otherProps));\n}\n\nvar getIsSingleValue = function getIsSingleValue(value) {\n  return value && [].concat(value).length === 1;\n};\n\nvar Calendar = /*#__PURE__*/function (_Component) {\n  _inherits(Calendar, _Component);\n\n  var _super = _createSuper(Calendar);\n\n  function Calendar() {\n    var _this;\n\n    _classCallCheck(this, Calendar);\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(_args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      activeStartDate: _this.props.defaultActiveStartDate,\n      value: _this.props.defaultValue,\n      view: _this.props.defaultView\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"setStateAndCallCallbacks\", function (nextState, event, callback) {\n      var _assertThisInitialize = _assertThisInitialized(_this),\n          previousActiveStartDate = _assertThisInitialize.activeStartDate,\n          previousView = _assertThisInitialize.view;\n\n      var _this$props = _this.props,\n          allowPartialRange = _this$props.allowPartialRange,\n          onActiveStartDateChange = _this$props.onActiveStartDateChange,\n          onChange = _this$props.onChange,\n          onViewChange = _this$props.onViewChange,\n          selectRange = _this$props.selectRange;\n      var prevArgs = {\n        activeStartDate: previousActiveStartDate,\n        view: previousView\n      };\n\n      _this.setState(nextState, function () {\n        var args = {\n          action: nextState.action,\n          activeStartDate: nextState.activeStartDate || _this.activeStartDate,\n          value: nextState.value || _this.value,\n          view: nextState.view || _this.view\n        };\n\n        function shouldUpdate(key) {\n          return (// Key must exist, and…\n            key in nextState && ( // …key changed from undefined to defined or the other way around, or…\n            _typeof(nextState[key]) !== _typeof(prevArgs[key]) || ( // …value changed.\n            nextState[key] instanceof Date ? nextState[key].getTime() !== prevArgs[key].getTime() : nextState[key] !== prevArgs[key]))\n          );\n        }\n\n        if (shouldUpdate('activeStartDate')) {\n          if (onActiveStartDateChange) onActiveStartDateChange(args);\n        }\n\n        if (shouldUpdate('view')) {\n          if (onViewChange) onViewChange(args);\n        }\n\n        if (shouldUpdate('value')) {\n          if (onChange) {\n            if (selectRange) {\n              var isSingleValue = getIsSingleValue(nextState.value);\n\n              if (!isSingleValue) {\n                onChange(nextState.value, event);\n              } else if (allowPartialRange) {\n                onChange([nextState.value], event);\n              }\n            } else {\n              onChange(nextState.value, event);\n            }\n          }\n        }\n\n        if (callback) callback(args);\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"setActiveStartDate\", function (nextActiveStartDate, action) {\n      _this.setStateAndCallCallbacks({\n        action: action,\n        activeStartDate: nextActiveStartDate\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"drillDown\", function (nextActiveStartDate, event) {\n      if (!_this.drillDownAvailable) {\n        return;\n      }\n\n      _this.onClickTile(nextActiveStartDate, event);\n\n      var _assertThisInitialize2 = _assertThisInitialized(_this),\n          view = _assertThisInitialize2.view,\n          views = _assertThisInitialize2.views;\n\n      var onDrillDown = _this.props.onDrillDown;\n      var nextView = views[views.indexOf(view) + 1];\n\n      _this.setStateAndCallCallbacks({\n        action: 'drillDown',\n        activeStartDate: nextActiveStartDate,\n        view: nextView\n      }, undefined, onDrillDown);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"drillUp\", function () {\n      if (!_this.drillUpAvailable) {\n        return;\n      }\n\n      var _assertThisInitialize3 = _assertThisInitialized(_this),\n          activeStartDate = _assertThisInitialize3.activeStartDate,\n          view = _assertThisInitialize3.view,\n          views = _assertThisInitialize3.views;\n\n      var onDrillUp = _this.props.onDrillUp;\n      var nextView = views[views.indexOf(view) - 1];\n      var nextActiveStartDate = getBegin(nextView, activeStartDate);\n\n      _this.setStateAndCallCallbacks({\n        action: 'drillUp',\n        activeStartDate: nextActiveStartDate,\n        view: nextView\n      }, undefined, onDrillUp);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value, event) {\n      var _assertThisInitialize4 = _assertThisInitialized(_this),\n          previousValue = _assertThisInitialize4.value;\n\n      var _this$props2 = _this.props,\n          goToRangeStartOnSelect = _this$props2.goToRangeStartOnSelect,\n          selectRange = _this$props2.selectRange;\n\n      _this.onClickTile(value, event);\n\n      var isFirstValueInRange = selectRange && !getIsSingleValue(previousValue);\n      var nextValue;\n\n      if (selectRange) {\n        // Range selection turned on\n        var _assertThisInitialize5 = _assertThisInitialized(_this),\n            valueType = _assertThisInitialize5.valueType;\n\n        if (isFirstValueInRange) {\n          // Value has 0 or 2 elements - either way we're starting a new array\n          // First value\n          nextValue = getBegin(valueType, value);\n        } else {\n          // Second value\n          nextValue = getValueRange(valueType, previousValue, value);\n        }\n      } else {\n        // Range selection turned off\n        nextValue = _this.getProcessedValue(value);\n      }\n\n      var nextActiveStartDate = // Range selection turned off\n      !selectRange || // Range selection turned on, first value\n      isFirstValueInRange || // Range selection turned on, second value, goToRangeStartOnSelect toggled on\n      goToRangeStartOnSelect ? getActiveStartDate(_objectSpread(_objectSpread({}, _this.props), {}, {\n        value: nextValue\n      })) : null;\n      event.persist();\n\n      _this.setStateAndCallCallbacks({\n        action: 'onChange',\n        activeStartDate: nextActiveStartDate,\n        value: nextValue\n      }, event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onClickTile\", function (value, event) {\n      var _assertThisInitialize6 = _assertThisInitialized(_this),\n          view = _assertThisInitialize6.view;\n\n      var _this$props3 = _this.props,\n          onClickDay = _this$props3.onClickDay,\n          onClickDecade = _this$props3.onClickDecade,\n          onClickMonth = _this$props3.onClickMonth,\n          onClickYear = _this$props3.onClickYear;\n\n      var callback = function () {\n        switch (view) {\n          case 'century':\n            return onClickDecade;\n\n          case 'decade':\n            return onClickYear;\n\n          case 'year':\n            return onClickMonth;\n\n          case 'month':\n            return onClickDay;\n\n          default:\n            throw new Error(\"Invalid view: \".concat(view, \".\"));\n        }\n      }();\n\n      if (callback) callback(value, event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseOver\", function (value) {\n      _this.setState(function (prevState) {\n        if (prevState.hover && prevState.hover.getTime() === value.getTime()) {\n          return null;\n        }\n\n        return {\n          hover: value\n        };\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function () {\n      _this.setState({\n        hover: null\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(Calendar, [{\n    key: \"activeStartDate\",\n    get: function get() {\n      var activeStartDateProps = this.props.activeStartDate;\n      var activeStartDateState = this.state.activeStartDate;\n      return activeStartDateProps || activeStartDateState || getInitialActiveStartDate(this.props);\n    }\n  }, {\n    key: \"value\",\n    get: function get() {\n      var _this$props4 = this.props,\n          selectRange = _this$props4.selectRange,\n          valueProps = _this$props4.value;\n      var valueState = this.state.value; // In the middle of range selection, use value from state\n\n      if (selectRange && getIsSingleValue(valueState)) {\n        return valueState;\n      }\n\n      return valueProps !== undefined ? valueProps : valueState;\n    }\n  }, {\n    key: \"valueType\",\n    get: function get() {\n      var maxDetail = this.props.maxDetail;\n      return getValueType(maxDetail);\n    }\n  }, {\n    key: \"view\",\n    get: function get() {\n      var _this$props5 = this.props,\n          minDetail = _this$props5.minDetail,\n          maxDetail = _this$props5.maxDetail,\n          viewProps = _this$props5.view;\n      var viewState = this.state.view;\n      return getView(viewProps || viewState, minDetail, maxDetail);\n    }\n  }, {\n    key: \"views\",\n    get: function get() {\n      var _this$props6 = this.props,\n          minDetail = _this$props6.minDetail,\n          maxDetail = _this$props6.maxDetail;\n      return getLimitedViews(minDetail, maxDetail);\n    }\n  }, {\n    key: \"hover\",\n    get: function get() {\n      var selectRange = this.props.selectRange;\n      var hover = this.state.hover;\n      return selectRange ? hover : null;\n    }\n  }, {\n    key: \"drillDownAvailable\",\n    get: function get() {\n      var view = this.view,\n          views = this.views;\n      return views.indexOf(view) < views.length - 1;\n    }\n  }, {\n    key: \"drillUpAvailable\",\n    get: function get() {\n      var view = this.view,\n          views = this.views;\n      return views.indexOf(view) > 0;\n    }\n    /**\n     * Gets current value in a desired format.\n     */\n\n  }, {\n    key: \"getProcessedValue\",\n    value: function getProcessedValue(value) {\n      var _this$props7 = this.props,\n          minDate = _this$props7.minDate,\n          maxDate = _this$props7.maxDate,\n          maxDetail = _this$props7.maxDetail,\n          returnValue = _this$props7.returnValue;\n\n      var processFunction = function () {\n        switch (returnValue) {\n          case 'start':\n            return getDetailValueFrom;\n\n          case 'end':\n            return getDetailValueTo;\n\n          case 'range':\n            return getDetailValueArray;\n\n          default:\n            throw new Error('Invalid returnValue.');\n        }\n      }();\n\n      return processFunction({\n        value: value,\n        minDate: minDate,\n        maxDate: maxDate,\n        maxDetail: maxDetail\n      });\n    }\n  }, {\n    key: \"renderContent\",\n    value: function renderContent(next) {\n      var currentActiveStartDate = this.activeStartDate,\n          onMouseOver = this.onMouseOver,\n          valueType = this.valueType,\n          value = this.value,\n          view = this.view;\n      var _this$props8 = this.props,\n          calendarType = _this$props8.calendarType,\n          locale = _this$props8.locale,\n          maxDate = _this$props8.maxDate,\n          minDate = _this$props8.minDate,\n          selectRange = _this$props8.selectRange,\n          tileClassName = _this$props8.tileClassName,\n          tileContent = _this$props8.tileContent,\n          tileDisabled = _this$props8.tileDisabled;\n      var hover = this.hover;\n      var activeStartDate = next ? getBeginNext(view, currentActiveStartDate) : getBegin(view, currentActiveStartDate);\n      var onClick = this.drillDownAvailable ? this.drillDown : this.onChange;\n      var commonProps = {\n        activeStartDate: activeStartDate,\n        hover: hover,\n        locale: locale,\n        maxDate: maxDate,\n        minDate: minDate,\n        onClick: onClick,\n        onMouseOver: selectRange ? onMouseOver : null,\n        tileClassName: tileClassName,\n        tileContent: tileContent,\n        tileDisabled: tileDisabled,\n        value: value,\n        valueType: valueType\n      };\n\n      switch (view) {\n        case 'century':\n          {\n            var formatYear = this.props.formatYear;\n            return /*#__PURE__*/React.createElement(CenturyView, _extends({\n              formatYear: formatYear\n            }, commonProps));\n          }\n\n        case 'decade':\n          {\n            var _formatYear = this.props.formatYear;\n            return /*#__PURE__*/React.createElement(DecadeView, _extends({\n              formatYear: _formatYear\n            }, commonProps));\n          }\n\n        case 'year':\n          {\n            var _this$props9 = this.props,\n                formatMonth = _this$props9.formatMonth,\n                formatMonthYear = _this$props9.formatMonthYear;\n            return /*#__PURE__*/React.createElement(YearView, _extends({\n              formatMonth: formatMonth,\n              formatMonthYear: formatMonthYear\n            }, commonProps));\n          }\n\n        case 'month':\n          {\n            var _this$props10 = this.props,\n                formatDay = _this$props10.formatDay,\n                formatLongDate = _this$props10.formatLongDate,\n                formatShortWeekday = _this$props10.formatShortWeekday,\n                formatWeekday = _this$props10.formatWeekday,\n                onClickWeekNumber = _this$props10.onClickWeekNumber,\n                showDoubleView = _this$props10.showDoubleView,\n                showFixedNumberOfWeeks = _this$props10.showFixedNumberOfWeeks,\n                showNeighboringMonth = _this$props10.showNeighboringMonth,\n                showWeekNumbers = _this$props10.showWeekNumbers;\n            var onMouseLeave = this.onMouseLeave;\n            return /*#__PURE__*/React.createElement(MonthView, _extends({\n              calendarType: calendarType,\n              formatDay: formatDay,\n              formatLongDate: formatLongDate,\n              formatShortWeekday: formatShortWeekday,\n              formatWeekday: formatWeekday,\n              onClickWeekNumber: onClickWeekNumber,\n              onMouseLeave: selectRange ? onMouseLeave : null,\n              showFixedNumberOfWeeks: typeof showFixedNumberOfWeeks !== 'undefined' ? showFixedNumberOfWeeks : showDoubleView,\n              showNeighboringMonth: showNeighboringMonth,\n              showWeekNumbers: showWeekNumbers\n            }, commonProps));\n          }\n\n        default:\n          throw new Error(\"Invalid view: \".concat(view, \".\"));\n      }\n    }\n  }, {\n    key: \"renderNavigation\",\n    value: function renderNavigation() {\n      var showNavigation = this.props.showNavigation;\n\n      if (!showNavigation) {\n        return null;\n      }\n\n      var activeStartDate = this.activeStartDate,\n          view = this.view,\n          views = this.views;\n      var _this$props11 = this.props,\n          formatMonthYear = _this$props11.formatMonthYear,\n          formatYear = _this$props11.formatYear,\n          locale = _this$props11.locale,\n          maxDate = _this$props11.maxDate,\n          minDate = _this$props11.minDate,\n          navigationAriaLabel = _this$props11.navigationAriaLabel,\n          navigationAriaLive = _this$props11.navigationAriaLive,\n          navigationLabel = _this$props11.navigationLabel,\n          next2AriaLabel = _this$props11.next2AriaLabel,\n          next2Label = _this$props11.next2Label,\n          nextAriaLabel = _this$props11.nextAriaLabel,\n          nextLabel = _this$props11.nextLabel,\n          prev2AriaLabel = _this$props11.prev2AriaLabel,\n          prev2Label = _this$props11.prev2Label,\n          prevAriaLabel = _this$props11.prevAriaLabel,\n          prevLabel = _this$props11.prevLabel,\n          showDoubleView = _this$props11.showDoubleView;\n      return /*#__PURE__*/React.createElement(Navigation, {\n        activeStartDate: activeStartDate,\n        drillUp: this.drillUp,\n        formatMonthYear: formatMonthYear,\n        formatYear: formatYear,\n        locale: locale,\n        maxDate: maxDate,\n        minDate: minDate,\n        navigationAriaLabel: navigationAriaLabel,\n        navigationAriaLive: navigationAriaLive,\n        navigationLabel: navigationLabel,\n        next2AriaLabel: next2AriaLabel,\n        next2Label: next2Label,\n        nextAriaLabel: nextAriaLabel,\n        nextLabel: nextLabel,\n        prev2AriaLabel: prev2AriaLabel,\n        prev2Label: prev2Label,\n        prevAriaLabel: prevAriaLabel,\n        prevLabel: prevLabel,\n        setActiveStartDate: this.setActiveStartDate,\n        showDoubleView: showDoubleView,\n        view: view,\n        views: views\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props12 = this.props,\n          className = _this$props12.className,\n          inputRef = _this$props12.inputRef,\n          selectRange = _this$props12.selectRange,\n          showDoubleView = _this$props12.showDoubleView;\n      var onMouseLeave = this.onMouseLeave,\n          value = this.value;\n      var valueArray = [].concat(value);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: mergeClassNames(baseClassName, selectRange && valueArray.length === 1 && \"\".concat(baseClassName, \"--selectRange\"), showDoubleView && \"\".concat(baseClassName, \"--doubleView\"), className),\n        ref: inputRef\n      }, this.renderNavigation(), /*#__PURE__*/React.createElement(\"div\", {\n        className: \"\".concat(baseClassName, \"__viewContainer\"),\n        onBlur: selectRange ? onMouseLeave : null,\n        onMouseLeave: selectRange ? onMouseLeave : null\n      }, this.renderContent(), showDoubleView && this.renderContent(true)));\n    }\n  }]);\n\n  return Calendar;\n}(Component);\n\nexport { Calendar as default };\nCalendar.defaultProps = {\n  goToRangeStartOnSelect: true,\n  maxDate: defaultMaxDate,\n  maxDetail: 'month',\n  minDate: defaultMinDate,\n  minDetail: 'century',\n  returnValue: 'start',\n  showNavigation: true,\n  showNeighboringMonth: true\n};\nvar isActiveStartDate = PropTypes.instanceOf(Date);\nvar isLooseValue = PropTypes.oneOfType([PropTypes.string, isValue]);\nCalendar.propTypes = {\n  activeStartDate: isActiveStartDate,\n  allowPartialRange: PropTypes.bool,\n  calendarType: isCalendarType,\n  className: isClassName,\n  defaultActiveStartDate: isActiveStartDate,\n  defaultValue: isLooseValue,\n  defaultView: isView,\n  formatDay: PropTypes.func,\n  formatLongDate: PropTypes.func,\n  formatMonth: PropTypes.func,\n  formatMonthYear: PropTypes.func,\n  formatShortWeekday: PropTypes.func,\n  formatWeekday: PropTypes.func,\n  formatYear: PropTypes.func,\n  goToRangeStartOnSelect: PropTypes.bool,\n  inputRef: isRef,\n  locale: PropTypes.string,\n  maxDate: isMaxDate,\n  maxDetail: PropTypes.oneOf(allViews),\n  minDate: isMinDate,\n  minDetail: PropTypes.oneOf(allViews),\n  navigationAriaLabel: PropTypes.string,\n  navigationAriaLive: PropTypes.oneOf(['off', 'polite', 'assertive']),\n  navigationLabel: PropTypes.func,\n  next2AriaLabel: PropTypes.string,\n  next2Label: PropTypes.node,\n  nextAriaLabel: PropTypes.string,\n  nextLabel: PropTypes.node,\n  onActiveStartDateChange: PropTypes.func,\n  onChange: PropTypes.func,\n  onClickDay: PropTypes.func,\n  onClickDecade: PropTypes.func,\n  onClickMonth: PropTypes.func,\n  onClickWeekNumber: PropTypes.func,\n  onClickYear: PropTypes.func,\n  onDrillDown: PropTypes.func,\n  onDrillUp: PropTypes.func,\n  onViewChange: PropTypes.func,\n  prev2AriaLabel: PropTypes.string,\n  prev2Label: PropTypes.node,\n  prevAriaLabel: PropTypes.string,\n  prevLabel: PropTypes.node,\n  returnValue: PropTypes.oneOf(['start', 'end', 'range']),\n  selectRange: PropTypes.bool,\n  showDoubleView: PropTypes.bool,\n  showFixedNumberOfWeeks: PropTypes.bool,\n  showNavigation: PropTypes.bool,\n  showNeighboringMonth: PropTypes.bool,\n  showWeekNumbers: PropTypes.bool,\n  tileClassName: PropTypes.oneOfType([PropTypes.func, isClassName]),\n  tileContent: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n  tileDisabled: PropTypes.func,\n  value: isLooseValue,\n  view: isView\n};","import Calendar from './Calendar';\nimport Navigation from './Calendar/Navigation';\nimport CenturyView from './CenturyView';\nimport DecadeView from './DecadeView';\nimport YearView from './YearView';\nimport MonthView from './MonthView';\nexport default Calendar;\nexport { Calendar, Navigation, CenturyView, DecadeView, YearView, MonthView };","function getRect(element) {\n    return element.getBoundingClientRect();\n}\nexport default function detectElementOverflow(element, container) {\n    return {\n        get collidedTop() {\n            return getRect(element).top < getRect(container).top;\n        },\n        get collidedBottom() {\n            return getRect(element).bottom > getRect(container).bottom;\n        },\n        get collidedLeft() {\n            return getRect(element).left < getRect(container).left;\n        },\n        get collidedRight() {\n            return getRect(element).right > getRect(container).right;\n        },\n        get overflowTop() {\n            return getRect(container).top - getRect(element).top;\n        },\n        get overflowBottom() {\n            return getRect(element).bottom - getRect(container).bottom;\n        },\n        get overflowLeft() {\n            return getRect(container).left - getRect(element).left;\n        },\n        get overflowRight() {\n            return getRect(element).right - getRect(container).right;\n        },\n    };\n}\n","'use client';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport React, { Component } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport detectElementOverflow from 'detect-element-overflow';\nimport warning from 'tiny-warning';\nvar isBrowser = typeof document !== 'undefined';\nvar isDisplayContentsSupported = isBrowser && 'CSS' in window && 'supports' in window.CSS && CSS.supports('display', 'contents');\nvar isMutationObserverSupported = isBrowser && 'MutationObserver' in window;\nfunction capitalize(string) {\n    return (string.charAt(0).toUpperCase() + string.slice(1));\n}\nfunction findScrollContainer(element) {\n    var parent = element.parentElement;\n    while (parent) {\n        var overflow = window.getComputedStyle(parent).overflow;\n        if (overflow.split(' ').every(function (o) { return o === 'auto' || o === 'scroll'; })) {\n            return parent;\n        }\n        parent = parent.parentElement;\n    }\n    return document.documentElement;\n}\nfunction alignAxis(_a) {\n    var axis = _a.axis, container = _a.container, element = _a.element, invertAxis = _a.invertAxis, secondary = _a.secondary, scrollContainer = _a.scrollContainer, spacing = _a.spacing;\n    var style = window.getComputedStyle(element);\n    var parent = container.parentElement;\n    if (!parent) {\n        return;\n    }\n    var scrollContainerCollisions = detectElementOverflow(parent, scrollContainer);\n    var documentCollisions = detectElementOverflow(parent, document.documentElement);\n    var isX = axis === 'x';\n    var startProperty = isX ? 'left' : 'top';\n    var endProperty = isX ? 'right' : 'bottom';\n    var sizeProperty = isX ? 'width' : 'height';\n    var overflowStartProperty = \"overflow\".concat(capitalize(startProperty));\n    var overflowEndProperty = \"overflow\".concat(capitalize(endProperty));\n    var scrollProperty = \"scroll\".concat(capitalize(startProperty));\n    var uppercasedSizeProperty = capitalize(sizeProperty);\n    var offsetSizeProperty = \"offset\".concat(uppercasedSizeProperty);\n    var clientSizeProperty = \"client\".concat(uppercasedSizeProperty);\n    var minSizeProperty = \"min-\".concat(sizeProperty);\n    var scrollbarWidth = scrollContainer[offsetSizeProperty] - scrollContainer[clientSizeProperty];\n    var startSpacing = typeof spacing === 'object' ? spacing[startProperty] : spacing;\n    var availableStartSpace = -Math.max(scrollContainerCollisions[overflowStartProperty], documentCollisions[overflowStartProperty] + document.documentElement[scrollProperty]) - startSpacing;\n    var endSpacing = typeof spacing === 'object' ? spacing[endProperty] : spacing;\n    var availableEndSpace = -Math.max(scrollContainerCollisions[overflowEndProperty], documentCollisions[overflowEndProperty] - document.documentElement[scrollProperty]) -\n        endSpacing -\n        scrollbarWidth;\n    if (secondary) {\n        availableStartSpace += parent[clientSizeProperty];\n        availableEndSpace += parent[clientSizeProperty];\n    }\n    var offsetSize = element[offsetSizeProperty];\n    function displayStart() {\n        element.style[startProperty] = 'auto';\n        element.style[endProperty] = secondary ? '0' : '100%';\n    }\n    function displayEnd() {\n        element.style[startProperty] = secondary ? '0' : '100%';\n        element.style[endProperty] = 'auto';\n    }\n    function displayIfFits(availableSpace, display) {\n        var fits = offsetSize <= availableSpace;\n        if (fits) {\n            display();\n        }\n        return fits;\n    }\n    function displayStartIfFits() {\n        return displayIfFits(availableStartSpace, displayStart);\n    }\n    function displayEndIfFits() {\n        return displayIfFits(availableEndSpace, displayEnd);\n    }\n    function displayWhereverShrinkedFits() {\n        var moreSpaceStart = availableStartSpace > availableEndSpace;\n        var rawMinSize = style.getPropertyValue(minSizeProperty);\n        var minSize = rawMinSize ? parseInt(rawMinSize, 10) : null;\n        function shrinkToSize(size) {\n            warning(!minSize || size >= minSize, \"<Fit />'s child will not fit anywhere with its current \".concat(minSizeProperty, \" of \").concat(minSize, \"px.\"));\n            var newSize = Math.max(size, minSize || 0);\n            warning(false, \"<Fit />'s child needed to have its \".concat(sizeProperty, \" decreased to \").concat(newSize, \"px.\"));\n            element.style[sizeProperty] = \"\".concat(newSize, \"px\");\n        }\n        if (moreSpaceStart) {\n            shrinkToSize(availableStartSpace);\n            displayStart();\n        }\n        else {\n            shrinkToSize(availableEndSpace);\n            displayEnd();\n        }\n    }\n    var fits;\n    if (invertAxis) {\n        fits = displayStartIfFits() || displayEndIfFits();\n    }\n    else {\n        fits = displayEndIfFits() || displayStartIfFits();\n    }\n    if (!fits) {\n        displayWhereverShrinkedFits();\n    }\n}\nfunction alignMainAxis(args) {\n    alignAxis(args);\n}\nfunction alignSecondaryAxis(args) {\n    alignAxis(__assign(__assign({}, args), { axis: args.axis === 'x' ? 'y' : 'x', secondary: true }));\n}\nfunction alignBothAxis(args) {\n    var invertAxis = args.invertAxis, invertSecondaryAxis = args.invertSecondaryAxis, commonArgs = __rest(args, [\"invertAxis\", \"invertSecondaryAxis\"]);\n    alignMainAxis(__assign(__assign({}, commonArgs), { invertAxis: invertAxis }));\n    alignSecondaryAxis(__assign(__assign({}, commonArgs), { invertAxis: invertSecondaryAxis }));\n}\nvar Fit = /** @class */ (function (_super) {\n    __extends(Fit, _super);\n    function Fit() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.fit = function () {\n            var _a = _this, scrollContainer = _a.scrollContainer, container = _a.container, element = _a.element;\n            if (!scrollContainer || !container || !element) {\n                return;\n            }\n            var elementWidth = element.clientWidth;\n            var elementHeight = element.clientHeight;\n            // No need to recalculate - already did that for current dimensions\n            if (_this.elementWidth === elementWidth && _this.elementHeight === elementHeight) {\n                return;\n            }\n            // Save the dimensions so that we know we don't need to repeat the function if unchanged\n            _this.elementWidth = elementWidth;\n            _this.elementHeight = elementHeight;\n            var parent = container.parentElement;\n            // Container was unmounted\n            if (!parent) {\n                return;\n            }\n            /**\n             * We need to ensure that <Fit />'s child has a absolute position. Otherwise,\n             * we wouldn't be able to place the child in the correct position.\n             */\n            var style = window.getComputedStyle(element);\n            var position = style.position;\n            if (position !== 'absolute') {\n                element.style.position = 'absolute';\n            }\n            /**\n             * We need to ensure that <Fit />'s parent has a relative or absolute position. Otherwise,\n             * we wouldn't be able to place the child in the correct position.\n             */\n            var parentStyle = window.getComputedStyle(parent);\n            var parentPosition = parentStyle.position;\n            if (parentPosition !== 'relative' && parentPosition !== 'absolute') {\n                parent.style.position = 'relative';\n            }\n            var _b = _this.props, invertAxis = _b.invertAxis, invertSecondaryAxis = _b.invertSecondaryAxis, _c = _b.mainAxis, mainAxis = _c === void 0 ? 'y' : _c, _d = _b.spacing, spacing = _d === void 0 ? 8 : _d;\n            alignBothAxis({\n                container: container,\n                element: element,\n                invertAxis: invertAxis,\n                invertSecondaryAxis: invertSecondaryAxis,\n                axis: mainAxis,\n                scrollContainer: scrollContainer,\n                spacing: spacing,\n            });\n        };\n        return _this;\n    }\n    Fit.prototype.componentDidMount = function () {\n        var _this = this;\n        if (!isDisplayContentsSupported) {\n            // eslint-disable-next-line react/no-find-dom-node\n            var element = findDOMNode(this);\n            if (!element || !(element instanceof HTMLElement)) {\n                return;\n            }\n            this.container = element;\n            this.element = element;\n            this.scrollContainer = findScrollContainer(element);\n        }\n        this.fit();\n        var onMutation = function () {\n            _this.fit();\n        };\n        if (isMutationObserverSupported && this.element) {\n            var mutationObserver = new MutationObserver(onMutation);\n            mutationObserver.observe(this.element, {\n                attributes: true,\n                attributeFilter: ['class', 'style'],\n            });\n        }\n    };\n    Fit.prototype.render = function () {\n        var _this = this;\n        var children = this.props.children;\n        var child = React.Children.only(children);\n        if (isDisplayContentsSupported) {\n            return (React.createElement(\"span\", { ref: function (container) {\n                    _this.container = container;\n                    var element = container && container.firstElementChild;\n                    if (!element || !(element instanceof HTMLElement)) {\n                        return;\n                    }\n                    _this.element = element;\n                    _this.scrollContainer = findScrollContainer(element);\n                }, style: { display: 'contents' } }, child));\n        }\n        return child;\n    };\n    Fit.propTypes = {\n        children: PropTypes.node.isRequired,\n        invertAxis: PropTypes.bool,\n        invertSecondaryAxis: PropTypes.bool,\n        mainAxis: PropTypes.oneOf(['x', 'y']),\n        spacing: PropTypes.oneOfType([\n            PropTypes.number,\n            PropTypes.shape({\n                bottom: PropTypes.number.isRequired,\n                left: PropTypes.number.isRequired,\n                right: PropTypes.number.isRequired,\n                top: PropTypes.number.isRequired,\n            }),\n        ]),\n    };\n    return Fit;\n}(Component));\nexport default Fit;\n","import Fit from './Fit.js';\nexport { Fit };\nexport default Fit;\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n    return function mapOperation(source) {\n        if (typeof project !== 'function') {\n            throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n        }\n        return source.lift(new MapOperator(project, thisArg));\n    };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n    function MapOperator(project, thisArg) {\n        this.project = project;\n        this.thisArg = thisArg;\n    }\n    MapOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n    };\n    return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(MapSubscriber, _super);\n    function MapSubscriber(destination, project, thisArg) {\n        var _this = _super.call(this, destination) || this;\n        _this.project = project;\n        _this.count = 0;\n        _this.thisArg = thisArg || _this;\n        return _this;\n    }\n    MapSubscriber.prototype._next = function (value) {\n        var result;\n        try {\n            result = this.project.call(this.thisArg, value, this.count++);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nvar toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();\nexport function fromEvent(target, eventName, options, resultSelector) {\n    if (isFunction(options)) {\n        resultSelector = options;\n        options = undefined;\n    }\n    if (resultSelector) {\n        return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n    }\n    return new Observable(function (subscriber) {\n        function handler(e) {\n            if (arguments.length > 1) {\n                subscriber.next(Array.prototype.slice.call(arguments));\n            }\n            else {\n                subscriber.next(e);\n            }\n        }\n        setupSubscription(target, eventName, handler, subscriber, options);\n    });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n    var unsubscribe;\n    if (isEventTarget(sourceObj)) {\n        var source_1 = sourceObj;\n        sourceObj.addEventListener(eventName, handler, options);\n        unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n    }\n    else if (isJQueryStyleEventEmitter(sourceObj)) {\n        var source_2 = sourceObj;\n        sourceObj.on(eventName, handler);\n        unsubscribe = function () { return source_2.off(eventName, handler); };\n    }\n    else if (isNodeStyleEventEmitter(sourceObj)) {\n        var source_3 = sourceObj;\n        sourceObj.addListener(eventName, handler);\n        unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n    }\n    else if (sourceObj && sourceObj.length) {\n        for (var i = 0, len = sourceObj.length; i < len; i++) {\n            setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n        }\n    }\n    else {\n        throw new TypeError('Invalid event target');\n    }\n    subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n    return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n    return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n    return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataDom } from '@sentry/types';\n\nimport { uuid4 } from '../misc';\nimport { addNonEnumerableProperty, fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype SentryWrappedTarget = HTMLElement & { _sentryId?: string };\n\ntype AddEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n  __sentry_instrumentation_handlers__?: {\n    [key in 'click' | 'keypress']?: {\n      handler?: Function;\n      /** The number of custom listeners attached to this element */\n      refCount: number;\n    };\n  };\n};\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID: number | undefined;\nlet lastCapturedEventType: string | undefined;\nlet lastCapturedEventTargetId: string | undefined;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addClickKeypressInstrumentationHandler(handler: (data: HandlerDataDom) => void): void {\n  const type = 'dom';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nexport function instrumentDOM(): void {\n  if (!WINDOW.document) {\n    return;\n  }\n\n  // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n  // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n  // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n  const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n  const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n  WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n  WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n  // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n  // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n  // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n  // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n  // guaranteed to fire at least once.)\n  ['EventTarget', 'Node'].forEach((target: string) => {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n    if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n      return;\n    }\n\n    fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n      return function (\n        this: Element,\n        type: string,\n        listener: EventListenerOrEventListenerObject,\n        options?: boolean | AddEventListenerOptions,\n      ): AddEventListener {\n        if (type === 'click' || type == 'keypress') {\n          try {\n            const el = this as InstrumentedElement;\n            const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n            const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n            if (!handlerForType.handler) {\n              const handler = makeDOMEventHandler(triggerDOMHandler);\n              handlerForType.handler = handler;\n              originalAddEventListener.call(this, type, handler, options);\n            }\n\n            handlerForType.refCount++;\n          } catch (e) {\n            // Accessing dom properties is always fragile.\n            // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n          }\n        }\n\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n    });\n\n    fill(\n      proto,\n      'removeEventListener',\n      function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n        return function (\n          this: Element,\n          type: string,\n          listener: EventListenerOrEventListenerObject,\n          options?: boolean | EventListenerOptions,\n        ): () => void {\n          if (type === 'click' || type == 'keypress') {\n            try {\n              const el = this as InstrumentedElement;\n              const handlers = el.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n\n              if (handlerForType) {\n                handlerForType.refCount--;\n                // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n                if (handlerForType.refCount <= 0) {\n                  originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n                  handlerForType.handler = undefined;\n                  delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n                }\n\n                // If there are no longer any custom handlers of any type on this element, cleanup everything.\n                if (Object.keys(handlers).length === 0) {\n                  delete el.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch (e) {\n              // Accessing dom properties is always fragile.\n              // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n            }\n          }\n\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      },\n    );\n  });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event: Event): boolean {\n  // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n  if (event.type !== lastCapturedEventType) {\n    return false;\n  }\n\n  try {\n    // If both events have the same type, it's still possible that actions were performed on different targets.\n    // e.g. 2 clicks on different buttons.\n    if (!event.target || (event.target as SentryWrappedTarget)._sentryId !== lastCapturedEventTargetId) {\n      return false;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n  // to which an event listener was attached), we treat them as the same action, as we want to capture\n  // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n  return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType: string, target: SentryWrappedTarget | null): boolean {\n  // We are only interested in filtering `keypress` events for now.\n  if (eventType !== 'keypress') {\n    return false;\n  }\n\n  if (!target || !target.tagName) {\n    return true;\n  }\n\n  // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n  // e.g.tabbing through elements, hotkeys, etc.\n  if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n  handler: (data: HandlerDataDom) => void,\n  globalListener: boolean = false,\n): (event: Event) => void {\n  return (event: Event & { _sentryCaptured?: true }): void => {\n    // It's possible this handler might trigger multiple times for the same\n    // event (e.g. event propagation through node ancestors).\n    // Ignore if we've already captured that event.\n    if (!event || event['_sentryCaptured']) {\n      return;\n    }\n\n    const target = getEventTarget(event);\n\n    // We always want to skip _some_ events.\n    if (shouldSkipDOMEvent(event.type, target)) {\n      return;\n    }\n\n    // Mark event as \"seen\"\n    addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n    if (target && !target._sentryId) {\n      // Add UUID to event target so we can identify if\n      addNonEnumerableProperty(target, '_sentryId', uuid4());\n    }\n\n    const name = event.type === 'keypress' ? 'input' : event.type;\n\n    // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n    // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n    // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n    if (!isSimilarToLastCapturedEvent(event)) {\n      const handlerData: HandlerDataDom = { event, name, global: globalListener };\n      handler(handlerData);\n      lastCapturedEventType = event.type;\n      lastCapturedEventTargetId = target ? target._sentryId : undefined;\n    }\n\n    // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n    clearTimeout(debounceTimerID);\n    debounceTimerID = WINDOW.setTimeout(() => {\n      lastCapturedEventTargetId = undefined;\n      lastCapturedEventType = undefined;\n    }, DEBOUNCE_DURATION);\n  };\n}\n\nfunction getEventTarget(event: Event): SentryWrappedTarget | null {\n  try {\n    return event.target as SentryWrappedTarget | null;\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n    return null;\n  }\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataXhr, SentryWrappedXMLHttpRequest, WrappedFunction } from '@sentry/types';\n\nimport { isString } from '../is';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nexport const SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addXhrInstrumentationHandler(handler: (data: HandlerDataXhr) => void): void {\n  const type = 'xhr';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nexport function instrumentXHR(): void {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (!(WINDOW as any).XMLHttpRequest) {\n    return;\n  }\n\n  const xhrproto = XMLHttpRequest.prototype;\n\n  fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n    return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      const startTimestamp = Date.now();\n\n      // open() should always be called with two or more arguments\n      // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n      const method = isString(args[0]) ? args[0].toUpperCase() : undefined;\n      const url = parseUrl(args[1]);\n\n      if (!method || !url) {\n        return originalOpen.apply(this, args);\n      }\n\n      this[SENTRY_XHR_DATA_KEY] = {\n        method,\n        url,\n        request_headers: {},\n      };\n\n      // if Sentry key appears in URL, don't capture it as a request\n      if (method === 'POST' && url.match(/sentry_key/)) {\n        this.__sentry_own_request__ = true;\n      }\n\n      const onreadystatechangeHandler: () => void = () => {\n        // For whatever reason, this is not the same instance here as from the outer method\n        const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n        if (!xhrInfo) {\n          return;\n        }\n\n        if (this.readyState === 4) {\n          try {\n            // touching statusCode in some platforms throws\n            // an exception\n            xhrInfo.status_code = this.status;\n          } catch (e) {\n            /* do nothing */\n          }\n\n          const handlerData: HandlerDataXhr = {\n            args: [method, url],\n            endTimestamp: Date.now(),\n            startTimestamp,\n            xhr: this,\n          };\n          triggerHandlers('xhr', handlerData);\n        }\n      };\n\n      if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n        fill(this, 'onreadystatechange', function (original: WrappedFunction): Function {\n          return function (this: SentryWrappedXMLHttpRequest, ...readyStateArgs: any[]): void {\n            onreadystatechangeHandler();\n            return original.apply(this, readyStateArgs);\n          };\n        });\n      } else {\n        this.addEventListener('readystatechange', onreadystatechangeHandler);\n      }\n\n      // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n      // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n      // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n      fill(this, 'setRequestHeader', function (original: WrappedFunction): Function {\n        return function (this: SentryWrappedXMLHttpRequest, ...setRequestHeaderArgs: unknown[]): void {\n          const [header, value] = setRequestHeaderArgs;\n\n          const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n          if (xhrInfo && isString(header) && isString(value)) {\n            xhrInfo.request_headers[header.toLowerCase()] = value;\n          }\n\n          return original.apply(this, setRequestHeaderArgs);\n        };\n      });\n\n      return originalOpen.apply(this, args);\n    };\n  });\n\n  fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n    return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n\n      if (!sentryXhrData) {\n        return originalSend.apply(this, args);\n      }\n\n      if (args[0] !== undefined) {\n        sentryXhrData.body = args[0];\n      }\n\n      const handlerData: HandlerDataXhr = {\n        args: [sentryXhrData.method, sentryXhrData.url],\n        startTimestamp: Date.now(),\n        xhr: this,\n      };\n      triggerHandlers('xhr', handlerData);\n\n      return originalSend.apply(this, args);\n    };\n  });\n}\n\nfunction parseUrl(url: string | unknown): string | undefined {\n  if (isString(url)) {\n    return url;\n  }\n\n  try {\n    // url can be a string or URL\n    // but since URL is not available in IE11, we do not check for it,\n    // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n    // If that fails, we just return undefined\n    return (url as URL).toString();\n  } catch {} // eslint-disable-line no-empty\n\n  return undefined;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataFetch } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsNativeFetch } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n  const type = 'fetch';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentFetch);\n}\n\nfunction instrumentFetch(): void {\n  if (!supportsNativeFetch()) {\n    return;\n  }\n\n  fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n    return function (...args: any[]): void {\n      const { method, url } = parseFetchArgs(args);\n\n      const handlerData: HandlerDataFetch = {\n        args,\n        fetchData: {\n          method,\n          url,\n        },\n        startTimestamp: Date.now(),\n      };\n\n      triggerHandlers('fetch', {\n        ...handlerData,\n      });\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      return originalFetch.apply(GLOBAL_OBJ, args).then(\n        (response: Response) => {\n          const finishedHandlerData: HandlerDataFetch = {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            response,\n          };\n\n          triggerHandlers('fetch', finishedHandlerData);\n          return response;\n        },\n        (error: Error) => {\n          const erroredHandlerData: HandlerDataFetch = {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            error,\n          };\n\n          triggerHandlers('fetch', erroredHandlerData);\n          // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n          //       it means the sentry.javascript SDK caught an error invoking your application code.\n          //       This is expected behavior and NOT indicative of a bug with sentry.javascript.\n          throw error;\n        },\n      );\n    };\n  });\n}\n\nfunction hasProp<T extends string>(obj: unknown, prop: T): obj is Record<string, string> {\n  return !!obj && typeof obj === 'object' && !!(obj as Record<string, string>)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n  if (typeof resource === 'string') {\n    return resource;\n  }\n\n  if (!resource) {\n    return '';\n  }\n\n  if (hasProp(resource, 'url')) {\n    return resource.url;\n  }\n\n  if (resource.toString) {\n    return resource.toString();\n  }\n\n  return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n  if (fetchArgs.length === 0) {\n    return { method: 'GET', url: '' };\n  }\n\n  if (fetchArgs.length === 2) {\n    const [url, options] = fetchArgs as [FetchResource, object];\n\n    return {\n      url: getUrlFromResource(url),\n      method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n    };\n  }\n\n  const arg = fetchArgs[0];\n  return {\n    url: getUrlFromResource(arg as FetchResource),\n    method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n  };\n}\n","import type { DataCategory, TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record<string, number>;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n  const headerDelay = parseInt(`${header}`, 10);\n  if (!isNaN(headerDelay)) {\n    return headerDelay * 1000;\n  }\n\n  const headerDate = Date.parse(`${header}`);\n  if (!isNaN(headerDate)) {\n    return headerDate - now;\n  }\n\n  return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n  return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = Date.now()): boolean {\n  return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n  limits: RateLimits,\n  { statusCode, headers }: TransportMakeRequestResponse,\n  now: number = Date.now(),\n): RateLimits {\n  const updatedRateLimits: RateLimits = {\n    ...limits,\n  };\n\n  // \"The name is case-insensitive.\"\n  // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n  const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n  const retryAfterHeader = headers && headers['retry-after'];\n\n  if (rateLimitHeader) {\n    /**\n     * rate limit headers are of the form\n     *     <header>,<header>,..\n     * where each <header> is of the form\n     *     <retry_after>: <categories>: <scope>: <reason_code>: <namespaces>\n     * where\n     *     <retry_after> is a delay in seconds\n     *     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n     *         <category>;<category>;...\n     *     <scope> is what's being limited (org, project, or key) - ignored by SDK\n     *     <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n     *     <namespaces> Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n     *         Only present if rate limit applies to the metric_bucket data category.\n     */\n    for (const limit of rateLimitHeader.trim().split(',')) {\n      const [retryAfter, categories, , , namespaces] = limit.split(':', 5);\n      const headerDelay = parseInt(retryAfter, 10);\n      const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n      if (!categories) {\n        updatedRateLimits.all = now + delay;\n      } else {\n        for (const category of categories.split(';')) {\n          if (category === 'metric_bucket') {\n            // namespaces will be present when category === 'metric_bucket'\n            if (!namespaces || namespaces.split(';').includes('custom')) {\n              updatedRateLimits[category] = now + delay;\n            }\n          } else {\n            updatedRateLimits[category] = now + delay;\n          }\n        }\n      }\n    }\n  } else if (retryAfterHeader) {\n    updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n  } else if (statusCode === 429) {\n    updatedRateLimits.all = now + 60 * 1000;\n  }\n\n  return updatedRateLimits;\n}\n","import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n  /^Script error\\.?$/,\n  /^Javascript error: Script error\\.? on line 0$/,\n  /^ResizeObserver loop completed with undelivered notifications.$/,\n  /^Cannot redefine property: googletag$/,\n];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n  /^.*\\/healthcheck$/,\n  /^.*\\/healthy$/,\n  /^.*\\/live$/,\n  /^.*\\/ready$/,\n  /^.*\\/heartbeat$/,\n  /^.*\\/health$/,\n  /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n  allowUrls: Array<string | RegExp>;\n  denyUrls: Array<string | RegExp>;\n  ignoreErrors: Array<string | RegExp>;\n  ignoreTransactions: Array<string | RegExp>;\n  ignoreInternal: boolean;\n  disableErrorDefaults: boolean;\n  disableTransactionDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options: Partial<InboundFiltersOptions> = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(event, _hint, client) {\n      const clientOptions = client.getOptions();\n      const mergedOptions = _mergeOptions(options, clientOptions);\n      return _shouldDropEvent(event, mergedOptions) ? null : event;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\n/**\n * Inbound filters configurable by the user.\n * @deprecated Use `inboundFiltersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const InboundFilters = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  inboundFiltersIntegration,\n) as IntegrationClass<Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }> & {\n  new (\n    options?: Partial<{\n      allowUrls: Array<string | RegExp>;\n      denyUrls: Array<string | RegExp>;\n      ignoreErrors: Array<string | RegExp>;\n      ignoreTransactions: Array<string | RegExp>;\n      ignoreInternal: boolean;\n      disableErrorDefaults: boolean;\n      disableTransactionDefaults: boolean;\n    }>,\n  ): Integration;\n};\n\nfunction _mergeOptions(\n  internalOptions: Partial<InboundFiltersOptions> = {},\n  clientOptions: Partial<InboundFiltersOptions> = {},\n): Partial<InboundFiltersOptions> {\n  return {\n    allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n    denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n    ignoreErrors: [\n      ...(internalOptions.ignoreErrors || []),\n      ...(clientOptions.ignoreErrors || []),\n      ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n    ],\n    ignoreTransactions: [\n      ...(internalOptions.ignoreTransactions || []),\n      ...(clientOptions.ignoreTransactions || []),\n      ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n    ],\n    ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n  };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial<InboundFiltersOptions>): boolean {\n  if (options.ignoreInternal && _isSentryError(event)) {\n    DEBUG_BUILD &&\n      logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n    return true;\n  }\n  if (_isIgnoredError(event, options.ignoreErrors)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isDeniedUrl(event, options.denyUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  if (!_isAllowedUrl(event, options.allowUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array<string | RegExp>): boolean {\n  // If event.type, this is not an error\n  if (event.type || !ignoreErrors || !ignoreErrors.length) {\n    return false;\n  }\n\n  return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array<string | RegExp>): boolean {\n  if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n    return false;\n  }\n\n  const name = event.transaction;\n  return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!denyUrls || !denyUrls.length) {\n    return false;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!allowUrls || !allowUrls.length) {\n    return true;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n  const possibleMessages: string[] = [];\n\n  if (event.message) {\n    possibleMessages.push(event.message);\n  }\n\n  let lastException;\n  try {\n    // @ts-expect-error Try catching to save bundle size\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    lastException = event.exception.values[event.exception.values.length - 1];\n  } catch (e) {\n    // try catching to save bundle size checking existence of variables\n  }\n\n  if (lastException) {\n    if (lastException.value) {\n      possibleMessages.push(lastException.value);\n      if (lastException.type) {\n        possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n      }\n    }\n  }\n\n  if (DEBUG_BUILD && possibleMessages.length === 0) {\n    logger.error(`Could not extract message for event ${getEventDescription(event)}`);\n  }\n\n  return possibleMessages;\n}\n\nfunction _isSentryError(event: Event): boolean {\n  try {\n    // @ts-expect-error can't be a sentry error if undefined\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return event.exception.values[0].type === 'SentryError';\n  } catch (e) {\n    // ignore\n  }\n  return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n  for (let i = frames.length - 1; i >= 0; i--) {\n    const frame = frames[i];\n\n    if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n      return frame.filename || null;\n    }\n  }\n\n  return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n  try {\n    let frames;\n    try {\n      // @ts-expect-error we only care about frames if the whole thing here is defined\n      frames = event.exception.values[0].stacktrace.frames;\n    } catch (e) {\n      // ignore\n    }\n    return frames ? _getLastValidUrl(frames) : null;\n  } catch (oO) {\n    DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n    return null;\n  }\n}\n","import type { Client, Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../exports';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap<Client, boolean>();\n\nconst _functionToStringIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      originalFunctionToString = Function.prototype.toString;\n\n      // intrinsics (like Function.prototype) might be immutable in some environments\n      // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n      try {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n          const originalFunction = getOriginalFunction(this);\n          const context =\n            SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n          return originalFunctionToString.apply(context, args);\n        };\n      } catch {\n        // ignore errors here, just don't patch this\n      }\n    },\n    setup(client) {\n      SETUP_CLIENTS.set(client, true);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n *   integrations: [\n *     functionToStringIntegration(),\n *   ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * @deprecated Use `functionToStringIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const FunctionToString = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  functionToStringIntegration,\n) as IntegrationClass<Integration & { setupOnce: () => void }>;\n\n// eslint-disable-next-line deprecation/deprecation\nexport type FunctionToString = typeof FunctionToString;\n","import type { BrowserOptions } from '@sentry/browser';\nimport { init as browserInit } from '@sentry/browser';\nimport { applySdkMetadata } from '@sentry/core';\n\n/**\n * Inits the React SDK\n */\nexport function init(options: BrowserOptions): void {\n  const opts = {\n    ...options,\n  };\n\n  applySdkMetadata(opts, 'react');\n\n  browserInit(opts);\n}\n","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get;\n  } else {\n    _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\n  return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _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}","import type { Options } from '@sentry/types';\nimport { SDK_VERSION } from '../version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void {\n  const metadata = options._metadata || {};\n\n  if (!metadata.sdk) {\n    metadata.sdk = {\n      name: `sentry.javascript.${name}`,\n      packages: names.map(name => ({\n        name: `${source}:@sentry/${name}`,\n        version: SDK_VERSION,\n      })),\n      version: SDK_VERSION,\n    };\n  }\n\n  options._metadata = metadata;\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { getClient } from '@sentry/core';\nimport type {\n  Event,\n  EventHint,\n  Exception,\n  ParameterizedString,\n  Severity,\n  SeverityLevel,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\nimport {\n  addExceptionMechanism,\n  addExceptionTypeValue,\n  extractExceptionKeysForMessage,\n  isDOMError,\n  isDOMException,\n  isError,\n  isErrorEvent,\n  isEvent,\n  isParameterizedString,\n  isPlainObject,\n  normalizeToSize,\n  resolvedSyncPromise,\n} from '@sentry/utils';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n  // Get the frames first since Opera can lose the stack if we touch anything else first\n  const frames = parseStackFrames(stackParser, ex);\n\n  const exception: Exception = {\n    type: ex && ex.name,\n    value: extractMessage(ex),\n  };\n\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n\n  if (exception.type === undefined && exception.value === '') {\n    exception.value = 'Unrecoverable error caught';\n  }\n\n  return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n  stackParser: StackParser,\n  exception: Record<string, unknown>,\n  syntheticException?: Error,\n  isUnhandledRejection?: boolean,\n): Event {\n  const client = getClient();\n  const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n  const event: Event = {\n    exception: {\n      values: [\n        {\n          type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n          value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n        },\n      ],\n    },\n    extra: {\n      __serialized__: normalizeToSize(exception, normalizeDepth),\n    },\n  };\n\n  if (syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      // event.exception.values[0] has been set above\n      (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n    }\n  }\n\n  return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n  return {\n    exception: {\n      values: [exceptionFromError(stackParser, ex)],\n    },\n  };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n  stackParser: StackParser,\n  ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n  // Access and store the stacktrace property before doing ANYTHING\n  // else to it because Opera is not very good at providing it\n  // reliably in other circumstances.\n  const stacktrace = ex.stacktrace || ex.stack || '';\n\n  const popSize = getPopSize(ex);\n\n  try {\n    return stackParser(stacktrace, popSize);\n  } catch (e) {\n    // no-empty\n  }\n\n  return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n  if (ex) {\n    if (typeof ex.framesToPop === 'number') {\n      return ex.framesToPop;\n    }\n\n    if (reactMinifiedRegexp.test(ex.message)) {\n      return 1;\n    }\n  }\n\n  return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n  const message = ex && ex.message;\n  if (!message) {\n    return 'No error message';\n  }\n  if (message.error && typeof message.error.message === 'string') {\n    return message.error.message;\n  }\n  return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n  stackParser: StackParser,\n  exception: unknown,\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): PromiseLike<Event> {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n  addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n  event.level = 'error';\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  // eslint-disable-next-line deprecation/deprecation\n  level: Severity | SeverityLevel = 'info',\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): PromiseLike<Event> {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n  event.level = level;\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n  stackParser: StackParser,\n  exception: unknown,\n  syntheticException?: Error,\n  attachStacktrace?: boolean,\n  isUnhandledRejection?: boolean,\n): Event {\n  let event: Event;\n\n  if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n    // If it is an ErrorEvent with `error` property, extract it to get actual Error\n    const errorEvent = exception as ErrorEvent;\n    return eventFromError(stackParser, errorEvent.error as Error);\n  }\n\n  // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n  // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n  // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n  //\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n  // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n  if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n    const domException = exception as DOMException;\n\n    if ('stack' in (exception as Error)) {\n      event = eventFromError(stackParser, exception as Error);\n    } else {\n      const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n      const message = domException.message ? `${name}: ${domException.message}` : name;\n      event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n      addExceptionTypeValue(event, message);\n    }\n    if ('code' in domException) {\n      // eslint-disable-next-line deprecation/deprecation\n      event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n    }\n\n    return event;\n  }\n  if (isError(exception)) {\n    // we have a real Error object, do nothing\n    return eventFromError(stackParser, exception);\n  }\n  if (isPlainObject(exception) || isEvent(exception)) {\n    // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n    // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n    // group on any key/value change.\n    const objectException = exception as Record<string, unknown>;\n    event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n    addExceptionMechanism(event, {\n      synthetic: true,\n    });\n    return event;\n  }\n\n  // If none of previous checks were valid, then it means that it's not:\n  // - an instance of DOMError\n  // - an instance of DOMException\n  // - an instance of Event\n  // - an instance of Error\n  // - a valid ErrorEvent (one with an error property)\n  // - a plain Object\n  //\n  // So bail out and capture it as a simple message:\n  event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n  addExceptionTypeValue(event, `${exception}`, undefined);\n  addExceptionMechanism(event, {\n    synthetic: true,\n  });\n\n  return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  syntheticException?: Error,\n  attachStacktrace?: boolean,\n): Event {\n  const event: Event = {};\n\n  if (attachStacktrace && syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [{ value: message, stacktrace: { frames } }],\n      };\n    }\n  }\n\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__,\n    };\n    return event;\n  }\n\n  event.message = message;\n  return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n  exception: Record<string, unknown>,\n  { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n  const keys = extractExceptionKeysForMessage(exception);\n  const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n  // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n  // We still want to try to get a decent message for these cases\n  if (isErrorEvent(exception)) {\n    return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n  }\n\n  if (isEvent(exception)) {\n    const className = getObjectClassName(exception);\n    return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n  }\n\n  return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n  try {\n    const prototype: Prototype | null = Object.getPrototypeOf(obj);\n    return prototype ? prototype.constructor.name : undefined;\n  } catch (e) {\n    // ignore errors here\n  }\n}\n","import type { browserTracingIntegration } from '@sentry-internal/tracing';\nimport { BrowserTracing } from '@sentry-internal/tracing';\nimport { captureException, withScope } from '@sentry/core';\nimport type { DsnLike, Integration, Mechanism, WrappedFunction } from '@sentry/types';\nimport {\n  GLOBAL_OBJ,\n  addExceptionMechanism,\n  addExceptionTypeValue,\n  addNonEnumerableProperty,\n  getOriginalFunction,\n  markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n  return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n  // onerror should trigger before setTimeout\n  ignoreOnError++;\n  setTimeout(() => {\n    ignoreOnError--;\n  });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n  fn: WrappedFunction,\n  options: {\n    mechanism?: Mechanism;\n  } = {},\n  before?: WrappedFunction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  // for future readers what this does is wrap a function and then create\n  // a bi-directional wrapping between them.\n  //\n  // example: wrapped = wrap(original);\n  //  original.__sentry_wrapped__ -> wrapped\n  //  wrapped.__sentry_original__ -> original\n\n  if (typeof fn !== 'function') {\n    return fn;\n  }\n\n  try {\n    // if we're dealing with a function that was previously wrapped, return\n    // the original wrapper.\n    const wrapper = fn.__sentry_wrapped__;\n    if (wrapper) {\n      return wrapper;\n    }\n\n    // We don't wanna wrap it twice\n    if (getOriginalFunction(fn)) {\n      return fn;\n    }\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    // Bail on wrapping and return the function as-is (defers to window.onerror).\n    return fn;\n  }\n\n  /* eslint-disable prefer-rest-params */\n  // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n  const sentryWrapped: WrappedFunction = function (this: unknown): void {\n    const args = Array.prototype.slice.call(arguments);\n\n    try {\n      if (before && typeof before === 'function') {\n        before.apply(this, arguments);\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n      const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n      // Attempt to invoke user-land function\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n      //       means the sentry.javascript SDK caught an error invoking your application code. This\n      //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n      return fn.apply(this, wrappedArguments);\n    } catch (ex) {\n      ignoreNextOnError();\n\n      withScope(scope => {\n        scope.addEventProcessor(event => {\n          if (options.mechanism) {\n            addExceptionTypeValue(event, undefined, undefined);\n            addExceptionMechanism(event, options.mechanism);\n          }\n\n          event.extra = {\n            ...event.extra,\n            arguments: args,\n          };\n\n          return event;\n        });\n\n        captureException(ex);\n      });\n\n      throw ex;\n    }\n  };\n  /* eslint-enable prefer-rest-params */\n\n  // Accessing some objects may throw\n  // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n  try {\n    for (const property in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, property)) {\n        sentryWrapped[property] = fn[property];\n      }\n    }\n  } catch (_oO) {} // eslint-disable-line no-empty\n\n  // Signal that this function has been wrapped/filled already\n  // for both debugging and to prevent it to being wrapped/filled twice\n  markFunctionWrapped(sentryWrapped, fn);\n\n  addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n  // Restore original function name (not all browsers allow that)\n  try {\n    const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n    if (descriptor.configurable) {\n      Object.defineProperty(sentryWrapped, 'name', {\n        get(): string {\n          return fn.name;\n        },\n      });\n    }\n    // eslint-disable-next-line no-empty\n  } catch (_oO) {}\n\n  return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n *\n * @deprecated This type will be removed in the next major version of the Sentry SDK. `showReportDialog` will still be around, however the `eventId` option will now be required.\n */\nexport interface ReportDialogOptions {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: any;\n  eventId?: string;\n  dsn?: DsnLike;\n  user?: {\n    email?: string;\n    name?: string;\n  };\n  lang?: string;\n  title?: string;\n  subtitle?: string;\n  subtitle2?: string;\n  labelName?: string;\n  labelEmail?: string;\n  labelComments?: string;\n  labelClose?: string;\n  labelSubmit?: string;\n  errorGeneric?: string;\n  errorFormEntry?: string;\n  successMessage?: string;\n  /** Callback after reportDialog showed up */\n  onLoad?(this: void): void;\n  /** Callback after reportDialog closed */\n  onClose?(this: void): void;\n}\n\n/**\n * This is a slim shim of `browserTracingIntegration` for the CDN bundles.\n * Since the actual functional integration uses a different code from `BrowserTracing`,\n * we want to avoid shipping both of them in the CDN bundles, as that would blow up the size.\n * Instead, we provide a functional integration with the same API, but the old implementation.\n * This means that it's not possible to register custom routing instrumentation, but that's OK for now.\n * We also don't expose the utilities for this anyhow in the CDN bundles.\n * For users that need custom routing in CDN bundles, they have to continue using `new BrowserTracing()` until v8.\n */\nexport function bundleBrowserTracingIntegration(\n  options: Parameters<typeof browserTracingIntegration>[0] = {},\n): Integration {\n  // Migrate some options from the old integration to the new one\n  // eslint-disable-next-line deprecation/deprecation\n  const opts: ConstructorParameters<typeof BrowserTracing>[0] = options;\n\n  if (typeof options.markBackgroundSpan === 'boolean') {\n    opts.markBackgroundTransactions = options.markBackgroundSpan;\n  }\n\n  if (typeof options.instrumentPageLoad === 'boolean') {\n    opts.startTransactionOnPageLoad = options.instrumentPageLoad;\n  }\n\n  if (typeof options.instrumentNavigation === 'boolean') {\n    opts.startTransactionOnLocationChange = options.instrumentNavigation;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return new BrowserTracing(opts);\n}\n","import type { Scope } from '@sentry/core';\nimport { applySdkMetadata } from '@sentry/core';\nimport { BaseClient } from '@sentry/core';\nimport type {\n  BrowserClientProfilingOptions,\n  BrowserClientReplayOptions,\n  ClientOptions,\n  Event,\n  EventHint,\n  Options,\n  ParameterizedString,\n  Severity,\n  SeverityLevel,\n  UserFeedback,\n} from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getSDKSource, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { BrowserTransportOptions } from './transports/types';\nimport { createUserFeedbackEnvelope } from './userfeedback';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient<BrowserClientOptions> {\n  /**\n   * Creates a new Browser SDK instance.\n   *\n   * @param options Configuration options for this SDK.\n   */\n  public constructor(options: BrowserClientOptions) {\n    const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n    applySdkMetadata(options, 'browser', ['browser'], sdkSource);\n\n    super(options);\n\n    if (options.sendClientReports && WINDOW.document) {\n      WINDOW.document.addEventListener('visibilitychange', () => {\n        if (WINDOW.document.visibilityState === 'hidden') {\n          this._flushOutcomes();\n        }\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\n    return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromMessage(\n    message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    level: Severity | SeverityLevel = 'info',\n    hint?: EventHint,\n  ): PromiseLike<Event> {\n    return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * Sends user feedback to Sentry.\n   */\n  public captureUserFeedback(feedback: UserFeedback): void {\n    if (!this._isEnabled()) {\n      DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n      return;\n    }\n\n    const envelope = createUserFeedbackEnvelope(feedback, {\n      metadata: this.getSdkMetadata(),\n      dsn: this.getDsn(),\n      tunnel: this.getOptions().tunnel,\n    });\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(envelope);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event | null> {\n    event.platform = event.platform || 'javascript';\n    return super._prepareEvent(event, hint, scope);\n  }\n\n  /**\n   * Sends client reports as an envelope.\n   */\n  private _flushOutcomes(): void {\n    const outcomes = this._clearOutcomes();\n\n    if (outcomes.length === 0) {\n      DEBUG_BUILD && logger.log('No outcomes to send');\n      return;\n    }\n\n    // This is really the only place where we want to check for a DSN and only send outcomes then\n    if (!this._dsn) {\n      DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n      return;\n    }\n\n    DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(envelope);\n  }\n}\n","import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nexport function createUserFeedbackEnvelope(\n  feedback: UserFeedback,\n  {\n    metadata,\n    tunnel,\n    dsn,\n  }: {\n    metadata: SdkMetadata | undefined;\n    tunnel: string | undefined;\n    dsn: DsnComponents | undefined;\n  },\n): EventEnvelope {\n  const headers: EventEnvelope[0] = {\n    event_id: feedback.event_id,\n    sent_at: new Date().toISOString(),\n    ...(metadata &&\n      metadata.sdk && {\n        sdk: {\n          name: metadata.sdk.name,\n          version: metadata.sdk.version,\n        },\n      }),\n    ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n  };\n  const item = createUserFeedbackEnvelopeItem(feedback);\n\n  return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback: UserFeedback): UserFeedbackItem {\n  const feedbackHeaders: UserFeedbackItem[0] = {\n    type: 'user_report',\n  };\n  return [feedbackHeaders, feedback];\n}\n","import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n  discarded_events: ClientReport['discarded_events'],\n  dsn?: string,\n  timestamp?: number,\n): ClientReportEnvelope {\n  const clientReportItem: ClientReportItem = [\n    { type: 'client_report' },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events,\n    },\n  ];\n  return createEnvelope<ClientReportEnvelope>(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '@sentry/types';\n\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../logger';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n  const type = 'console';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n  if (!('console' in GLOBAL_OBJ)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n    if (!(level in GLOBAL_OBJ.console)) {\n      return;\n    }\n\n    fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n      originalConsoleMethods[level] = originalConsoleMethod;\n\n      return function (...args: any[]): void {\n        const handlerData: HandlerDataConsole = { args, level };\n        triggerHandlers('console', handlerData);\n\n        const log = originalConsoleMethods[level];\n        log && log.apply(GLOBAL_OBJ.console, args);\n      };\n    });\n  });\n}\n","/* eslint-disable deprecation/deprecation */\nimport type { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n  return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n  return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","type PartialURL = {\n  host?: string;\n  path?: string;\n  protocol?: string;\n  relative?: string;\n  search?: string;\n  hash?: string;\n};\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): PartialURL {\n  if (!url) {\n    return {};\n  }\n\n  const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n  if (!match) {\n    return {};\n  }\n\n  // coerce to undefined values to empty string so we don't get 'undefined'\n  const query = match[6] || '';\n  const fragment = match[8] || '';\n  return {\n    host: match[4],\n    path: match[5],\n    protocol: match[2],\n    search: query,\n    hash: fragment,\n    relative: match[5] + query + fragment, // everything minus origin\n  };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n  // eslint-disable-next-line no-useless-escape\n  return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n  // split at '/' or at '\\/' to split regex urls correctly\n  return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n  const { protocol, host, path } = url;\n\n  const filteredHost =\n    (host &&\n      host\n        // Always filter out authority\n        .replace(/^.*@/, '[filtered]:[filtered]@')\n        // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n        // TODO: Use new URL global if it exists\n        .replace(/(:80)$/, '')\n        .replace(/(:443)$/, '')) ||\n    '';\n\n  return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n","/* eslint-disable max-lines */\nimport { addBreadcrumb, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n  Client,\n  Event as SentryEvent,\n  HandlerDataConsole,\n  HandlerDataDom,\n  HandlerDataFetch,\n  HandlerDataHistory,\n  HandlerDataXhr,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n} from '@sentry/types';\nimport type {\n  Breadcrumb,\n  FetchBreadcrumbData,\n  FetchBreadcrumbHint,\n  XhrBreadcrumbData,\n  XhrBreadcrumbHint,\n} from '@sentry/types/build/types/breadcrumb';\nimport {\n  SENTRY_XHR_DATA_KEY,\n  addClickKeypressInstrumentationHandler,\n  addConsoleInstrumentationHandler,\n  addFetchInstrumentationHandler,\n  addHistoryInstrumentationHandler,\n  addXhrInstrumentationHandler,\n  getComponentName,\n  getEventDescription,\n  htmlTreeAsString,\n  logger,\n  parseUrl,\n  safeJoin,\n  severityLevelFromString,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\ninterface BreadcrumbsOptions {\n  console: boolean;\n  dom:\n    | boolean\n    | {\n        serializeAttribute?: string | string[];\n        maxStringLength?: number;\n      };\n  fetch: boolean;\n  history: boolean;\n  sentry: boolean;\n  xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options: Partial<BreadcrumbsOptions> = {}) => {\n  const _options = {\n    console: true,\n    dom: true,\n    fetch: true,\n    history: true,\n    sentry: true,\n    xhr: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client) {\n      if (_options.console) {\n        addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n      }\n      if (_options.dom) {\n        addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n      }\n      if (_options.xhr) {\n        addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n      }\n      if (_options.fetch) {\n        addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n      }\n      if (_options.history) {\n        addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n      }\n      if (_options.sentry && client.on) {\n        client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Default Breadcrumbs instrumentations\n *\n * @deprecated Use `breadcrumbsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME, breadcrumbsIntegration) as IntegrationClass<\n  Integration & { setup: (client: Client) => void }\n> & {\n  new (\n    options?: Partial<{\n      console: boolean;\n      dom:\n        | boolean\n        | {\n            serializeAttribute?: string | string[];\n            maxStringLength?: number;\n          };\n      fetch: boolean;\n      history: boolean;\n      sentry: boolean;\n      xhr: boolean;\n    }>,\n  ): Integration;\n};\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client: Client): (event: SentryEvent) => void {\n  return function addSentryBreadcrumb(event: SentryEvent): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    addBreadcrumb(\n      {\n        category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n        event_id: event.event_id,\n        level: event.level,\n        message: getEventDescription(event),\n      },\n      {\n        event,\n      },\n    );\n  };\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n  client: Client,\n  dom: BreadcrumbsOptions['dom'],\n): (handlerData: HandlerDataDom) => void {\n  return function _innerDomBreadcrumb(handlerData: HandlerDataDom): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let target;\n    let componentName;\n    let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n    let maxStringLength =\n      typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n    if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        logger.warn(\n          `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n        );\n      maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n    }\n\n    if (typeof keyAttrs === 'string') {\n      keyAttrs = [keyAttrs];\n    }\n\n    // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n    try {\n      const event = handlerData.event as Event | Node;\n      const element = _isEvent(event) ? event.target : event;\n\n      target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n      componentName = getComponentName(element);\n    } catch (e) {\n      target = '<unknown>';\n    }\n\n    if (target.length === 0) {\n      return;\n    }\n\n    const breadcrumb: Breadcrumb = {\n      category: `ui.${handlerData.name}`,\n      message: target,\n    };\n\n    if (componentName) {\n      breadcrumb.data = { 'ui.component_name': componentName };\n    }\n\n    addBreadcrumb(breadcrumb, {\n      event: handlerData.event,\n      name: handlerData.name,\n      global: handlerData.global,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client: Client): (handlerData: HandlerDataConsole) => void {\n  return function _consoleBreadcrumb(handlerData: HandlerDataConsole): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const breadcrumb = {\n      category: 'console',\n      data: {\n        arguments: handlerData.args,\n        logger: 'console',\n      },\n      level: severityLevelFromString(handlerData.level),\n      message: safeJoin(handlerData.args, ' '),\n    };\n\n    if (handlerData.level === 'assert') {\n      if (handlerData.args[0] === false) {\n        breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n        breadcrumb.data.arguments = handlerData.args.slice(1);\n      } else {\n        // Don't capture a breadcrumb for passed assertions\n        return;\n      }\n    }\n\n    addBreadcrumb(breadcrumb, {\n      input: handlerData.args,\n      level: handlerData.level,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client: Client): (handlerData: HandlerDataXhr) => void {\n  return function _xhrBreadcrumb(handlerData: HandlerDataXhr): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n    // We only capture complete, non-sentry requests\n    if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n      return;\n    }\n\n    const { method, url, status_code, body } = sentryXhrData;\n\n    const data: XhrBreadcrumbData = {\n      method,\n      url,\n      status_code,\n    };\n\n    const hint: XhrBreadcrumbHint = {\n      xhr: handlerData.xhr,\n      input: body,\n      startTimestamp,\n      endTimestamp,\n    };\n\n    addBreadcrumb(\n      {\n        category: 'xhr',\n        data,\n        type: 'http',\n      },\n      hint,\n    );\n  };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFetch) => void {\n  return function _fetchBreadcrumb(handlerData: HandlerDataFetch): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    // We only capture complete fetch requests\n    if (!endTimestamp) {\n      return;\n    }\n\n    if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n      // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n      return;\n    }\n\n    if (handlerData.error) {\n      const data: FetchBreadcrumbData = handlerData.fetchData;\n      const hint: FetchBreadcrumbHint = {\n        data: handlerData.error,\n        input: handlerData.args,\n        startTimestamp,\n        endTimestamp,\n      };\n\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          level: 'error',\n          type: 'http',\n        },\n        hint,\n      );\n    } else {\n      const response = handlerData.response as Response | undefined;\n      const data: FetchBreadcrumbData = {\n        ...handlerData.fetchData,\n        status_code: response && response.status,\n      };\n      const hint: FetchBreadcrumbHint = {\n        input: handlerData.args,\n        response,\n        startTimestamp,\n        endTimestamp,\n      };\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          type: 'http',\n        },\n        hint,\n      );\n    }\n  };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client: Client): (handlerData: HandlerDataHistory) => void {\n  return function _historyBreadcrumb(handlerData: HandlerDataHistory): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let from: string | undefined = handlerData.from;\n    let to: string | undefined = handlerData.to;\n    const parsedLoc = parseUrl(WINDOW.location.href);\n    let parsedFrom = from ? parseUrl(from) : undefined;\n    const parsedTo = parseUrl(to);\n\n    // Initial pushState doesn't provide `from` information\n    if (!parsedFrom || !parsedFrom.path) {\n      parsedFrom = parsedLoc;\n    }\n\n    // Use only the path component of the URL if the URL matches the current\n    // document (almost all the time when using pushState)\n    if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n      to = parsedTo.relative;\n    }\n    if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n      from = parsedFrom.relative;\n    }\n\n    addBreadcrumb({\n      category: 'navigation',\n      data: {\n        from,\n        to,\n      },\n    });\n  };\n}\n\nfunction _isEvent(event: unknown): event is Event {\n  return !!event && !!(event as Record<string, unknown>).target;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Exception, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n  let previousEvent: Event | undefined;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(currentEvent) {\n      // We want to ignore any non-error type events, e.g. transactions or replays\n      // These should never be deduped, and also not be compared against as _previousEvent.\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n\n      // Juuust in case something goes wrong\n      try {\n        if (_shouldDropEvent(currentEvent, previousEvent)) {\n          DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n          return null;\n        }\n      } catch (_oO) {} // eslint-disable-line no-empty\n\n      return (previousEvent = currentEvent);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration) as IntegrationClass<\n  Integration & { processEvent: (event: Event) => Event }\n>;\n\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n  if (!previousEvent) {\n    return false;\n  }\n\n  if (_isSameMessageEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const currentMessage = currentEvent.message;\n  const previousMessage = previousEvent.message;\n\n  // If neither event has a message property, they were both exceptions, so bail out\n  if (!currentMessage && !previousMessage) {\n    return false;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n    return false;\n  }\n\n  if (currentMessage !== previousMessage) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const previousException = _getExceptionFromEvent(previousEvent);\n  const currentException = _getExceptionFromEvent(currentEvent);\n\n  if (!previousException || !currentException) {\n    return false;\n  }\n\n  if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFrames = _getFramesFromEvent(currentEvent);\n  let previousFrames = _getFramesFromEvent(previousEvent);\n\n  // If neither event has a stacktrace, they are assumed to be the same\n  if (!currentFrames && !previousFrames) {\n    return true;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n    return false;\n  }\n\n  currentFrames = currentFrames as StackFrame[];\n  previousFrames = previousFrames as StackFrame[];\n\n  // If number of frames differ, they are not the same\n  if (previousFrames.length !== currentFrames.length) {\n    return false;\n  }\n\n  // Otherwise, compare the two\n  for (let i = 0; i < previousFrames.length; i++) {\n    const frameA = previousFrames[i];\n    const frameB = currentFrames[i];\n\n    if (\n      frameA.filename !== frameB.filename ||\n      frameA.lineno !== frameB.lineno ||\n      frameA.colno !== frameB.colno ||\n      frameA.function !== frameB.function\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFingerprint = currentEvent.fingerprint;\n  let previousFingerprint = previousEvent.fingerprint;\n\n  // If neither event has a fingerprint, they are assumed to be the same\n  if (!currentFingerprint && !previousFingerprint) {\n    return true;\n  }\n\n  // If only one event has a fingerprint, but not the other one, they are not the same\n  if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n    return false;\n  }\n\n  currentFingerprint = currentFingerprint as string[];\n  previousFingerprint = previousFingerprint as string[];\n\n  // Otherwise, compare the two\n  try {\n    return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n  } catch (_oO) {\n    return false;\n  }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n  return event.exception && event.exception.values && event.exception.values[0];\n}\n\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n  const exception = event.exception;\n\n  if (exception) {\n    try {\n      // @ts-expect-error Object could be undefined\n      return exception.values[0].stacktrace.frames;\n    } catch (_oO) {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n  const type = 'error';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n  _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n  GLOBAL_OBJ.onerror = function (\n    msg: string | object,\n    url?: string,\n    line?: number,\n    column?: number,\n    error?: Error,\n  ): boolean {\n    const handlerData: HandlerDataError = {\n      column,\n      error,\n      line,\n      msg,\n      url,\n    };\n    triggerHandlers('error', handlerData);\n\n    if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnErrorHandler.apply(this, arguments);\n    }\n\n    return false;\n  };\n\n  GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n  handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n  const type = 'unhandledrejection';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n  _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n  GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n    const handlerData: HandlerDataUnhandledRejection = e;\n    triggerHandlers('unhandledrejection', handlerData);\n\n    if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n    }\n\n    return true;\n  };\n\n  GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { captureEvent, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n  Client,\n  Event,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n  Primitive,\n  StackParser,\n} from '@sentry/types';\nimport {\n  addGlobalErrorInstrumentationHandler,\n  addGlobalUnhandledRejectionInstrumentationHandler,\n  getLocationHref,\n  isErrorEvent,\n  isPrimitive,\n  isString,\n  logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\ntype GlobalHandlersIntegrations = Record<GlobalHandlersIntegrationsOptionKeys, boolean>;\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options: Partial<GlobalHandlersIntegrations> = {}) => {\n  const _options = {\n    onerror: true,\n    onunhandledrejection: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      Error.stackTraceLimit = 50;\n    },\n    setup(client) {\n      if (_options.onerror) {\n        _installGlobalOnErrorHandler(client);\n        globalHandlerLog('onerror');\n      }\n      if (_options.onunhandledrejection) {\n        _installGlobalOnUnhandledRejectionHandler(client);\n        globalHandlerLog('onunhandledrejection');\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\n/**\n * Global handlers.\n * @deprecated Use `globalHandlersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const GlobalHandlers = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  globalHandlersIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }> & {\n  new (options?: Partial<GlobalHandlersIntegrations>): Integration;\n};\n\nfunction _installGlobalOnErrorHandler(client: Client): void {\n  addGlobalErrorInstrumentationHandler(data => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const { msg, url, line, column, error } = data;\n\n    const event =\n      error === undefined && isString(msg)\n        ? _eventFromIncompleteOnError(msg, url, line, column)\n        : _enhanceEventWithInitialFrame(\n            eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n            url,\n            line,\n            column,\n          );\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onerror',\n      },\n    });\n  });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client: Client): void {\n  addGlobalUnhandledRejectionInstrumentationHandler(e => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const error = _getUnhandledRejectionError(e as unknown);\n\n    const event = isPrimitive(error)\n      ? _eventFromRejectionWithPrimitive(error)\n      : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onunhandledrejection',\n      },\n    });\n  });\n}\n\nfunction _getUnhandledRejectionError(error: unknown): unknown {\n  if (isPrimitive(error)) {\n    return error;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const e = error as any;\n\n  // dig the object of the rejection out of known event types\n  try {\n    // PromiseRejectionEvents store the object of the rejection under 'reason'\n    // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n    if ('reason' in e) {\n      return e.reason;\n    }\n\n    // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n    // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n    // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n    // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n    // https://github.com/getsentry/sentry-javascript/issues/2380\n    else if ('detail' in e && 'reason' in e.detail) {\n      return e.detail.reason;\n    }\n  } catch {} // eslint-disable-line no-empty\n\n  return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n  return {\n    exception: {\n      values: [\n        {\n          type: 'UnhandledRejection',\n          // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n          value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n        },\n      ],\n    },\n  };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n  const ERROR_TYPES_RE =\n    /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n  // If 'message' is ErrorEvent, get real message from inside\n  let message = isErrorEvent(msg) ? msg.message : msg;\n  let name = 'Error';\n\n  const groups = message.match(ERROR_TYPES_RE);\n  if (groups) {\n    name = groups[1];\n    message = groups[2];\n  }\n\n  const event = {\n    exception: {\n      values: [\n        {\n          type: name,\n          value: message,\n        },\n      ],\n    },\n  };\n\n  return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n  // event.exception\n  const e = (event.exception = event.exception || {});\n  // event.exception.values\n  const ev = (e.values = e.values || []);\n  // event.exception.values[0]\n  const ev0 = (ev[0] = ev[0] || {});\n  // event.exception.values[0].stacktrace\n  const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n  // event.exception.values[0].stacktrace.frames\n  const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n  const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n  const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n  const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n  // event.exception.values[0].stacktrace.frames\n  if (ev0sf.length === 0) {\n    ev0sf.push({\n      colno,\n      filename,\n      function: '?',\n      in_app: true,\n      lineno,\n    });\n  }\n\n  return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n  DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions(): { stackParser: StackParser; attachStacktrace?: boolean } {\n  const client = getClient<BrowserClient>();\n  const options = (client && client.getOptions()) || {\n    stackParser: () => [],\n    attachStacktrace: false,\n  };\n  return options;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\nconst INTEGRATION_NAME = 'HttpContext';\n\nconst _httpContextIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    preprocessEvent(event) {\n      // if none of the information we want exists, don't bother\n      if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n        return;\n      }\n\n      // grab as much info as exists and add it to the event\n      const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n      const { referrer } = WINDOW.document || {};\n      const { userAgent } = WINDOW.navigator || {};\n\n      const headers = {\n        ...(event.request && event.request.headers),\n        ...(referrer && { Referer: referrer }),\n        ...(userAgent && { 'User-Agent': userAgent }),\n      };\n      const request = { ...event.request, ...(url && { url }), headers };\n\n      event.request = request;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const httpContextIntegration = defineIntegration(_httpContextIntegration);\n\n/**\n * HttpContext integration collects information about HTTP request headers.\n * @deprecated Use `httpContextIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME, httpContextIntegration) as IntegrationClass<\n  Integration & { preprocessEvent: (event: Event) => void }\n>;\n","import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types';\n\nimport { isInstanceOf } from './is';\nimport { truncate } from './string';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  maxValueLimit: number = 250,\n  key: string,\n  limit: number,\n  event: Event,\n  hint?: EventHint,\n): void {\n  if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n    return;\n  }\n\n  // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n  const originalException: Exception | undefined =\n    event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n  // We only create exception grouping if there is an exception in the event.\n  if (originalException) {\n    event.exception.values = truncateAggregateExceptions(\n      aggregateExceptionsFromError(\n        exceptionFromErrorImplementation,\n        parser,\n        limit,\n        hint.originalException as ExtendedError,\n        key,\n        event.exception.values,\n        originalException,\n        0,\n      ),\n      maxValueLimit,\n    );\n  }\n}\n\nfunction aggregateExceptionsFromError(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  limit: number,\n  error: ExtendedError,\n  key: string,\n  prevExceptions: Exception[],\n  exception: Exception,\n  exceptionId: number,\n): Exception[] {\n  if (prevExceptions.length >= limit + 1) {\n    return prevExceptions;\n  }\n\n  let newExceptions = [...prevExceptions];\n\n  // Recursively call this function in order to walk down a chain of errors\n  if (isInstanceOf(error[key], Error)) {\n    applyExceptionGroupFieldsForParentException(exception, exceptionId);\n    const newException = exceptionFromErrorImplementation(parser, error[key]);\n    const newExceptionId = newExceptions.length;\n    applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n    newExceptions = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      error[key],\n      key,\n      [newException, ...newExceptions],\n      newException,\n      newExceptionId,\n    );\n  }\n\n  // This will create exception grouping for AggregateErrors\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n  if (Array.isArray(error.errors)) {\n    error.errors.forEach((childError, i) => {\n      if (isInstanceOf(childError, Error)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId,\n        );\n      }\n    });\n  }\n\n  return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n    exception_id: exceptionId,\n  };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n  exception: Exception,\n  source: string,\n  exceptionId: number,\n  parentId: number | undefined,\n): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    type: 'chained',\n    source,\n    exception_id: exceptionId,\n    parent_id: parentId,\n  };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions: Exception[], maxValueLength: number): Exception[] {\n  return exceptions.map(exception => {\n    if (exception.value) {\n      exception.value = truncate(exception.value, maxValueLength);\n    }\n    return exception;\n  });\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n  key?: string;\n  limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n  const limit = options.limit || DEFAULT_LIMIT;\n  const key = options.key || DEFAULT_KEY;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    preprocessEvent(event, hint, client) {\n      const options = client.getOptions();\n\n      applyAggregateErrorsToEvent(\n        // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n        exceptionFromError,\n        options.stackParser,\n        options.maxValueLength,\n        key,\n        limit,\n        event,\n        hint,\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Aggregrate linked errors in an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n  Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n  'EventTarget',\n  'Window',\n  'Node',\n  'ApplicationCache',\n  'AudioTrackList',\n  'BroadcastChannel',\n  'ChannelMergerNode',\n  'CryptoOperation',\n  'EventSource',\n  'FileReader',\n  'HTMLUnknownElement',\n  'IDBDatabase',\n  'IDBRequest',\n  'IDBTransaction',\n  'KeyOperation',\n  'MediaController',\n  'MessagePort',\n  'ModalWindow',\n  'Notification',\n  'SVGElementInstance',\n  'Screen',\n  'SharedWorker',\n  'TextTrack',\n  'TextTrackCue',\n  'TextTrackList',\n  'WebSocket',\n  'WebSocketWorker',\n  'Worker',\n  'XMLHttpRequest',\n  'XMLHttpRequestEventTarget',\n  'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'TryCatch';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\ninterface TryCatchOptions {\n  setTimeout: boolean;\n  setInterval: boolean;\n  requestAnimationFrame: boolean;\n  XMLHttpRequest: boolean;\n  eventTarget: boolean | string[];\n}\n\nconst _browserApiErrorsIntegration = ((options: Partial<TryCatchOptions> = {}) => {\n  const _options = {\n    XMLHttpRequest: true,\n    eventTarget: true,\n    requestAnimationFrame: true,\n    setInterval: true,\n    setTimeout: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO: This currently only works for the first client this is setup\n    // We may want to adjust this to check for client etc.\n    setupOnce() {\n      if (_options.setTimeout) {\n        fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n      }\n\n      if (_options.setInterval) {\n        fill(WINDOW, 'setInterval', _wrapTimeFunction);\n      }\n\n      if (_options.requestAnimationFrame) {\n        fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n      }\n\n      if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n        fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n      }\n\n      const eventTargetOption = _options.eventTarget;\n      if (eventTargetOption) {\n        const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n        eventTarget.forEach(_wrapEventTarget);\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n * @deprecated Use `browserApiErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const TryCatch = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  browserApiErrorsIntegration,\n) as IntegrationClass<Integration> & {\n  new (options?: {\n    setTimeout: boolean;\n    setInterval: boolean;\n    requestAnimationFrame: boolean;\n    XMLHttpRequest: boolean;\n    eventTarget: boolean | string[];\n  }): Integration;\n};\n\nfunction _wrapTimeFunction(original: () => void): () => number {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, ...args: any[]): number {\n    const originalCallback = args[0];\n    args[0] = wrap(originalCallback, {\n      mechanism: {\n        data: { function: getFunctionName(original) },\n        handled: false,\n        type: 'instrument',\n      },\n    });\n    return original.apply(this, args);\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, callback: () => void): () => void {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return original.apply(this, [\n      wrap(callback, {\n        mechanism: {\n          data: {\n            function: 'requestAnimationFrame',\n            handler: getFunctionName(original),\n          },\n          handled: false,\n          type: 'instrument',\n        },\n      }),\n    ]);\n  };\n}\n\nfunction _wrapXHR(originalSend: () => void): () => void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: XMLHttpRequest, ...args: any[]): void {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const xhr = this;\n    const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n    xmlHttpRequestProps.forEach(prop => {\n      if (prop in xhr && typeof xhr[prop] === 'function') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        fill(xhr, prop, function (original: WrappedFunction): () => any {\n          const wrapOptions = {\n            mechanism: {\n              data: {\n                function: prop,\n                handler: getFunctionName(original),\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          };\n\n          // If Instrument integration has been called before TryCatch, get the name of original function\n          const originalFunction = getOriginalFunction(original);\n          if (originalFunction) {\n            wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n          }\n\n          // Otherwise wrap directly\n          return wrap(original, wrapOptions);\n        });\n      }\n    });\n\n    return originalSend.apply(this, args);\n  };\n}\n\nfunction _wrapEventTarget(target: string): void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const globalObject = WINDOW as { [key: string]: any };\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  const proto = globalObject[target] && globalObject[target].prototype;\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n  if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n    return;\n  }\n\n  fill(proto, 'addEventListener', function (original: VoidFunction,): (\n    eventName: string,\n    fn: EventListenerObject,\n    options?: boolean | AddEventListenerOptions,\n  ) => void {\n    return function (\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this: any,\n      eventName: string,\n      fn: EventListenerObject,\n      options?: boolean | AddEventListenerOptions,\n    ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n      try {\n        if (typeof fn.handleEvent === 'function') {\n          // ESlint disable explanation:\n          //  First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n          //  introduce a bug here, because bind returns a new function that doesn't have our\n          //  flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n          //  Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n          // eslint-disable-next-line @typescript-eslint/unbound-method\n          fn.handleEvent = wrap(fn.handleEvent, {\n            mechanism: {\n              data: {\n                function: 'handleEvent',\n                handler: getFunctionName(fn),\n                target,\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          });\n        }\n      } catch (err) {\n        // can sometimes get 'Permission denied to access property \"handle Event'\n      }\n\n      return original.apply(this, [\n        eventName,\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        wrap(fn as any as WrappedFunction, {\n          mechanism: {\n            data: {\n              function: 'addEventListener',\n              handler: getFunctionName(fn),\n              target,\n            },\n            handled: false,\n            type: 'instrument',\n          },\n        }),\n        options,\n      ]);\n    };\n  });\n\n  fill(\n    proto,\n    'removeEventListener',\n    function (\n      originalRemoveEventListener: () => void,\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n      return function (\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this: any,\n        eventName: string,\n        fn: EventListenerObject,\n        options?: boolean | EventListenerOptions,\n      ): () => void {\n        /**\n         * There are 2 possible scenarios here:\n         *\n         * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n         * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n         * as a pass-through, and call original `removeEventListener` with it.\n         *\n         * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n         * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n         * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n         * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n         * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n         *\n         * When someone adds a handler prior to initialization, and then do it again, but after,\n         * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n         * to get rid of the initial handler and it'd stick there forever.\n         */\n        const wrappedEventHandler = fn as unknown as WrappedFunction;\n        try {\n          const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n          if (originalEventHandler) {\n            originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n          }\n        } catch (e) {\n          // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n        }\n        return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n      };\n    },\n  );\n}\n","// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n  const frame: StackFrame = {\n    filename,\n    function: func,\n    in_app: true, // All browser frames are considered in_app\n  };\n\n  if (lineno !== undefined) {\n    frame.lineno = lineno;\n  }\n\n  if (colno !== undefined) {\n    frame.colno = colno;\n  }\n\n  return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n  /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n  const parts = chromeRegex.exec(line);\n\n  if (parts) {\n    const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n    if (isEval) {\n      const subMatch = chromeEvalRegex.exec(parts[2]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = subMatch[1]; // url\n        parts[3] = subMatch[2]; // line\n        parts[4] = subMatch[3]; // column\n      }\n    }\n\n    // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n    // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n    const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n    return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n  }\n\n  return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n  /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n  const parts = geckoREgex.exec(line);\n\n  if (parts) {\n    const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    if (isEval) {\n      const subMatch = geckoEvalRegex.exec(parts[3]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line number\n        parts[1] = parts[1] || 'eval';\n        parts[3] = subMatch[1];\n        parts[4] = subMatch[2];\n        parts[5] = ''; // no column when eval\n      }\n    }\n\n    let filename = parts[3];\n    let func = parts[1] || UNKNOWN_FUNCTION;\n    [func, filename] = extractSafariExtensionDetails(func, filename);\n\n    return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n  }\n\n  return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n  const parts = winjsRegex.exec(line);\n\n  return parts\n    ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n    : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n  const parts = opera10Regex.exec(line);\n  return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n  / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n  const parts = opera11Regex.exec(line);\n  return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n *   at function@url:row:col\n *   at function@url:row:col\n *   at function@url:row:col\n *\n * it produces something like:\n *\n *   function@url:row:col\n *   function@url:row:col\n *   function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n  const isSafariExtension = func.indexOf('safari-extension') !== -1;\n  const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n  return isSafariExtension || isSafariWebExtension\n    ? [\n        func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n        isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n      ]\n    : [func, filename];\n};\n","import { SentryError } from './error';\nimport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer<T> {\n  // exposes the internal array so tests can assert on the state of it.\n  // XXX: this really should not be public api.\n  $: Array<PromiseLike<T>>;\n  add(taskProducer: () => PromiseLike<T>): PromiseLike<T>;\n  drain(timeout?: number): PromiseLike<boolean>;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer<T>(limit?: number): PromiseBuffer<T> {\n  const buffer: Array<PromiseLike<T>> = [];\n\n  function isReady(): boolean {\n    return limit === undefined || buffer.length < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike<T>\n   * @returns Removed promise.\n   */\n  function remove(task: PromiseLike<T>): PromiseLike<T> {\n    return buffer.splice(buffer.indexOf(task), 1)[0];\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer: () => PromiseLike<T>): PromiseLike<T> {\n    if (!isReady()) {\n      return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    if (buffer.indexOf(task) === -1) {\n      buffer.push(task);\n    }\n    void task\n      .then(() => remove(task))\n      // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n      // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n      // have promises, so TS has to polyfill when down-compiling.)\n      .then(null, () =>\n        remove(task).then(null, () => {\n          // We have to add another catch here because `remove()` starts a new promise chain.\n        }),\n      );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise<boolean>((resolve, reject) => {\n      let counter = buffer.length;\n\n      if (!counter) {\n        return resolve(true);\n      }\n\n      // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n      const capturedSetTimeout = setTimeout(() => {\n        if (timeout && timeout > 0) {\n          resolve(false);\n        }\n      }, timeout);\n\n      // if all promises resolve in time, cancel the timer and resolve to `true`\n      buffer.forEach(item => {\n        void resolvedSyncPromise(item).then(() => {\n          if (!--counter) {\n            clearTimeout(capturedSetTimeout);\n            resolve(true);\n          }\n        }, reject);\n      });\n    });\n  }\n\n  return {\n    $: buffer,\n    add,\n    drain,\n  };\n}\n","import type {\n  Envelope,\n  EnvelopeItem,\n  EnvelopeItemType,\n  Event,\n  EventDropReason,\n  EventItem,\n  InternalBaseTransportOptions,\n  Transport,\n  TransportMakeRequestResponse,\n  TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n  SentryError,\n  createEnvelope,\n  envelopeItemTypeToDataCategory,\n  forEachEnvelopeItem,\n  isRateLimited,\n  logger,\n  makePromiseBuffer,\n  resolvedSyncPromise,\n  serializeEnvelope,\n  updateRateLimits,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n  options: InternalBaseTransportOptions,\n  makeRequest: TransportRequestExecutor,\n  buffer: PromiseBuffer<void | TransportMakeRequestResponse> = makePromiseBuffer(\n    options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n  ),\n): Transport {\n  let rateLimits: RateLimits = {};\n  const flush = (timeout?: number): PromiseLike<boolean> => buffer.drain(timeout);\n\n  function send(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> {\n    const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n    // Drop rate limited items from envelope\n    forEachEnvelopeItem(envelope, (item, type) => {\n      const dataCategory = envelopeItemTypeToDataCategory(type);\n      if (isRateLimited(rateLimits, dataCategory)) {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n      } else {\n        filteredEnvelopeItems.push(item);\n      }\n    });\n\n    // Skip sending if envelope is empty after filtering out rate limited events\n    if (filteredEnvelopeItems.length === 0) {\n      return resolvedSyncPromise();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n    // Creates client report for each item in an envelope\n    const recordEnvelopeLoss = (reason: EventDropReason): void => {\n      forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n      });\n    };\n\n    const requestTask = (): PromiseLike<void | TransportMakeRequestResponse> =>\n      makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n        response => {\n          // We don't want to throw on NOK responses, but we want to at least log them\n          if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n            DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n          }\n\n          rateLimits = updateRateLimits(rateLimits, response);\n          return response;\n        },\n        error => {\n          recordEnvelopeLoss('network_error');\n          throw error;\n        },\n      );\n\n    return buffer.add(requestTask).then(\n      result => result,\n      error => {\n        if (error instanceof SentryError) {\n          DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n          recordEnvelopeLoss('queue_overflow');\n          return resolvedSyncPromise();\n        } else {\n          throw error;\n        }\n      },\n    );\n  }\n\n  // We use this to identifify if the transport is the base transport\n  // TODO (v8): Remove this again as we'll no longer need it\n  send.__sentry__baseTransport__ = true;\n\n  return {\n    send,\n    flush,\n  };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n  if (type !== 'event' && type !== 'transaction') {\n    return undefined;\n  }\n\n  return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n *   const p = f.apply(this, arguments);\n *\n *   p.then(function() {\n *     console.log('hi.');\n *   });\n *\n *   return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome:  Failed to fetch\n * Edge:    Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari:  resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n  if (cachedFetchImpl) {\n    return cachedFetchImpl;\n  }\n\n  /* eslint-disable @typescript-eslint/unbound-method */\n\n  // Fast path to avoid DOM I/O\n  if (isNativeFetch(WINDOW.fetch)) {\n    return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n  }\n\n  const document = WINDOW.document;\n  let fetchImpl = WINDOW.fetch;\n  // eslint-disable-next-line deprecation/deprecation\n  if (document && typeof document.createElement === 'function') {\n    try {\n      const sandbox = document.createElement('iframe');\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow.fetch) {\n        fetchImpl = contentWindow.fetch;\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      DEBUG_BUILD && logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n    }\n  }\n\n  return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n  /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n  cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\nimport type { FetchImpl } from './utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n  options: BrowserTransportOptions,\n  nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n  let pendingBodySize = 0;\n  let pendingCount = 0;\n\n  function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n    const requestSize = request.body.length;\n    pendingBodySize += requestSize;\n    pendingCount++;\n\n    const requestOptions: RequestInit = {\n      body: request.body,\n      method: 'POST',\n      referrerPolicy: 'origin',\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n      //   If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n      //   We will therefore only activate the flag when we're below that limit.\n      // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n      // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n      keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n      ...options.fetchOptions,\n    };\n\n    try {\n      return nativeFetch(options.url, requestOptions).then(response => {\n        pendingBodySize -= requestSize;\n        pendingCount--;\n        return {\n          statusCode: response.status,\n          headers: {\n            'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n            'retry-after': response.headers.get('Retry-After'),\n          },\n        };\n      });\n    } catch (e) {\n      clearCachedFetchImplementation();\n      pendingBodySize -= requestSize;\n      pendingCount--;\n      return rejectedSyncPromise(e);\n    }\n  }\n\n  return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n  function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n    return new SyncPromise((resolve, reject) => {\n      const xhr = new XMLHttpRequest();\n\n      xhr.onerror = reject;\n\n      xhr.onreadystatechange = (): void => {\n        if (xhr.readyState === XHR_READYSTATE_DONE) {\n          resolve({\n            statusCode: xhr.status,\n            headers: {\n              'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n              'retry-after': xhr.getResponseHeader('Retry-After'),\n            },\n          });\n        }\n      };\n\n      xhr.open('POST', options.url);\n\n      for (const header in options.headers) {\n        if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n          xhr.setRequestHeader(header, options.headers[header]);\n        }\n      }\n\n      xhr.send(request.body);\n    });\n  }\n\n  return createTransport(options, makeRequest);\n}\n","import type { Hub } from '@sentry/core';\nimport { functionToStringIntegration, inboundFiltersIntegration } from '@sentry/core';\nimport {\n  captureSession,\n  getClient,\n  getCurrentHub,\n  getIntegrationsToSetup,\n  getReportDialogEndpoint,\n  initAndBind,\n  startSession,\n} from '@sentry/core';\nimport type { Integration, Options, UserFeedback } from '@sentry/types';\nimport {\n  addHistoryInstrumentationHandler,\n  logger,\n  stackParserFromStackParserOptions,\n  supportsFetch,\n} from '@sentry/utils';\n\nimport type { BrowserClientOptions, BrowserOptions } from './client';\nimport { BrowserClient } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ReportDialogOptions } from './helpers';\nimport { WINDOW, wrap as internalWrap } from './helpers';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs';\nimport { dedupeIntegration } from './integrations/dedupe';\nimport { globalHandlersIntegration } from './integrations/globalhandlers';\nimport { httpContextIntegration } from './integrations/httpcontext';\nimport { linkedErrorsIntegration } from './integrations/linkederrors';\nimport { browserApiErrorsIntegration } from './integrations/trycatch';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\n/** @deprecated Use `getDefaultIntegrations(options)` instead. */\nexport const defaultIntegrations = [\n  inboundFiltersIntegration(),\n  functionToStringIntegration(),\n  browserApiErrorsIntegration(),\n  breadcrumbsIntegration(),\n  globalHandlersIntegration(),\n  linkedErrorsIntegration(),\n  dedupeIntegration(),\n  httpContextIntegration(),\n];\n\n/** Get the default integrations for the browser SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n  // We return a copy of the defaultIntegrations here to avoid mutating this\n  return [\n    // eslint-disable-next-line deprecation/deprecation\n    ...defaultIntegrations,\n  ];\n}\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\ndeclare const __SENTRY_RELEASE__: string | undefined;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n *   dsn: '__DSN__',\n *   // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n *   scope.setExtra({ battery: 0.7 });\n *   scope.setTag({ user_mode: 'admin' });\n *   scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n *   message: 'My Breadcrumb',\n *   // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n *   message: 'Manual',\n *   stacktrace: [\n *     // ...\n *   ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n  if (options.defaultIntegrations === undefined) {\n    options.defaultIntegrations = getDefaultIntegrations(options);\n  }\n  if (options.release === undefined) {\n    // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n    if (typeof __SENTRY_RELEASE__ === 'string') {\n      options.release = __SENTRY_RELEASE__;\n    }\n\n    // This supports the variable that sentry-webpack-plugin injects\n    if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n      options.release = WINDOW.SENTRY_RELEASE.id;\n    }\n  }\n  if (options.autoSessionTracking === undefined) {\n    options.autoSessionTracking = true;\n  }\n  if (options.sendClientReports === undefined) {\n    options.sendClientReports = true;\n  }\n\n  const clientOptions: BrowserClientOptions = {\n    ...options,\n    stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n    integrations: getIntegrationsToSetup(options),\n    transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n  };\n\n  initAndBind(BrowserClient, clientOptions);\n\n  if (options.autoSessionTracking) {\n    startSessionTracking();\n  }\n}\n\ntype NewReportDialogOptions = ReportDialogOptions & { eventId: string }; // eslint-disable-line\n\ninterface ShowReportDialogFunction {\n  /**\n   * Present the user with a report dialog.\n   *\n   * @param options Everything is optional, we try to fetch all info need from the global scope.\n   */\n  (options: NewReportDialogOptions): void;\n\n  /**\n   * Present the user with a report dialog.\n   *\n   * @param options Everything is optional, we try to fetch all info need from the global scope.\n   *\n   * @deprecated Please always pass an `options` argument with `eventId`. The `hub` argument will not be used in the next version of the SDK.\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  (options?: ReportDialogOptions, hub?: Hub): void;\n}\n\nexport const showReportDialog: ShowReportDialogFunction = (\n  // eslint-disable-next-line deprecation/deprecation\n  options: ReportDialogOptions = {},\n  // eslint-disable-next-line deprecation/deprecation\n  hub: Hub = getCurrentHub(),\n) => {\n  // doesn't work without a document (React Native)\n  if (!WINDOW.document) {\n    DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n    return;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  const { client, scope } = hub.getStackTop();\n  const dsn = options.dsn || (client && client.getDsn());\n  if (!dsn) {\n    DEBUG_BUILD && logger.error('DSN not configured for showReportDialog call');\n    return;\n  }\n\n  if (scope) {\n    options.user = {\n      ...scope.getUser(),\n      ...options.user,\n    };\n  }\n\n  if (!options.eventId) {\n    // eslint-disable-next-line deprecation/deprecation\n    options.eventId = hub.lastEventId();\n  }\n\n  const script = WINDOW.document.createElement('script');\n  script.async = true;\n  script.crossOrigin = 'anonymous';\n  script.src = getReportDialogEndpoint(dsn, options);\n\n  if (options.onLoad) {\n    script.onload = options.onLoad;\n  }\n\n  const { onClose } = options;\n  if (onClose) {\n    const reportDialogClosedMessageHandler = (event: MessageEvent): void => {\n      if (event.data === '__sentry_reportdialog_closed__') {\n        try {\n          onClose();\n        } finally {\n          WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n        }\n      }\n    };\n    WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n  }\n\n  const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n  if (injectionPoint) {\n    injectionPoint.appendChild(script);\n  } else {\n    DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n  }\n};\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n  // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n  callback();\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @deprecated This function will be removed in v8.\n * It is not part of Sentry's official API and it's easily replaceable by using a try/catch block\n * and calling Sentry.captureException.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// TODO(v8): Remove this function\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n  return internalWrap(fn)();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n  if (typeof WINDOW.document === 'undefined') {\n    DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n    return;\n  }\n\n  // The session duration for browser sessions does not track a meaningful\n  // concept that can be used as a metric.\n  // Automatically captured sessions are akin to page views, and thus we\n  // discard their duration.\n  startSession({ ignoreDuration: true });\n  captureSession();\n\n  // We want to create a session for every navigation as well\n  addHistoryInstrumentationHandler(({ from, to }) => {\n    // Don't create an additional session for the initial route or if the location did not change\n    if (from !== undefined && from !== to) {\n      startSession({ ignoreDuration: true });\n      captureSession();\n    }\n  });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nexport function captureUserFeedback(feedback: UserFeedback): void {\n  const client = getClient<BrowserClient>();\n  if (client) {\n    client.captureUserFeedback(feedback);\n  }\n}\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport type { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n  let lastAccessLHS: unknown = undefined;\n  let value = ops[0];\n  let i = 1;\n  while (i < ops.length) {\n    const op = ops[i] as string;\n    const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n    i += 2;\n    // by checking for loose equality to `null`, we catch both `null` and `undefined`\n    if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n      // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n      return;\n    }\n    if (op === 'access' || op === 'optionalAccess') {\n      lastAccessLHS = value;\n      value = fn(value);\n    } else if (op === 'call' || op === 'optionalCall') {\n      value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n      lastAccessLHS = undefined;\n    }\n  }\n  return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n//   let lastAccessLHS = undefined;\n//   let value = ops[0];\n//   let i = 1;\n//   while (i < ops.length) {\n//     const op = ops[i];\n//     const fn = ops[i + 1];\n//     i += 2;\n//     if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n//       return undefined;\n//     }\n//     if (op === 'access' || op === 'optionalAccess') {\n//       lastAccessLHS = value;\n//       value = fn(value);\n//     } else if (op === 'call' || op === 'optionalCall') {\n//       value = fn((...args) => value.call(lastAccessLHS, ...args));\n//       lastAccessLHS = undefined;\n//     }\n//   }\n//   return value;\n// }\n","import type { Client, DsnComponents, Hub } from '@sentry/types';\n\n/**\n * Checks whether given url points to Sentry server\n * @param url url to verify\n *\n * TODO(v8): Remove Hub fallback type\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function isSentryRequestUrl(url: string, hubOrClient: Hub | Client | undefined): boolean {\n  const client =\n    hubOrClient && isHub(hubOrClient)\n      ? // eslint-disable-next-line deprecation/deprecation\n        hubOrClient.getClient()\n      : hubOrClient;\n  const dsn = client && client.getDsn();\n  const tunnel = client && client.getOptions().tunnel;\n\n  return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n  if (!tunnel) {\n    return false;\n  }\n\n  return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n  return dsn ? url.includes(dsn.host) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n  return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction isHub(hubOrClient: Hub | Client | undefined): hubOrClient is Hub {\n  // eslint-disable-next-line deprecation/deprecation\n  return (hubOrClient as Hub).getClient !== undefined;\n}\n","import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n  // eslint-disable-next-line no-restricted-globals\n  return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n  return (\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n    (GLOBAL_OBJ as any).process !== undefined && ((GLOBAL_OBJ as any).process as ElectronProcess).type === 'renderer'\n  );\n}\n","import { getFunctionName, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { onCLS } from './web-vitals/getCLS';\nimport { onFID } from './web-vitals/getFID';\nimport { onINP } from './web-vitals/getINP';\nimport { onLCP } from './web-vitals/getLCP';\nimport { observe } from './web-vitals/lib/observe';\nimport { onTTFB } from './web-vitals/onTTFB';\n\ntype InstrumentHandlerTypePerformanceObserver =\n  | 'longtask'\n  | 'event'\n  | 'navigation'\n  | 'paint'\n  | 'resource'\n  | 'first-input';\n\ntype InstrumentHandlerTypeMetric = 'cls' | 'lcp' | 'fid' | 'ttfb' | 'inp';\n\n// We provide this here manually instead of relying on a global, as this is not available in non-browser environements\n// And we do not want to expose such types\ninterface PerformanceEntry {\n  readonly duration: number;\n  readonly entryType: string;\n  readonly name: string;\n  readonly startTime: number;\n  toJSON(): Record<string, unknown>;\n}\ninterface PerformanceEventTiming extends PerformanceEntry {\n  processingStart: number;\n  processingEnd: number;\n  duration: number;\n  cancelable?: boolean;\n  target?: unknown | null;\n  interactionId?: number;\n}\n\ninterface Metric {\n  /**\n   * The name of the metric (in acronym form).\n   */\n  name: 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';\n\n  /**\n   * The current value of the metric.\n   */\n  value: number;\n\n  /**\n   * The rating as to whether the metric value is within the \"good\",\n   * \"needs improvement\", or \"poor\" thresholds of the metric.\n   */\n  rating: 'good' | 'needs-improvement' | 'poor';\n\n  /**\n   * The delta between the current value and the last-reported value.\n   * On the first report, `delta` and `value` will always be the same.\n   */\n  delta: number;\n\n  /**\n   * A unique ID representing this particular metric instance. This ID can\n   * be used by an analytics tool to dedupe multiple values sent for the same\n   * metric instance, or to group multiple deltas together and calculate a\n   * total. It can also be used to differentiate multiple different metric\n   * instances sent from the same page, which can happen if the page is\n   * restored from the back/forward cache (in that case new metrics object\n   * get created).\n   */\n  id: string;\n\n  /**\n   * Any performance entries relevant to the metric value calculation.\n   * The array may also be empty if the metric value was not based on any\n   * entries (e.g. a CLS value of 0 given no layout shifts).\n   */\n  entries: PerformanceEntry[];\n\n  /**\n   * The type of navigation\n   *\n   * Navigation Timing API (or `undefined` if the browser doesn't\n   * support that API). For pages that are restored from the bfcache, this\n   * value will be 'back-forward-cache'.\n   */\n  navigationType: 'navigate' | 'reload' | 'back-forward' | 'back-forward-cache' | 'prerender';\n}\n\ntype InstrumentHandlerType = InstrumentHandlerTypeMetric | InstrumentHandlerTypePerformanceObserver;\n\ntype StopListening = undefined | void | (() => void);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstrumentHandlerCallback = (data: any) => void;\n\ntype CleanupHandlerCallback = () => void;\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\nlet _previousCls: Metric | undefined;\nlet _previousFid: Metric | undefined;\nlet _previousLcp: Metric | undefined;\nlet _previousTtfb: Metric | undefined;\nlet _previousInp: Metric | undefined;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nexport function addClsInstrumentationHandler(\n  callback: (data: { metric: Metric }) => void,\n  stopOnCallback = false,\n): CleanupHandlerCallback {\n  return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nexport function addLcpInstrumentationHandler(\n  callback: (data: { metric: Metric }) => void,\n  stopOnCallback = false,\n): CleanupHandlerCallback {\n  return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nexport function addTtfbInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n  return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addFidInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n  return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addInpInstrumentationHandler(\n  callback: (data: { metric: Omit<Metric, 'entries'> & { entries: PerformanceEventTiming[] } }) => void,\n): CleanupHandlerCallback {\n  return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\nexport function addPerformanceInstrumentationHandler(\n  type: 'event' | 'first-input',\n  callback: (data: { entries: ((PerformanceEntry & { target?: unknown | null }) | PerformanceEventTiming)[] }) => void,\n): CleanupHandlerCallback;\nexport function addPerformanceInstrumentationHandler(\n  type: InstrumentHandlerTypePerformanceObserver,\n  callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback;\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addPerformanceInstrumentationHandler(\n  type: InstrumentHandlerTypePerformanceObserver,\n  callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback {\n  addHandler(type, callback);\n\n  if (!instrumented[type]) {\n    instrumentPerformanceObserver(type);\n    instrumented[type] = true;\n  }\n\n  return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n  const typeHandlers = handlers[type];\n\n  if (!typeHandlers || !typeHandlers.length) {\n    return;\n  }\n\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n\nfunction instrumentCls(): StopListening {\n  return onCLS(\n    metric => {\n      triggerHandlers('cls', {\n        metric,\n      });\n      _previousCls = metric;\n    },\n    { reportAllChanges: true },\n  );\n}\n\nfunction instrumentFid(): void {\n  return onFID(metric => {\n    triggerHandlers('fid', {\n      metric,\n    });\n    _previousFid = metric;\n  });\n}\n\nfunction instrumentLcp(): StopListening {\n  return onLCP(metric => {\n    triggerHandlers('lcp', {\n      metric,\n    });\n    _previousLcp = metric;\n  });\n}\n\nfunction instrumentTtfb(): StopListening {\n  return onTTFB(metric => {\n    triggerHandlers('ttfb', {\n      metric,\n    });\n    _previousTtfb = metric;\n  });\n}\n\nfunction instrumentInp(): void {\n  return onINP(metric => {\n    triggerHandlers('inp', {\n      metric,\n    });\n    _previousInp = metric;\n  });\n}\n\nfunction addMetricObserver(\n  type: InstrumentHandlerTypeMetric,\n  callback: InstrumentHandlerCallback,\n  instrumentFn: () => StopListening,\n  previousValue: Metric | undefined,\n  stopOnCallback = false,\n): CleanupHandlerCallback {\n  addHandler(type, callback);\n\n  let stopListening: StopListening | undefined;\n\n  if (!instrumented[type]) {\n    stopListening = instrumentFn();\n    instrumented[type] = true;\n  }\n\n  if (previousValue) {\n    callback({ metric: previousValue });\n  }\n\n  return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type: InstrumentHandlerTypePerformanceObserver): void {\n  const options: PerformanceObserverInit = {};\n\n  // Special per-type options we want to use\n  if (type === 'event') {\n    options.durationThreshold = 0;\n  }\n\n  observe(\n    type,\n    entries => {\n      triggerHandlers(type, { entries });\n    },\n    options,\n  );\n}\n\nfunction addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n  type: InstrumentHandlerType,\n  callback: InstrumentHandlerCallback,\n  stopListening: StopListening,\n): CleanupHandlerCallback {\n  return () => {\n    if (stopListening) {\n      stopListening();\n    }\n\n    const typeHandlers = handlers[type];\n\n    if (!typeHandlers) {\n      return;\n    }\n\n    const index = typeHandlers.indexOf(callback);\n    if (index !== -1) {\n      typeHandlers.splice(index, 1);\n    }\n  };\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n  callback: ReportCallback,\n  metric: Metric,\n  reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n  let prevValue: number;\n  let delta: number;\n  return (forceReport?: boolean) => {\n    if (metric.value >= 0) {\n      if (forceReport || reportAllChanges) {\n        delta = metric.value - (prevValue || 0);\n\n        // Report the metric if there's a non-zero delta or if no previous\n        // value exists (which can happen in the case of the document becoming\n        // hidden when the metric value is 0).\n        // See: https://github.com/GoogleChrome/web-vitals/issues/14\n        if (delta || prevValue === undefined) {\n          prevValue = metric.value;\n          metric.delta = delta;\n          callback(metric);\n        }\n      }\n    }\n  };\n};\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ &\n  // document is not available in all browser environments (webworkers). We make it optional so you have to explicitly check for it\n  Omit<Window, 'document'> &\n  Partial<Pick<Window, 'document'>>;\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\n  // eslint-disable-next-line deprecation/deprecation\n  const timing = WINDOW.performance.timing;\n  // eslint-disable-next-line deprecation/deprecation\n  const type = WINDOW.performance.navigation.type;\n\n  const navigationEntry: { [key: string]: number | string } = {\n    entryType: 'navigation',\n    startTime: 0,\n    type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n  };\n\n  for (const key in timing) {\n    if (key !== 'navigationStart' && key !== 'toJSON') {\n      // eslint-disable-next-line deprecation/deprecation\n      navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n    }\n  }\n  return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\n  if (WINDOW.__WEB_VITALS_POLYFILL__) {\n    return (\n      WINDOW.performance &&\n      ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n        getNavigationEntryFromPerformanceTiming())\n    );\n  } else {\n    return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n  }\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n  const navEntry = getNavigationEntry();\n  return (navEntry && navEntry.activationStart) || 0;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n  const navEntry = getNavigationEntry();\n  let navigationType: Metric['navigationType'] = 'navigate';\n\n  if (navEntry) {\n    if ((WINDOW.document && WINDOW.document.prerendering) || getActivationStart() > 0) {\n      navigationType = 'prerender';\n    } else {\n      navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\n    }\n  }\n\n  return {\n    name,\n    value: typeof value === 'undefined' ? -1 : value,\n    rating: 'good', // Will be updated if the value changes.\n    delta: 0,\n    entries: [],\n    id: generateUniqueID(),\n    navigationType,\n  };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n  return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n  (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n  event: PerformanceEventTiming[];\n  paint: PerformancePaintTiming[];\n  'layout-shift': LayoutShift[];\n  'largest-contentful-paint': LargestContentfulPaint[];\n  'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n  navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n  resource: PerformanceResourceTiming[];\n  longtask: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = <K extends keyof PerformanceEntryMap>(\n  type: K,\n  callback: (entries: PerformanceEntryMap[K]) => void,\n  opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n  try {\n    if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n      const po = new PerformanceObserver(list => {\n        callback(list.getEntries() as PerformanceEntryMap[K]);\n      });\n      po.observe(\n        Object.assign(\n          {\n            type,\n            buffered: true,\n          },\n          opts || {},\n        ) as PerformanceObserverInit,\n      );\n      return po;\n    }\n  } catch (e) {\n    // Do nothing.\n  }\n  return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n  (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n  const onHiddenOrPageHide = (event: Event): void => {\n    if (event.type === 'pagehide' || WINDOW.document!.visibilityState === 'hidden') {\n      cb(event);\n      if (once) {\n        removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n        removeEventListener('pagehide', onHiddenOrPageHide, true);\n      }\n    }\n  };\n\n  if (WINDOW.document) {\n    addEventListener('visibilitychange', onHiddenOrPageHide, true);\n    // Some browsers have buggy implementations of visibilitychange,\n    // so we use pagehide in addition, just to be safe.\n    addEventListener('pagehide', onHiddenOrPageHide, true);\n  }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): void => {\n  // If the document is hidden and not prerendering, assume it was always\n  // hidden and the page was loaded in the background.\n  if (WINDOW.document && WINDOW.document.visibilityState) {\n    firstHiddenTime = WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n  }\n};\n\nconst trackChanges = (): void => {\n  // Update the time if/when the document becomes hidden.\n  onHidden(({ timeStamp }) => {\n    firstHiddenTime = timeStamp;\n  }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n  readonly firstHiddenTime: number;\n} => {\n  if (firstHiddenTime < 0) {\n    // If the document is hidden when this code runs, assume it was hidden\n    // since navigation start. This isn't a perfect heuristic, but it's the\n    // best we can do until an API is available to support querying past\n    // visibilityState.\n    initHiddenTime();\n    trackChanges();\n  }\n  return {\n    get firstHiddenTime() {\n      return firstHiddenTime;\n    },\n  };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { LCPMetric, ReportCallback, StopListening } from './types';\n\nconst reportedMetricIDs: Record<string, boolean> = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nexport const onLCP = (onReport: ReportCallback): StopListening | undefined => {\n  const visibilityWatcher = getVisibilityWatcher();\n  const metric = initMetric('LCP');\n  let report: ReturnType<typeof bindReporter>;\n\n  const handleEntries = (entries: LCPMetric['entries']): void => {\n    const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\n    if (lastEntry) {\n      // The startTime attribute returns the value of the renderTime if it is\n      // not 0, and the value of the loadTime otherwise. The activationStart\n      // reference is used because LCP should be relative to page activation\n      // rather than navigation start if the page was prerendered.\n      const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n      // Only report if the page wasn't hidden prior to LCP.\n      if (value < visibilityWatcher.firstHiddenTime) {\n        metric.value = value;\n        metric.entries = [lastEntry];\n        report();\n      }\n    }\n  };\n\n  const po = observe('largest-contentful-paint', handleEntries);\n\n  if (po) {\n    report = bindReporter(onReport, metric);\n\n    const stopListening = (): void => {\n      if (!reportedMetricIDs[metric.id]) {\n        handleEntries(po.takeRecords() as LCPMetric['entries']);\n        po.disconnect();\n        reportedMetricIDs[metric.id] = true;\n        report(true);\n      }\n    };\n\n    // Stop listening after input. Note: while scrolling is an input that\n    // stop LCP observation, it's unreliable since it can be programmatically\n    // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n    ['keydown', 'click'].forEach(type => {\n      if (WINDOW.document) {\n        addEventListener(type, stopListening, { once: true, capture: true });\n      }\n    });\n\n    onHidden(stopListening, true);\n\n    return stopListening;\n  }\n\n  return;\n};\n","import { _nullishCoalesce, _optionalChain } from '@sentry/utils';\nimport { addBreadcrumb, getClient, isSentryRequestUrl, getCurrentScope, addEventProcessor, prepareEvent, getIsolationScope, setContext, captureException, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core';\nimport { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, browserPerformanceTimeOrigin, logger, uuid4, SENTRY_XHR_DATA_KEY, dropUndefinedKeys, stringMatchesSomePattern, addFetchInstrumentationHandler, addXhrInstrumentationHandler, addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, updateRateLimits, isRateLimited, consoleSandbox, isBrowser } from '@sentry/utils';\nimport { addPerformanceInstrumentationHandler, addLcpInstrumentationHandler } from '@sentry-internal/tracing';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and replay packages should `@sentry/browser` import\n// from `@sentry/replay` in the future\nconst WINDOW = GLOBAL_OBJ ;\n\nconst REPLAY_SESSION_KEY = 'sentryReplaySession';\nconst REPLAY_EVENT_NAME = 'replay_event';\nconst UNABLE_TO_SEND_REPLAY = 'Unable to send Replay';\n\n// The idle limit for a session after which recording is paused.\nconst SESSION_IDLE_PAUSE_DURATION = 300000; // 5 minutes in ms\n\n// The idle limit for a session after which the session expires.\nconst SESSION_IDLE_EXPIRE_DURATION = 900000; // 15 minutes in ms\n\n/** Default flush delays */\nconst DEFAULT_FLUSH_MIN_DELAY = 5000;\n// XXX: Temp fix for our debounce logic where `maxWait` would never occur if it\n// was the same as `wait`\nconst DEFAULT_FLUSH_MAX_DELAY = 5500;\n\n/* How long to wait for error checkouts */\nconst BUFFER_CHECKOUT_TIME = 60000;\n\nconst RETRY_BASE_INTERVAL = 5000;\nconst RETRY_MAX_COUNT = 3;\n\n/* The max (uncompressed) size in bytes of a network body. Any body larger than this will be truncated. */\nconst NETWORK_BODY_MAX_SIZE = 150000;\n\n/* The max size of a single console arg that is captured. Any arg larger than this will be truncated. */\nconst CONSOLE_ARG_MAX_SIZE = 5000;\n\n/* Min. time to wait before we consider something a slow click. */\nconst SLOW_CLICK_THRESHOLD = 3000;\n/* For scroll actions after a click, we only look for a very short time period to detect programmatic scrolling. */\nconst SLOW_CLICK_SCROLL_TIMEOUT = 300;\n\n/** When encountering a total segment size exceeding this size, stop the replay (as we cannot properly ingest it). */\nconst REPLAY_MAX_EVENT_BUFFER_SIZE = 20000000; // ~20MB\n\n/** Replays must be min. 5s long before we send them. */\nconst MIN_REPLAY_DURATION = 4999;\n/* The max. allowed value that the minReplayDuration can be set to. */\nconst MIN_REPLAY_DURATION_LIMIT = 15000;\n\n/** The max. length of a replay. */\nconst MAX_REPLAY_DURATION = 3600000; // 60 minutes in ms;\n\nfunction _nullishCoalesce$1(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }function _optionalChain$5(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var NodeType$1;\n(function (NodeType) {\n    NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n    NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n    NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n    NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n    NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n    NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType$1 || (NodeType$1 = {}));\n\nfunction isElement$1(n) {\n    return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n    const host = _optionalChain$5([n, 'optionalAccess', _ => _.host]);\n    return Boolean(_optionalChain$5([host, 'optionalAccess', _2 => _2.shadowRoot]) === n);\n}\nfunction isNativeShadowDom(shadowRoot) {\n    return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n    if (cssText.includes(' background-clip: text;') &&\n        !cssText.includes(' -webkit-background-clip: text;')) {\n        cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\n    }\n    return cssText;\n}\nfunction escapeImportStatement(rule) {\n    const { cssText } = rule;\n    if (cssText.split('\"').length < 3)\n        return cssText;\n    const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n    if (rule.layerName === '') {\n        statement.push(`layer`);\n    }\n    else if (rule.layerName) {\n        statement.push(`layer(${rule.layerName})`);\n    }\n    if (rule.supportsText) {\n        statement.push(`supports(${rule.supportsText})`);\n    }\n    if (rule.media.length) {\n        statement.push(rule.media.mediaText);\n    }\n    return statement.join(' ') + ';';\n}\nfunction stringifyStylesheet(s) {\n    try {\n        const rules = s.rules || s.cssRules;\n        return rules\n            ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\n            : null;\n    }\n    catch (error) {\n        return null;\n    }\n}\nfunction stringifyRule(rule) {\n    let importStringified;\n    if (isCSSImportRule(rule)) {\n        try {\n            importStringified =\n                stringifyStylesheet(rule.styleSheet) ||\n                    escapeImportStatement(rule);\n        }\n        catch (error) {\n        }\n    }\n    else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n        return fixSafariColons(rule.cssText);\n    }\n    return importStringified || rule.cssText;\n}\nfunction fixSafariColons(cssStringified) {\n    const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n    return cssStringified.replace(regex, '$1\\\\$2');\n}\nfunction isCSSImportRule(rule) {\n    return 'styleSheet' in rule;\n}\nfunction isCSSStyleRule(rule) {\n    return 'selectorText' in rule;\n}\nclass Mirror {\n    constructor() {\n        this.idNodeMap = new Map();\n        this.nodeMetaMap = new WeakMap();\n    }\n    getId(n) {\n        if (!n)\n            return -1;\n        const id = _optionalChain$5([this, 'access', _3 => _3.getMeta, 'call', _4 => _4(n), 'optionalAccess', _5 => _5.id]);\n        return _nullishCoalesce$1(id, () => ( -1));\n    }\n    getNode(id) {\n        return this.idNodeMap.get(id) || null;\n    }\n    getIds() {\n        return Array.from(this.idNodeMap.keys());\n    }\n    getMeta(n) {\n        return this.nodeMetaMap.get(n) || null;\n    }\n    removeNodeFromMap(n) {\n        const id = this.getId(n);\n        this.idNodeMap.delete(id);\n        if (n.childNodes) {\n            n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\n        }\n    }\n    has(id) {\n        return this.idNodeMap.has(id);\n    }\n    hasNode(node) {\n        return this.nodeMetaMap.has(node);\n    }\n    add(n, meta) {\n        const id = meta.id;\n        this.idNodeMap.set(id, n);\n        this.nodeMetaMap.set(n, meta);\n    }\n    replace(id, n) {\n        const oldNode = this.getNode(id);\n        if (oldNode) {\n            const meta = this.nodeMetaMap.get(oldNode);\n            if (meta)\n                this.nodeMetaMap.set(n, meta);\n        }\n        this.idNodeMap.set(id, n);\n    }\n    reset() {\n        this.idNodeMap = new Map();\n        this.nodeMetaMap = new WeakMap();\n    }\n}\nfunction createMirror() {\n    return new Mirror();\n}\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\n    if (tagName === 'OPTION') {\n        tagName = 'SELECT';\n    }\n    return Boolean(maskInputOptions[tagName.toLowerCase()] ||\n        (type && maskInputOptions[type]) ||\n        type === 'password' ||\n        (tagName === 'INPUT' && !type && maskInputOptions['text']));\n}\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\n    let text = value || '';\n    if (!isMasked) {\n        return text;\n    }\n    if (maskInputFn) {\n        text = maskInputFn(text, element);\n    }\n    return '*'.repeat(text.length);\n}\nfunction toLowerCase(str) {\n    return str.toLowerCase();\n}\nfunction toUpperCase(str) {\n    return str.toUpperCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n    const ctx = canvas.getContext('2d');\n    if (!ctx)\n        return true;\n    const chunkSize = 50;\n    for (let x = 0; x < canvas.width; x += chunkSize) {\n        for (let y = 0; y < canvas.height; y += chunkSize) {\n            const getImageData = ctx.getImageData;\n            const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n                ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n                : getImageData;\n            const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n            if (pixelBuffer.some((pixel) => pixel !== 0))\n                return false;\n        }\n    }\n    return true;\n}\nfunction getInputType(element) {\n    const type = element.type;\n    return element.hasAttribute('data-rr-is-password')\n        ? 'password'\n        : type\n            ?\n                toLowerCase(type)\n            : null;\n}\nfunction getInputValue(el, tagName, type) {\n    if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\n        return el.getAttribute('value') || '';\n    }\n    return el.value;\n}\n\nlet _id = 1;\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\nconst IGNORED_NODE = -2;\nfunction genId() {\n    return _id++;\n}\nfunction getValidTagName(element) {\n    if (element instanceof HTMLFormElement) {\n        return 'form';\n    }\n    const processedTagName = toLowerCase(element.tagName);\n    if (tagNameRegex.test(processedTagName)) {\n        return 'div';\n    }\n    return processedTagName;\n}\nfunction extractOrigin(url) {\n    let origin = '';\n    if (url.indexOf('//') > -1) {\n        origin = url.split('/').slice(0, 3).join('/');\n    }\n    else {\n        origin = url.split('/')[0];\n    }\n    origin = origin.split('?')[0];\n    return origin;\n}\nlet canvasService;\nlet canvasCtx;\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(cssText, href) {\n    return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\n        const filePath = path1 || path2 || path3;\n        const maybeQuote = quote1 || quote2 || '';\n        if (!filePath) {\n            return origin;\n        }\n        if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\n        }\n        if (DATA_URI.test(filePath)) {\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\n        }\n        if (filePath[0] === '/') {\n            return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n        }\n        const stack = href.split('/');\n        const parts = filePath.split('/');\n        stack.pop();\n        for (const part of parts) {\n            if (part === '.') {\n                continue;\n            }\n            else if (part === '..') {\n                stack.pop();\n            }\n            else {\n                stack.push(part);\n            }\n        }\n        return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n    });\n}\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n    if (attributeValue.trim() === '') {\n        return attributeValue;\n    }\n    let pos = 0;\n    function collectCharacters(regEx) {\n        let chars;\n        const match = regEx.exec(attributeValue.substring(pos));\n        if (match) {\n            chars = match[0];\n            pos += chars.length;\n            return chars;\n        }\n        return '';\n    }\n    const output = [];\n    while (true) {\n        collectCharacters(SRCSET_COMMAS_OR_SPACES);\n        if (pos >= attributeValue.length) {\n            break;\n        }\n        let url = collectCharacters(SRCSET_NOT_SPACES);\n        if (url.slice(-1) === ',') {\n            url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n            output.push(url);\n        }\n        else {\n            let descriptorsStr = '';\n            url = absoluteToDoc(doc, url);\n            let inParens = false;\n            while (true) {\n                const c = attributeValue.charAt(pos);\n                if (c === '') {\n                    output.push((url + descriptorsStr).trim());\n                    break;\n                }\n                else if (!inParens) {\n                    if (c === ',') {\n                        pos += 1;\n                        output.push((url + descriptorsStr).trim());\n                        break;\n                    }\n                    else if (c === '(') {\n                        inParens = true;\n                    }\n                }\n                else {\n                    if (c === ')') {\n                        inParens = false;\n                    }\n                }\n                descriptorsStr += c;\n                pos += 1;\n            }\n        }\n    }\n    return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n    if (!attributeValue || attributeValue.trim() === '') {\n        return attributeValue;\n    }\n    const a = doc.createElement('a');\n    a.href = attributeValue;\n    return a.href;\n}\nfunction isSVGElement(el) {\n    return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n    const a = document.createElement('a');\n    a.href = '';\n    return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\n    if (!value) {\n        return value;\n    }\n    if (name === 'src' ||\n        (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\n        return absoluteToDoc(doc, value);\n    }\n    else if (name === 'xlink:href' && value[0] !== '#') {\n        return absoluteToDoc(doc, value);\n    }\n    else if (name === 'background' &&\n        (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n        return absoluteToDoc(doc, value);\n    }\n    else if (name === 'srcset') {\n        return getAbsoluteSrcsetString(doc, value);\n    }\n    else if (name === 'style') {\n        return absoluteToStylesheet(value, getHref());\n    }\n    else if (tagName === 'object' && name === 'data') {\n        return absoluteToDoc(doc, value);\n    }\n    if (typeof maskAttributeFn === 'function') {\n        return maskAttributeFn(name, value, element);\n    }\n    return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n    return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\n}\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\n    try {\n        if (unblockSelector && element.matches(unblockSelector)) {\n            return false;\n        }\n        if (typeof blockClass === 'string') {\n            if (element.classList.contains(blockClass)) {\n                return true;\n            }\n        }\n        else {\n            for (let eIndex = element.classList.length; eIndex--;) {\n                const className = element.classList[eIndex];\n                if (blockClass.test(className)) {\n                    return true;\n                }\n            }\n        }\n        if (blockSelector) {\n            return element.matches(blockSelector);\n        }\n    }\n    catch (e) {\n    }\n    return false;\n}\nfunction elementClassMatchesRegex(el, regex) {\n    for (let eIndex = el.classList.length; eIndex--;) {\n        const className = el.classList[eIndex];\n        if (regex.test(className)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\n    if (!node)\n        return -1;\n    if (node.nodeType !== node.ELEMENT_NODE)\n        return -1;\n    if (distance > limit)\n        return -1;\n    if (matchPredicate(node))\n        return distance;\n    return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\n}\nfunction createMatchPredicate(className, selector) {\n    return (node) => {\n        const el = node;\n        if (el === null)\n            return false;\n        try {\n            if (className) {\n                if (typeof className === 'string') {\n                    if (el.matches(`.${className}`))\n                        return true;\n                }\n                else if (elementClassMatchesRegex(el, className)) {\n                    return true;\n                }\n            }\n            if (selector && el.matches(selector))\n                return true;\n            return false;\n        }\n        catch (e2) {\n            return false;\n        }\n    };\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\n    try {\n        const el = node.nodeType === node.ELEMENT_NODE\n            ? node\n            : node.parentElement;\n        if (el === null)\n            return false;\n        if (el.tagName === 'INPUT') {\n            const autocomplete = el.getAttribute('autocomplete');\n            const disallowedAutocompleteValues = [\n                'current-password',\n                'new-password',\n                'cc-number',\n                'cc-exp',\n                'cc-exp-month',\n                'cc-exp-year',\n                'cc-csc',\n            ];\n            if (disallowedAutocompleteValues.includes(autocomplete)) {\n                return true;\n            }\n        }\n        let maskDistance = -1;\n        let unmaskDistance = -1;\n        if (maskAllText) {\n            unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\n            if (unmaskDistance < 0) {\n                return true;\n            }\n            maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\n        }\n        else {\n            maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\n            if (maskDistance < 0) {\n                return false;\n            }\n            unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\n        }\n        return maskDistance >= 0\n            ? unmaskDistance >= 0\n                ? maskDistance <= unmaskDistance\n                : true\n            : unmaskDistance >= 0\n                ? false\n                : !!maskAllText;\n    }\n    catch (e) {\n    }\n    return !!maskAllText;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n    const win = iframeEl.contentWindow;\n    if (!win) {\n        return;\n    }\n    let fired = false;\n    let readyState;\n    try {\n        readyState = win.document.readyState;\n    }\n    catch (error) {\n        return;\n    }\n    if (readyState !== 'complete') {\n        const timer = setTimeout(() => {\n            if (!fired) {\n                listener();\n                fired = true;\n            }\n        }, iframeLoadTimeout);\n        iframeEl.addEventListener('load', () => {\n            clearTimeout(timer);\n            fired = true;\n            listener();\n        });\n        return;\n    }\n    const blankUrl = 'about:blank';\n    if (win.location.href !== blankUrl ||\n        iframeEl.src === blankUrl ||\n        iframeEl.src === '') {\n        setTimeout(listener, 0);\n        return iframeEl.addEventListener('load', listener);\n    }\n    iframeEl.addEventListener('load', listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n    let fired = false;\n    let styleSheetLoaded;\n    try {\n        styleSheetLoaded = link.sheet;\n    }\n    catch (error) {\n        return;\n    }\n    if (styleSheetLoaded)\n        return;\n    const timer = setTimeout(() => {\n        if (!fired) {\n            listener();\n            fired = true;\n        }\n    }, styleSheetLoadTimeout);\n    link.addEventListener('load', () => {\n        clearTimeout(timer);\n        fired = true;\n        listener();\n    });\n}\nfunction serializeNode(n, options) {\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\n    const rootId = getRootId(doc, mirror);\n    switch (n.nodeType) {\n        case n.DOCUMENT_NODE:\n            if (n.compatMode !== 'CSS1Compat') {\n                return {\n                    type: NodeType$1.Document,\n                    childNodes: [],\n                    compatMode: n.compatMode,\n                };\n            }\n            else {\n                return {\n                    type: NodeType$1.Document,\n                    childNodes: [],\n                };\n            }\n        case n.DOCUMENT_TYPE_NODE:\n            return {\n                type: NodeType$1.DocumentType,\n                name: n.name,\n                publicId: n.publicId,\n                systemId: n.systemId,\n                rootId,\n            };\n        case n.ELEMENT_NODE:\n            return serializeElementNode(n, {\n                doc,\n                blockClass,\n                blockSelector,\n                unblockSelector,\n                inlineStylesheet,\n                maskAttributeFn,\n                maskInputOptions,\n                maskInputFn,\n                dataURLOptions,\n                inlineImages,\n                recordCanvas,\n                keepIframeSrcFn,\n                newlyAddedElement,\n                rootId,\n                maskAllText,\n                maskTextClass,\n                unmaskTextClass,\n                maskTextSelector,\n                unmaskTextSelector,\n            });\n        case n.TEXT_NODE:\n            return serializeTextNode(n, {\n                maskAllText,\n                maskTextClass,\n                unmaskTextClass,\n                maskTextSelector,\n                unmaskTextSelector,\n                maskTextFn,\n                maskInputOptions,\n                maskInputFn,\n                rootId,\n            });\n        case n.CDATA_SECTION_NODE:\n            return {\n                type: NodeType$1.CDATA,\n                textContent: '',\n                rootId,\n            };\n        case n.COMMENT_NODE:\n            return {\n                type: NodeType$1.Comment,\n                textContent: n.textContent || '',\n                rootId,\n            };\n        default:\n            return false;\n    }\n}\nfunction getRootId(doc, mirror) {\n    if (!mirror.hasNode(doc))\n        return undefined;\n    const docId = mirror.getId(doc);\n    return docId === 1 ? undefined : docId;\n}\nfunction serializeTextNode(n, options) {\n    const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\n    const parentTagName = n.parentNode && n.parentNode.tagName;\n    let textContent = n.textContent;\n    const isStyle = parentTagName === 'STYLE' ? true : undefined;\n    const isScript = parentTagName === 'SCRIPT' ? true : undefined;\n    const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\n    if (isStyle && textContent) {\n        try {\n            if (n.nextSibling || n.previousSibling) {\n            }\n            else if (_optionalChain$5([n, 'access', _6 => _6.parentNode, 'access', _7 => _7.sheet, 'optionalAccess', _8 => _8.cssRules])) {\n                textContent = stringifyStylesheet(n.parentNode.sheet);\n            }\n        }\n        catch (err) {\n            console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\n        }\n        textContent = absoluteToStylesheet(textContent, getHref());\n    }\n    if (isScript) {\n        textContent = 'SCRIPT_PLACEHOLDER';\n    }\n    const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\n    if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\n        textContent = maskTextFn\n            ? maskTextFn(textContent, n.parentElement)\n            : textContent.replace(/[\\S]/g, '*');\n    }\n    if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\n        textContent = maskInputFn\n            ? maskInputFn(textContent, n.parentNode)\n            : textContent.replace(/[\\S]/g, '*');\n    }\n    if (parentTagName === 'OPTION' && textContent) {\n        const isInputMasked = shouldMaskInput({\n            type: null,\n            tagName: parentTagName,\n            maskInputOptions,\n        });\n        textContent = maskInputValue({\n            isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\n            element: n,\n            value: textContent,\n            maskInputFn,\n        });\n    }\n    return {\n        type: NodeType$1.Text,\n        textContent: textContent || '',\n        isStyle,\n        rootId,\n    };\n}\nfunction serializeElementNode(n, options) {\n    const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\n    const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\n    const tagName = getValidTagName(n);\n    let attributes = {};\n    const len = n.attributes.length;\n    for (let i = 0; i < len; i++) {\n        const attr = n.attributes[i];\n        if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\n            attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\n        }\n    }\n    if (tagName === 'link' && inlineStylesheet) {\n        const stylesheet = Array.from(doc.styleSheets).find((s) => {\n            return s.href === n.href;\n        });\n        let cssText = null;\n        if (stylesheet) {\n            cssText = stringifyStylesheet(stylesheet);\n        }\n        if (cssText) {\n            delete attributes.rel;\n            delete attributes.href;\n            attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n        }\n    }\n    if (tagName === 'style' &&\n        n.sheet &&\n        !(n.innerText || n.textContent || '').trim().length) {\n        const cssText = stringifyStylesheet(n.sheet);\n        if (cssText) {\n            attributes._cssText = absoluteToStylesheet(cssText, getHref());\n        }\n    }\n    if (tagName === 'input' ||\n        tagName === 'textarea' ||\n        tagName === 'select' ||\n        tagName === 'option') {\n        const el = n;\n        const type = getInputType(el);\n        const value = getInputValue(el, toUpperCase(tagName), type);\n        const checked = el.checked;\n        if (type !== 'submit' && type !== 'button' && value) {\n            const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\n                type,\n                tagName: toUpperCase(tagName),\n                maskInputOptions,\n            }));\n            attributes.value = maskInputValue({\n                isMasked: forceMask,\n                element: el,\n                value,\n                maskInputFn,\n            });\n        }\n        if (checked) {\n            attributes.checked = checked;\n        }\n    }\n    if (tagName === 'option') {\n        if (n.selected && !maskInputOptions['select']) {\n            attributes.selected = true;\n        }\n        else {\n            delete attributes.selected;\n        }\n    }\n    if (tagName === 'canvas' && recordCanvas) {\n        if (n.__context === '2d') {\n            if (!is2DCanvasBlank(n)) {\n                attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            }\n        }\n        else if (!('__context' in n)) {\n            const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            const blankCanvas = document.createElement('canvas');\n            blankCanvas.width = n.width;\n            blankCanvas.height = n.height;\n            const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            if (canvasDataURL !== blankCanvasDataURL) {\n                attributes.rr_dataURL = canvasDataURL;\n            }\n        }\n    }\n    if (tagName === 'img' && inlineImages) {\n        if (!canvasService) {\n            canvasService = doc.createElement('canvas');\n            canvasCtx = canvasService.getContext('2d');\n        }\n        const image = n;\n        const oldValue = image.crossOrigin;\n        image.crossOrigin = 'anonymous';\n        const recordInlineImage = () => {\n            image.removeEventListener('load', recordInlineImage);\n            try {\n                canvasService.width = image.naturalWidth;\n                canvasService.height = image.naturalHeight;\n                canvasCtx.drawImage(image, 0, 0);\n                attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            }\n            catch (err) {\n                console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\n            }\n            oldValue\n                ? (attributes.crossOrigin = oldValue)\n                : image.removeAttribute('crossorigin');\n        };\n        if (image.complete && image.naturalWidth !== 0)\n            recordInlineImage();\n        else\n            image.addEventListener('load', recordInlineImage);\n    }\n    if (tagName === 'audio' || tagName === 'video') {\n        attributes.rr_mediaState = n.paused\n            ? 'paused'\n            : 'played';\n        attributes.rr_mediaCurrentTime = n.currentTime;\n    }\n    if (!newlyAddedElement) {\n        if (n.scrollLeft) {\n            attributes.rr_scrollLeft = n.scrollLeft;\n        }\n        if (n.scrollTop) {\n            attributes.rr_scrollTop = n.scrollTop;\n        }\n    }\n    if (needBlock) {\n        const { width, height } = n.getBoundingClientRect();\n        attributes = {\n            class: attributes.class,\n            rr_width: `${width}px`,\n            rr_height: `${height}px`,\n        };\n    }\n    if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\n        if (!n.contentDocument) {\n            attributes.rr_src = attributes.src;\n        }\n        delete attributes.src;\n    }\n    let isCustomElement;\n    try {\n        if (customElements.get(tagName))\n            isCustomElement = true;\n    }\n    catch (e) {\n    }\n    return {\n        type: NodeType$1.Element,\n        tagName,\n        attributes,\n        childNodes: [],\n        isSVG: isSVGElement(n) || undefined,\n        needBlock,\n        rootId,\n        isCustom: isCustomElement,\n    };\n}\nfunction lowerIfExists(maybeAttr) {\n    if (maybeAttr === undefined || maybeAttr === null) {\n        return '';\n    }\n    else {\n        return maybeAttr.toLowerCase();\n    }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n    if (slimDOMOptions.comment && sn.type === NodeType$1.Comment) {\n        return true;\n    }\n    else if (sn.type === NodeType$1.Element) {\n        if (slimDOMOptions.script &&\n            (sn.tagName === 'script' ||\n                (sn.tagName === 'link' &&\n                    (sn.attributes.rel === 'preload' ||\n                        sn.attributes.rel === 'modulepreload') &&\n                    sn.attributes.as === 'script') ||\n                (sn.tagName === 'link' &&\n                    sn.attributes.rel === 'prefetch' &&\n                    typeof sn.attributes.href === 'string' &&\n                    sn.attributes.href.endsWith('.js')))) {\n            return true;\n        }\n        else if (slimDOMOptions.headFavicon &&\n            ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n                (sn.tagName === 'meta' &&\n                    (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n                        lowerIfExists(sn.attributes.name) === 'application-name' ||\n                        lowerIfExists(sn.attributes.rel) === 'icon' ||\n                        lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n                        lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n            return true;\n        }\n        else if (sn.tagName === 'meta') {\n            if (slimDOMOptions.headMetaDescKeywords &&\n                lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaSocial &&\n                (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n                    lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n                    lowerIfExists(sn.attributes.name) === 'pinterest')) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaRobots &&\n                (lowerIfExists(sn.attributes.name) === 'robots' ||\n                    lowerIfExists(sn.attributes.name) === 'googlebot' ||\n                    lowerIfExists(sn.attributes.name) === 'bingbot')) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaHttpEquiv &&\n                sn.attributes['http-equiv'] !== undefined) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaAuthorship &&\n                (lowerIfExists(sn.attributes.name) === 'author' ||\n                    lowerIfExists(sn.attributes.name) === 'generator' ||\n                    lowerIfExists(sn.attributes.name) === 'framework' ||\n                    lowerIfExists(sn.attributes.name) === 'publisher' ||\n                    lowerIfExists(sn.attributes.name) === 'progid' ||\n                    lowerIfExists(sn.attributes.property).match(/^article:/) ||\n                    lowerIfExists(sn.attributes.property).match(/^product:/))) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaVerification &&\n                (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n                    lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n                    lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n                    lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n                    lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n                    lowerIfExists(sn.attributes.name) === 'verification' ||\n                    lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction serializeNodeWithId(n, options) {\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\n    let { preserveWhiteSpace = true } = options;\n    const _serializedNode = serializeNode(n, {\n        doc,\n        mirror,\n        blockClass,\n        blockSelector,\n        maskAllText,\n        unblockSelector,\n        maskTextClass,\n        unmaskTextClass,\n        maskTextSelector,\n        unmaskTextSelector,\n        inlineStylesheet,\n        maskInputOptions,\n        maskAttributeFn,\n        maskTextFn,\n        maskInputFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n        newlyAddedElement,\n    });\n    if (!_serializedNode) {\n        console.warn(n, 'not serialized');\n        return null;\n    }\n    let id;\n    if (mirror.hasNode(n)) {\n        id = mirror.getId(n);\n    }\n    else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n        (!preserveWhiteSpace &&\n            _serializedNode.type === NodeType$1.Text &&\n            !_serializedNode.isStyle &&\n            !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n        id = IGNORED_NODE;\n    }\n    else {\n        id = genId();\n    }\n    const serializedNode = Object.assign(_serializedNode, { id });\n    mirror.add(n, serializedNode);\n    if (id === IGNORED_NODE) {\n        return null;\n    }\n    if (onSerialize) {\n        onSerialize(n);\n    }\n    let recordChild = !skipChild;\n    if (serializedNode.type === NodeType$1.Element) {\n        recordChild = recordChild && !serializedNode.needBlock;\n        delete serializedNode.needBlock;\n        const shadowRoot = n.shadowRoot;\n        if (shadowRoot && isNativeShadowDom(shadowRoot))\n            serializedNode.isShadowHost = true;\n    }\n    if ((serializedNode.type === NodeType$1.Document ||\n        serializedNode.type === NodeType$1.Element) &&\n        recordChild) {\n        if (slimDOMOptions.headWhitespace &&\n            serializedNode.type === NodeType$1.Element &&\n            serializedNode.tagName === 'head') {\n            preserveWhiteSpace = false;\n        }\n        const bypassOptions = {\n            doc,\n            mirror,\n            blockClass,\n            blockSelector,\n            maskAllText,\n            unblockSelector,\n            maskTextClass,\n            unmaskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            skipChild,\n            inlineStylesheet,\n            maskInputOptions,\n            maskAttributeFn,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn,\n        };\n        for (const childN of Array.from(n.childNodes)) {\n            const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n            if (serializedChildNode) {\n                serializedNode.childNodes.push(serializedChildNode);\n            }\n        }\n        if (isElement$1(n) && n.shadowRoot) {\n            for (const childN of Array.from(n.shadowRoot.childNodes)) {\n                const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n                if (serializedChildNode) {\n                    isNativeShadowDom(n.shadowRoot) &&\n                        (serializedChildNode.isShadow = true);\n                    serializedNode.childNodes.push(serializedChildNode);\n                }\n            }\n        }\n    }\n    if (n.parentNode &&\n        isShadowRoot(n.parentNode) &&\n        isNativeShadowDom(n.parentNode)) {\n        serializedNode.isShadow = true;\n    }\n    if (serializedNode.type === NodeType$1.Element &&\n        serializedNode.tagName === 'iframe') {\n        onceIframeLoaded(n, () => {\n            const iframeDoc = n.contentDocument;\n            if (iframeDoc && onIframeLoad) {\n                const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n                    doc: iframeDoc,\n                    mirror,\n                    blockClass,\n                    blockSelector,\n                    unblockSelector,\n                    maskAllText,\n                    maskTextClass,\n                    unmaskTextClass,\n                    maskTextSelector,\n                    unmaskTextSelector,\n                    skipChild: false,\n                    inlineStylesheet,\n                    maskInputOptions,\n                    maskAttributeFn,\n                    maskTextFn,\n                    maskInputFn,\n                    slimDOMOptions,\n                    dataURLOptions,\n                    inlineImages,\n                    recordCanvas,\n                    preserveWhiteSpace,\n                    onSerialize,\n                    onIframeLoad,\n                    iframeLoadTimeout,\n                    onStylesheetLoad,\n                    stylesheetLoadTimeout,\n                    keepIframeSrcFn,\n                });\n                if (serializedIframeNode) {\n                    onIframeLoad(n, serializedIframeNode);\n                }\n            }\n        }, iframeLoadTimeout);\n    }\n    if (serializedNode.type === NodeType$1.Element &&\n        serializedNode.tagName === 'link' &&\n        serializedNode.attributes.rel === 'stylesheet') {\n        onceStylesheetLoaded(n, () => {\n            if (onStylesheetLoad) {\n                const serializedLinkNode = serializeNodeWithId(n, {\n                    doc,\n                    mirror,\n                    blockClass,\n                    blockSelector,\n                    unblockSelector,\n                    maskAllText,\n                    maskTextClass,\n                    unmaskTextClass,\n                    maskTextSelector,\n                    unmaskTextSelector,\n                    skipChild: false,\n                    inlineStylesheet,\n                    maskInputOptions,\n                    maskAttributeFn,\n                    maskTextFn,\n                    maskInputFn,\n                    slimDOMOptions,\n                    dataURLOptions,\n                    inlineImages,\n                    recordCanvas,\n                    preserveWhiteSpace,\n                    onSerialize,\n                    onIframeLoad,\n                    iframeLoadTimeout,\n                    onStylesheetLoad,\n                    stylesheetLoadTimeout,\n                    keepIframeSrcFn,\n                });\n                if (serializedLinkNode) {\n                    onStylesheetLoad(n, serializedLinkNode);\n                }\n            }\n        }, stylesheetLoadTimeout);\n    }\n    return serializedNode;\n}\nfunction snapshot(n, options) {\n    const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\n    const maskInputOptions = maskAllInputs === true\n        ? {\n            color: true,\n            date: true,\n            'datetime-local': true,\n            email: true,\n            month: true,\n            number: true,\n            range: true,\n            search: true,\n            tel: true,\n            text: true,\n            time: true,\n            url: true,\n            week: true,\n            textarea: true,\n            select: true,\n        }\n        : maskAllInputs === false\n            ? {}\n            : maskAllInputs;\n    const slimDOMOptions = slimDOM === true || slimDOM === 'all'\n        ?\n            {\n                script: true,\n                comment: true,\n                headFavicon: true,\n                headWhitespace: true,\n                headMetaDescKeywords: slimDOM === 'all',\n                headMetaSocial: true,\n                headMetaRobots: true,\n                headMetaHttpEquiv: true,\n                headMetaAuthorship: true,\n                headMetaVerification: true,\n            }\n        : slimDOM === false\n            ? {}\n            : slimDOM;\n    return serializeNodeWithId(n, {\n        doc: n,\n        mirror,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        maskAllText,\n        maskTextClass,\n        unmaskTextClass,\n        maskTextSelector,\n        unmaskTextSelector,\n        skipChild: false,\n        inlineStylesheet,\n        maskInputOptions,\n        maskAttributeFn,\n        maskTextFn,\n        maskInputFn,\n        slimDOMOptions,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        preserveWhiteSpace,\n        onSerialize,\n        onIframeLoad,\n        iframeLoadTimeout,\n        onStylesheetLoad,\n        stylesheetLoadTimeout,\n        keepIframeSrcFn,\n        newlyAddedElement: false,\n    });\n}\n\nfunction _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nfunction on(type, fn, target = document) {\n    const options = { capture: true, passive: true };\n    target.addEventListener(type, fn, options);\n    return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n    '\\r\\n' +\n    'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n    '\\r\\n' +\n    'or you can use record.mirror to access the mirror instance during recording.';\nlet _mirror = {\n    map: {},\n    getId() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return -1;\n    },\n    getNode() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return null;\n    },\n    removeNodeFromMap() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    },\n    has() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return false;\n    },\n    reset() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n    _mirror = new Proxy(_mirror, {\n        get(target, prop, receiver) {\n            if (prop === 'map') {\n                console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n            }\n            return Reflect.get(target, prop, receiver);\n        },\n    });\n}\nfunction throttle$1(func, wait, options = {}) {\n    let timeout = null;\n    let previous = 0;\n    return function (...args) {\n        const now = Date.now();\n        if (!previous && options.leading === false) {\n            previous = now;\n        }\n        const remaining = wait - (now - previous);\n        const context = this;\n        if (remaining <= 0 || remaining > wait) {\n            if (timeout) {\n                clearTimeout$1(timeout);\n                timeout = null;\n            }\n            previous = now;\n            func.apply(context, args);\n        }\n        else if (!timeout && options.trailing !== false) {\n            timeout = setTimeout$1(() => {\n                previous = options.leading === false ? 0 : Date.now();\n                timeout = null;\n                func.apply(context, args);\n            }, remaining);\n        }\n    };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n    const original = win.Object.getOwnPropertyDescriptor(target, key);\n    win.Object.defineProperty(target, key, isRevoked\n        ? d\n        : {\n            set(value) {\n                setTimeout$1(() => {\n                    d.set.call(this, value);\n                }, 0);\n                if (original && original.set) {\n                    original.set.call(this, value);\n                }\n            },\n        });\n    return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n    try {\n        if (!(name in source)) {\n            return () => {\n            };\n        }\n        const original = source[name];\n        const wrapped = replacement(original);\n        if (typeof wrapped === 'function') {\n            wrapped.prototype = wrapped.prototype || {};\n            Object.defineProperties(wrapped, {\n                __rrweb_original__: {\n                    enumerable: false,\n                    value: original,\n                },\n            });\n        }\n        source[name] = wrapped;\n        return () => {\n            source[name] = original;\n        };\n    }\n    catch (e2) {\n        return () => {\n        };\n    }\n}\nlet nowTimestamp = Date.now;\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\n    nowTimestamp = () => new Date().getTime();\n}\nfunction getWindowScroll(win) {\n    const doc = win.document;\n    return {\n        left: doc.scrollingElement\n            ? doc.scrollingElement.scrollLeft\n            : win.pageXOffset !== undefined\n                ? win.pageXOffset\n                : _optionalChain$4([doc, 'optionalAccess', _ => _.documentElement, 'access', _2 => _2.scrollLeft]) ||\n                    _optionalChain$4([doc, 'optionalAccess', _3 => _3.body, 'optionalAccess', _4 => _4.parentElement, 'optionalAccess', _5 => _5.scrollLeft]) ||\n                    _optionalChain$4([doc, 'optionalAccess', _6 => _6.body, 'optionalAccess', _7 => _7.scrollLeft]) ||\n                    0,\n        top: doc.scrollingElement\n            ? doc.scrollingElement.scrollTop\n            : win.pageYOffset !== undefined\n                ? win.pageYOffset\n                : _optionalChain$4([doc, 'optionalAccess', _8 => _8.documentElement, 'access', _9 => _9.scrollTop]) ||\n                    _optionalChain$4([doc, 'optionalAccess', _10 => _10.body, 'optionalAccess', _11 => _11.parentElement, 'optionalAccess', _12 => _12.scrollTop]) ||\n                    _optionalChain$4([doc, 'optionalAccess', _13 => _13.body, 'optionalAccess', _14 => _14.scrollTop]) ||\n                    0,\n    };\n}\nfunction getWindowHeight() {\n    return (window.innerHeight ||\n        (document.documentElement && document.documentElement.clientHeight) ||\n        (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n    return (window.innerWidth ||\n        (document.documentElement && document.documentElement.clientWidth) ||\n        (document.body && document.body.clientWidth));\n}\nfunction closestElementOfNode(node) {\n    if (!node) {\n        return null;\n    }\n    const el = node.nodeType === node.ELEMENT_NODE\n        ? node\n        : node.parentElement;\n    return el;\n}\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\n    if (!node) {\n        return false;\n    }\n    const el = closestElementOfNode(node);\n    if (!el) {\n        return false;\n    }\n    const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\n    if (!checkAncestors) {\n        const isUnblocked = unblockSelector && el.matches(unblockSelector);\n        return blockedPredicate(el) && !isUnblocked;\n    }\n    const blockDistance = distanceToMatch(el, blockedPredicate);\n    let unblockDistance = -1;\n    if (blockDistance < 0) {\n        return false;\n    }\n    if (unblockSelector) {\n        unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\n    }\n    if (blockDistance > -1 && unblockDistance < 0) {\n        return true;\n    }\n    return blockDistance < unblockDistance;\n}\nfunction isSerialized(n, mirror) {\n    return mirror.getId(n) !== -1;\n}\nfunction isIgnored(n, mirror) {\n    return mirror.getId(n) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror) {\n    if (isShadowRoot(target)) {\n        return false;\n    }\n    const id = mirror.getId(target);\n    if (!mirror.has(id)) {\n        return true;\n    }\n    if (target.parentNode &&\n        target.parentNode.nodeType === target.DOCUMENT_NODE) {\n        return false;\n    }\n    if (!target.parentNode) {\n        return true;\n    }\n    return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction legacy_isTouchEvent(event) {\n    return Boolean(event.changedTouches);\n}\nfunction polyfill(win = window) {\n    if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n        win.NodeList.prototype.forEach = Array.prototype\n            .forEach;\n    }\n    if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n        win.DOMTokenList.prototype.forEach = Array.prototype\n            .forEach;\n    }\n    if (!Node.prototype.contains) {\n        Node.prototype.contains = (...args) => {\n            let node = args[0];\n            if (!(0 in args)) {\n                throw new TypeError('1 argument is required');\n            }\n            do {\n                if (this === node) {\n                    return true;\n                }\n            } while ((node = node && node.parentNode));\n            return false;\n        };\n    }\n}\nfunction isSerializedIframe(n, mirror) {\n    return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\n}\nfunction isSerializedStylesheet(n, mirror) {\n    return Boolean(n.nodeName === 'LINK' &&\n        n.nodeType === n.ELEMENT_NODE &&\n        n.getAttribute &&\n        n.getAttribute('rel') === 'stylesheet' &&\n        mirror.getMeta(n));\n}\nfunction hasShadowRoot(n) {\n    return Boolean(_optionalChain$4([n, 'optionalAccess', _18 => _18.shadowRoot]));\n}\nclass StyleSheetMirror {\n    constructor() {\n        this.id = 1;\n        this.styleIDMap = new WeakMap();\n        this.idStyleMap = new Map();\n    }\n    getId(stylesheet) {\n        return _nullishCoalesce(this.styleIDMap.get(stylesheet), () => ( -1));\n    }\n    has(stylesheet) {\n        return this.styleIDMap.has(stylesheet);\n    }\n    add(stylesheet, id) {\n        if (this.has(stylesheet))\n            return this.getId(stylesheet);\n        let newId;\n        if (id === undefined) {\n            newId = this.id++;\n        }\n        else\n            newId = id;\n        this.styleIDMap.set(stylesheet, newId);\n        this.idStyleMap.set(newId, stylesheet);\n        return newId;\n    }\n    getStyle(id) {\n        return this.idStyleMap.get(id) || null;\n    }\n    reset() {\n        this.styleIDMap = new WeakMap();\n        this.idStyleMap = new Map();\n        this.id = 1;\n    }\n    generateId() {\n        return this.id++;\n    }\n}\nfunction getShadowHost(n) {\n    let shadowHost = null;\n    if (_optionalChain$4([n, 'access', _19 => _19.getRootNode, 'optionalCall', _20 => _20(), 'optionalAccess', _21 => _21.nodeType]) === Node.DOCUMENT_FRAGMENT_NODE &&\n        n.getRootNode().host)\n        shadowHost = n.getRootNode().host;\n    return shadowHost;\n}\nfunction getRootShadowHost(n) {\n    let rootShadowHost = n;\n    let shadowHost;\n    while ((shadowHost = getShadowHost(rootShadowHost)))\n        rootShadowHost = shadowHost;\n    return rootShadowHost;\n}\nfunction shadowHostInDom(n) {\n    const doc = n.ownerDocument;\n    if (!doc)\n        return false;\n    const shadowHost = getRootShadowHost(n);\n    return doc.contains(shadowHost);\n}\nfunction inDom(n) {\n    const doc = n.ownerDocument;\n    if (!doc)\n        return false;\n    return doc.contains(n) || shadowHostInDom(n);\n}\nconst cachedImplementations = {};\nfunction getImplementation(name) {\n    const cached = cachedImplementations[name];\n    if (cached) {\n        return cached;\n    }\n    const document = window.document;\n    let impl = window[name];\n    if (document && typeof document.createElement === 'function') {\n        try {\n            const sandbox = document.createElement('iframe');\n            sandbox.hidden = true;\n            document.head.appendChild(sandbox);\n            const contentWindow = sandbox.contentWindow;\n            if (contentWindow && contentWindow[name]) {\n                impl =\n                    contentWindow[name];\n            }\n            document.head.removeChild(sandbox);\n        }\n        catch (e) {\n        }\n    }\n    return (cachedImplementations[name] = impl.bind(window));\n}\nfunction onRequestAnimationFrame(...rest) {\n    return getImplementation('requestAnimationFrame')(...rest);\n}\nfunction setTimeout$1(...rest) {\n    return getImplementation('setTimeout')(...rest);\n}\nfunction clearTimeout$1(...rest) {\n    return getImplementation('clearTimeout')(...rest);\n}\n\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n  EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n  EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n  EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n  EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n  EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n  EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n  EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n  return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n  IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n  IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n  IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n  IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n  IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n  IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n  IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n  IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n  IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n  IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n  IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n  IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n  IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n  IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n  IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n  IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n  return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n  MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n  MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n  MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n  MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n  MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n  MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n  MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n  MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n  MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n  MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n  MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n  return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\n\nfunction _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nfunction isNodeInLinkedList(n) {\n    return '__ln' in n;\n}\nclass DoubleLinkedList {\n    constructor() {\n        this.length = 0;\n        this.head = null;\n        this.tail = null;\n    }\n    get(position) {\n        if (position >= this.length) {\n            throw new Error('Position outside of list range');\n        }\n        let current = this.head;\n        for (let index = 0; index < position; index++) {\n            current = _optionalChain$3([current, 'optionalAccess', _ => _.next]) || null;\n        }\n        return current;\n    }\n    addNode(n) {\n        const node = {\n            value: n,\n            previous: null,\n            next: null,\n        };\n        n.__ln = node;\n        if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n            const current = n.previousSibling.__ln.next;\n            node.next = current;\n            node.previous = n.previousSibling.__ln;\n            n.previousSibling.__ln.next = node;\n            if (current) {\n                current.previous = node;\n            }\n        }\n        else if (n.nextSibling &&\n            isNodeInLinkedList(n.nextSibling) &&\n            n.nextSibling.__ln.previous) {\n            const current = n.nextSibling.__ln.previous;\n            node.previous = current;\n            node.next = n.nextSibling.__ln;\n            n.nextSibling.__ln.previous = node;\n            if (current) {\n                current.next = node;\n            }\n        }\n        else {\n            if (this.head) {\n                this.head.previous = node;\n            }\n            node.next = this.head;\n            this.head = node;\n        }\n        if (node.next === null) {\n            this.tail = node;\n        }\n        this.length++;\n    }\n    removeNode(n) {\n        const current = n.__ln;\n        if (!this.head) {\n            return;\n        }\n        if (!current.previous) {\n            this.head = current.next;\n            if (this.head) {\n                this.head.previous = null;\n            }\n            else {\n                this.tail = null;\n            }\n        }\n        else {\n            current.previous.next = current.next;\n            if (current.next) {\n                current.next.previous = current.previous;\n            }\n            else {\n                this.tail = current.previous;\n            }\n        }\n        if (n.__ln) {\n            delete n.__ln;\n        }\n        this.length--;\n    }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n    constructor() {\n        this.frozen = false;\n        this.locked = false;\n        this.texts = [];\n        this.attributes = [];\n        this.attributeMap = new WeakMap();\n        this.removes = [];\n        this.mapRemoves = [];\n        this.movedMap = {};\n        this.addedSet = new Set();\n        this.movedSet = new Set();\n        this.droppedSet = new Set();\n        this.processMutations = (mutations) => {\n            mutations.forEach(this.processMutation);\n            this.emit();\n        };\n        this.emit = () => {\n            if (this.frozen || this.locked) {\n                return;\n            }\n            const adds = [];\n            const addedIds = new Set();\n            const addList = new DoubleLinkedList();\n            const getNextId = (n) => {\n                let ns = n;\n                let nextId = IGNORED_NODE;\n                while (nextId === IGNORED_NODE) {\n                    ns = ns && ns.nextSibling;\n                    nextId = ns && this.mirror.getId(ns);\n                }\n                return nextId;\n            };\n            const pushAdd = (n) => {\n                if (!n.parentNode || !inDom(n)) {\n                    return;\n                }\n                const parentId = isShadowRoot(n.parentNode)\n                    ? this.mirror.getId(getShadowHost(n))\n                    : this.mirror.getId(n.parentNode);\n                const nextId = getNextId(n);\n                if (parentId === -1 || nextId === -1) {\n                    return addList.addNode(n);\n                }\n                const sn = serializeNodeWithId(n, {\n                    doc: this.doc,\n                    mirror: this.mirror,\n                    blockClass: this.blockClass,\n                    blockSelector: this.blockSelector,\n                    maskAllText: this.maskAllText,\n                    unblockSelector: this.unblockSelector,\n                    maskTextClass: this.maskTextClass,\n                    unmaskTextClass: this.unmaskTextClass,\n                    maskTextSelector: this.maskTextSelector,\n                    unmaskTextSelector: this.unmaskTextSelector,\n                    skipChild: true,\n                    newlyAddedElement: true,\n                    inlineStylesheet: this.inlineStylesheet,\n                    maskInputOptions: this.maskInputOptions,\n                    maskAttributeFn: this.maskAttributeFn,\n                    maskTextFn: this.maskTextFn,\n                    maskInputFn: this.maskInputFn,\n                    slimDOMOptions: this.slimDOMOptions,\n                    dataURLOptions: this.dataURLOptions,\n                    recordCanvas: this.recordCanvas,\n                    inlineImages: this.inlineImages,\n                    onSerialize: (currentN) => {\n                        if (isSerializedIframe(currentN, this.mirror)) {\n                            this.iframeManager.addIframe(currentN);\n                        }\n                        if (isSerializedStylesheet(currentN, this.mirror)) {\n                            this.stylesheetManager.trackLinkElement(currentN);\n                        }\n                        if (hasShadowRoot(n)) {\n                            this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\n                        }\n                    },\n                    onIframeLoad: (iframe, childSn) => {\n                        this.iframeManager.attachIframe(iframe, childSn);\n                        this.shadowDomManager.observeAttachShadow(iframe);\n                    },\n                    onStylesheetLoad: (link, childSn) => {\n                        this.stylesheetManager.attachLinkElement(link, childSn);\n                    },\n                });\n                if (sn) {\n                    adds.push({\n                        parentId,\n                        nextId,\n                        node: sn,\n                    });\n                    addedIds.add(sn.id);\n                }\n            };\n            while (this.mapRemoves.length) {\n                this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n            }\n            for (const n of this.movedSet) {\n                if (isParentRemoved(this.removes, n, this.mirror) &&\n                    !this.movedSet.has(n.parentNode)) {\n                    continue;\n                }\n                pushAdd(n);\n            }\n            for (const n of this.addedSet) {\n                if (!isAncestorInSet(this.droppedSet, n) &&\n                    !isParentRemoved(this.removes, n, this.mirror)) {\n                    pushAdd(n);\n                }\n                else if (isAncestorInSet(this.movedSet, n)) {\n                    pushAdd(n);\n                }\n                else {\n                    this.droppedSet.add(n);\n                }\n            }\n            let candidate = null;\n            while (addList.length) {\n                let node = null;\n                if (candidate) {\n                    const parentId = this.mirror.getId(candidate.value.parentNode);\n                    const nextId = getNextId(candidate.value);\n                    if (parentId !== -1 && nextId !== -1) {\n                        node = candidate;\n                    }\n                }\n                if (!node) {\n                    let tailNode = addList.tail;\n                    while (tailNode) {\n                        const _node = tailNode;\n                        tailNode = tailNode.previous;\n                        if (_node) {\n                            const parentId = this.mirror.getId(_node.value.parentNode);\n                            const nextId = getNextId(_node.value);\n                            if (nextId === -1)\n                                continue;\n                            else if (parentId !== -1) {\n                                node = _node;\n                                break;\n                            }\n                            else {\n                                const unhandledNode = _node.value;\n                                if (unhandledNode.parentNode &&\n                                    unhandledNode.parentNode.nodeType ===\n                                        Node.DOCUMENT_FRAGMENT_NODE) {\n                                    const shadowHost = unhandledNode.parentNode\n                                        .host;\n                                    const parentId = this.mirror.getId(shadowHost);\n                                    if (parentId !== -1) {\n                                        node = _node;\n                                        break;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n                if (!node) {\n                    while (addList.head) {\n                        addList.removeNode(addList.head.value);\n                    }\n                    break;\n                }\n                candidate = node.previous;\n                addList.removeNode(node.value);\n                pushAdd(node.value);\n            }\n            const payload = {\n                texts: this.texts\n                    .map((text) => ({\n                    id: this.mirror.getId(text.node),\n                    value: text.value,\n                }))\n                    .filter((text) => !addedIds.has(text.id))\n                    .filter((text) => this.mirror.has(text.id)),\n                attributes: this.attributes\n                    .map((attribute) => {\n                    const { attributes } = attribute;\n                    if (typeof attributes.style === 'string') {\n                        const diffAsStr = JSON.stringify(attribute.styleDiff);\n                        const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n                        if (diffAsStr.length < attributes.style.length) {\n                            if ((diffAsStr + unchangedAsStr).split('var(').length ===\n                                attributes.style.split('var(').length) {\n                                attributes.style = attribute.styleDiff;\n                            }\n                        }\n                    }\n                    return {\n                        id: this.mirror.getId(attribute.node),\n                        attributes: attributes,\n                    };\n                })\n                    .filter((attribute) => !addedIds.has(attribute.id))\n                    .filter((attribute) => this.mirror.has(attribute.id)),\n                removes: this.removes,\n                adds,\n            };\n            if (!payload.texts.length &&\n                !payload.attributes.length &&\n                !payload.removes.length &&\n                !payload.adds.length) {\n                return;\n            }\n            this.texts = [];\n            this.attributes = [];\n            this.attributeMap = new WeakMap();\n            this.removes = [];\n            this.addedSet = new Set();\n            this.movedSet = new Set();\n            this.droppedSet = new Set();\n            this.movedMap = {};\n            this.mutationCb(payload);\n        };\n        this.processMutation = (m) => {\n            if (isIgnored(m.target, this.mirror)) {\n                return;\n            }\n            switch (m.type) {\n                case 'characterData': {\n                    const value = m.target.textContent;\n                    if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) &&\n                        value !== m.oldValue) {\n                        this.texts.push({\n                            value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, this.maskAllText) && value\n                                ? this.maskTextFn\n                                    ? this.maskTextFn(value, closestElementOfNode(m.target))\n                                    : value.replace(/[\\S]/g, '*')\n                                : value,\n                            node: m.target,\n                        });\n                    }\n                    break;\n                }\n                case 'attributes': {\n                    const target = m.target;\n                    let attributeName = m.attributeName;\n                    let value = m.target.getAttribute(attributeName);\n                    if (attributeName === 'value') {\n                        const type = getInputType(target);\n                        const tagName = target.tagName;\n                        value = getInputValue(target, tagName, type);\n                        const isInputMasked = shouldMaskInput({\n                            maskInputOptions: this.maskInputOptions,\n                            tagName,\n                            type,\n                        });\n                        const forceMask = needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, isInputMasked);\n                        value = maskInputValue({\n                            isMasked: forceMask,\n                            element: target,\n                            value,\n                            maskInputFn: this.maskInputFn,\n                        });\n                    }\n                    if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\n                        value === m.oldValue) {\n                        return;\n                    }\n                    let item = this.attributeMap.get(m.target);\n                    if (target.tagName === 'IFRAME' &&\n                        attributeName === 'src' &&\n                        !this.keepIframeSrcFn(value)) {\n                        if (!target.contentDocument) {\n                            attributeName = 'rr_src';\n                        }\n                        else {\n                            return;\n                        }\n                    }\n                    if (!item) {\n                        item = {\n                            node: m.target,\n                            attributes: {},\n                            styleDiff: {},\n                            _unchangedStyles: {},\n                        };\n                        this.attributes.push(item);\n                        this.attributeMap.set(m.target, item);\n                    }\n                    if (attributeName === 'type' &&\n                        target.tagName === 'INPUT' &&\n                        (m.oldValue || '').toLowerCase() === 'password') {\n                        target.setAttribute('data-rr-is-password', 'true');\n                    }\n                    if (!ignoreAttribute(target.tagName, attributeName)) {\n                        item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value, target, this.maskAttributeFn);\n                        if (attributeName === 'style') {\n                            if (!this.unattachedDoc) {\n                                try {\n                                    this.unattachedDoc =\n                                        document.implementation.createHTMLDocument();\n                                }\n                                catch (e) {\n                                    this.unattachedDoc = this.doc;\n                                }\n                            }\n                            const old = this.unattachedDoc.createElement('span');\n                            if (m.oldValue) {\n                                old.setAttribute('style', m.oldValue);\n                            }\n                            for (const pname of Array.from(target.style)) {\n                                const newValue = target.style.getPropertyValue(pname);\n                                const newPriority = target.style.getPropertyPriority(pname);\n                                if (newValue !== old.style.getPropertyValue(pname) ||\n                                    newPriority !== old.style.getPropertyPriority(pname)) {\n                                    if (newPriority === '') {\n                                        item.styleDiff[pname] = newValue;\n                                    }\n                                    else {\n                                        item.styleDiff[pname] = [newValue, newPriority];\n                                    }\n                                }\n                                else {\n                                    item._unchangedStyles[pname] = [newValue, newPriority];\n                                }\n                            }\n                            for (const pname of Array.from(old.style)) {\n                                if (target.style.getPropertyValue(pname) === '') {\n                                    item.styleDiff[pname] = false;\n                                }\n                            }\n                        }\n                    }\n                    break;\n                }\n                case 'childList': {\n                    if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, true)) {\n                        return;\n                    }\n                    m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n                    m.removedNodes.forEach((n) => {\n                        const nodeId = this.mirror.getId(n);\n                        const parentId = isShadowRoot(m.target)\n                            ? this.mirror.getId(m.target.host)\n                            : this.mirror.getId(m.target);\n                        if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\n                            isIgnored(n, this.mirror) ||\n                            !isSerialized(n, this.mirror)) {\n                            return;\n                        }\n                        if (this.addedSet.has(n)) {\n                            deepDelete(this.addedSet, n);\n                            this.droppedSet.add(n);\n                        }\n                        else if (this.addedSet.has(m.target) && nodeId === -1) ;\n                        else if (isAncestorRemoved(m.target, this.mirror)) ;\n                        else if (this.movedSet.has(n) &&\n                            this.movedMap[moveKey(nodeId, parentId)]) {\n                            deepDelete(this.movedSet, n);\n                        }\n                        else {\n                            this.removes.push({\n                                parentId,\n                                id: nodeId,\n                                isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\n                                    ? true\n                                    : undefined,\n                            });\n                        }\n                        this.mapRemoves.push(n);\n                    });\n                    break;\n                }\n            }\n        };\n        this.genAdds = (n, target) => {\n            if (this.processedNodeManager.inOtherBuffer(n, this))\n                return;\n            if (this.addedSet.has(n) || this.movedSet.has(n))\n                return;\n            if (this.mirror.hasNode(n)) {\n                if (isIgnored(n, this.mirror)) {\n                    return;\n                }\n                this.movedSet.add(n);\n                let targetId = null;\n                if (target && this.mirror.hasNode(target)) {\n                    targetId = this.mirror.getId(target);\n                }\n                if (targetId && targetId !== -1) {\n                    this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n                }\n            }\n            else {\n                this.addedSet.add(n);\n                this.droppedSet.delete(n);\n            }\n            if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\n                n.childNodes.forEach((childN) => this.genAdds(childN));\n                if (hasShadowRoot(n)) {\n                    n.shadowRoot.childNodes.forEach((childN) => {\n                        this.processedNodeManager.add(childN, this);\n                        this.genAdds(childN, n);\n                    });\n                }\n            }\n        };\n    }\n    init(options) {\n        [\n            'mutationCb',\n            'blockClass',\n            'blockSelector',\n            'unblockSelector',\n            'maskAllText',\n            'maskTextClass',\n            'unmaskTextClass',\n            'maskTextSelector',\n            'unmaskTextSelector',\n            'inlineStylesheet',\n            'maskInputOptions',\n            'maskAttributeFn',\n            'maskTextFn',\n            'maskInputFn',\n            'keepIframeSrcFn',\n            'recordCanvas',\n            'inlineImages',\n            'slimDOMOptions',\n            'dataURLOptions',\n            'doc',\n            'mirror',\n            'iframeManager',\n            'stylesheetManager',\n            'shadowDomManager',\n            'canvasManager',\n            'processedNodeManager',\n        ].forEach((key) => {\n            this[key] = options[key];\n        });\n    }\n    freeze() {\n        this.frozen = true;\n        this.canvasManager.freeze();\n    }\n    unfreeze() {\n        this.frozen = false;\n        this.canvasManager.unfreeze();\n        this.emit();\n    }\n    isFrozen() {\n        return this.frozen;\n    }\n    lock() {\n        this.locked = true;\n        this.canvasManager.lock();\n    }\n    unlock() {\n        this.locked = false;\n        this.canvasManager.unlock();\n        this.emit();\n    }\n    reset() {\n        this.shadowDomManager.reset();\n        this.canvasManager.reset();\n    }\n}\nfunction deepDelete(addsSet, n) {\n    addsSet.delete(n);\n    n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction isParentRemoved(removes, n, mirror) {\n    if (removes.length === 0)\n        return false;\n    return _isParentRemoved(removes, n, mirror);\n}\nfunction _isParentRemoved(removes, n, mirror) {\n    const { parentNode } = n;\n    if (!parentNode) {\n        return false;\n    }\n    const parentId = mirror.getId(parentNode);\n    if (removes.some((r) => r.id === parentId)) {\n        return true;\n    }\n    return _isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n    if (set.size === 0)\n        return false;\n    return _isAncestorInSet(set, n);\n}\nfunction _isAncestorInSet(set, n) {\n    const { parentNode } = n;\n    if (!parentNode) {\n        return false;\n    }\n    if (set.has(parentNode)) {\n        return true;\n    }\n    return _isAncestorInSet(set, parentNode);\n}\n\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n    errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n    errorHandler = undefined;\n}\nconst callbackWrapper = (cb) => {\n    if (!errorHandler) {\n        return cb;\n    }\n    const rrwebWrapped = ((...rest) => {\n        try {\n            return cb(...rest);\n        }\n        catch (error) {\n            if (errorHandler && errorHandler(error) === true) {\n                return () => {\n                };\n            }\n            throw error;\n        }\n    });\n    return rrwebWrapped;\n};\n\nfunction _optionalChain$2(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n    try {\n        if ('composedPath' in event) {\n            const path = event.composedPath();\n            if (path.length) {\n                return path[0];\n            }\n        }\n        else if ('path' in event && event.path.length) {\n            return event.path[0];\n        }\n    }\n    catch (e2) {\n    }\n    return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n    const mutationBuffer = new MutationBuffer();\n    mutationBuffers.push(mutationBuffer);\n    mutationBuffer.init(options);\n    let mutationObserverCtor = window.MutationObserver ||\n        window.__rrMutationObserver;\n    const angularZoneSymbol = _optionalChain$2([window, 'optionalAccess', _ => _.Zone, 'optionalAccess', _2 => _2.__symbol__, 'optionalCall', _3 => _3('MutationObserver')]);\n    if (angularZoneSymbol &&\n        window[angularZoneSymbol]) {\n        mutationObserverCtor = window[angularZoneSymbol];\n    }\n    const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\n        if (options.onMutation && options.onMutation(mutations) === false) {\n            return;\n        }\n        mutationBuffer.processMutations.bind(mutationBuffer)(mutations);\n    }));\n    observer.observe(rootEl, {\n        attributes: true,\n        attributeOldValue: true,\n        characterData: true,\n        characterDataOldValue: true,\n        childList: true,\n        subtree: true,\n    });\n    return observer;\n}\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\n    if (sampling.mousemove === false) {\n        return () => {\n        };\n    }\n    const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n    const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\n        ? sampling.mousemoveCallback\n        : 500;\n    let positions = [];\n    let timeBaseline;\n    const wrappedCb = throttle$1(callbackWrapper((source) => {\n        const totalOffset = Date.now() - timeBaseline;\n        mousemoveCb(positions.map((p) => {\n            p.timeOffset -= totalOffset;\n            return p;\n        }), source);\n        positions = [];\n        timeBaseline = null;\n    }), callbackThreshold);\n    const updatePosition = callbackWrapper(throttle$1(callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        const { clientX, clientY } = legacy_isTouchEvent(evt)\n            ? evt.changedTouches[0]\n            : evt;\n        if (!timeBaseline) {\n            timeBaseline = nowTimestamp();\n        }\n        positions.push({\n            x: clientX,\n            y: clientY,\n            id: mirror.getId(target),\n            timeOffset: nowTimestamp() - timeBaseline,\n        });\n        wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n            ? IncrementalSource.Drag\n            : evt instanceof MouseEvent\n                ? IncrementalSource.MouseMove\n                : IncrementalSource.TouchMove);\n    }), threshold, {\n        trailing: false,\n    }));\n    const handlers = [\n        on('mousemove', updatePosition, doc),\n        on('touchmove', updatePosition, doc),\n        on('drag', updatePosition, doc),\n    ];\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n    if (sampling.mouseInteraction === false) {\n        return () => {\n        };\n    }\n    const disableMap = sampling.mouseInteraction === true ||\n        sampling.mouseInteraction === undefined\n        ? {}\n        : sampling.mouseInteraction;\n    const handlers = [];\n    let currentPointerType = null;\n    const getHandler = (eventKey) => {\n        return (event) => {\n            const target = getEventTarget(event);\n            if (isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n                return;\n            }\n            let pointerType = null;\n            let thisEventKey = eventKey;\n            if ('pointerType' in event) {\n                switch (event.pointerType) {\n                    case 'mouse':\n                        pointerType = PointerTypes.Mouse;\n                        break;\n                    case 'touch':\n                        pointerType = PointerTypes.Touch;\n                        break;\n                    case 'pen':\n                        pointerType = PointerTypes.Pen;\n                        break;\n                }\n                if (pointerType === PointerTypes.Touch) {\n                    if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n                        thisEventKey = 'TouchStart';\n                    }\n                    else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n                        thisEventKey = 'TouchEnd';\n                    }\n                }\n                else if (pointerType === PointerTypes.Pen) ;\n            }\n            else if (legacy_isTouchEvent(event)) {\n                pointerType = PointerTypes.Touch;\n            }\n            if (pointerType !== null) {\n                currentPointerType = pointerType;\n                if ((thisEventKey.startsWith('Touch') &&\n                    pointerType === PointerTypes.Touch) ||\n                    (thisEventKey.startsWith('Mouse') &&\n                        pointerType === PointerTypes.Mouse)) {\n                    pointerType = null;\n                }\n            }\n            else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n                pointerType = currentPointerType;\n                currentPointerType = null;\n            }\n            const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n            if (!e) {\n                return;\n            }\n            const id = mirror.getId(target);\n            const { clientX, clientY } = e;\n            callbackWrapper(mouseInteractionCb)({\n                type: MouseInteractions[thisEventKey],\n                id,\n                x: clientX,\n                y: clientY,\n                ...(pointerType !== null && { pointerType }),\n            });\n        };\n    };\n    Object.keys(MouseInteractions)\n        .filter((key) => Number.isNaN(Number(key)) &&\n        !key.endsWith('_Departed') &&\n        disableMap[key] !== false)\n        .forEach((eventKey) => {\n        let eventName = toLowerCase(eventKey);\n        const handler = getHandler(eventKey);\n        if (window.PointerEvent) {\n            switch (MouseInteractions[eventKey]) {\n                case MouseInteractions.MouseDown:\n                case MouseInteractions.MouseUp:\n                    eventName = eventName.replace('mouse', 'pointer');\n                    break;\n                case MouseInteractions.TouchStart:\n                case MouseInteractions.TouchEnd:\n                    return;\n            }\n        }\n        handlers.push(on(eventName, handler, doc));\n    });\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n    const updatePosition = callbackWrapper(throttle$1(callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        if (!target ||\n            isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n            return;\n        }\n        const id = mirror.getId(target);\n        if (target === doc && doc.defaultView) {\n            const scrollLeftTop = getWindowScroll(doc.defaultView);\n            scrollCb({\n                id,\n                x: scrollLeftTop.left,\n                y: scrollLeftTop.top,\n            });\n        }\n        else {\n            scrollCb({\n                id,\n                x: target.scrollLeft,\n                y: target.scrollTop,\n            });\n        }\n    }), sampling.scroll || 100));\n    return on('scroll', updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n    let lastH = -1;\n    let lastW = -1;\n    const updateDimension = callbackWrapper(throttle$1(callbackWrapper(() => {\n        const height = getWindowHeight();\n        const width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n            viewportResizeCb({\n                width: Number(width),\n                height: Number(height),\n            });\n            lastH = height;\n            lastW = width;\n        }\n    }), 200));\n    return on('resize', updateDimension, win);\n}\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nconst lastInputValueMap = new WeakMap();\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, }) {\n    function eventHandler(event) {\n        let target = getEventTarget(event);\n        const userTriggered = event.isTrusted;\n        const tagName = target && toUpperCase(target.tagName);\n        if (tagName === 'OPTION')\n            target = target.parentElement;\n        if (!target ||\n            !tagName ||\n            INPUT_TAGS.indexOf(tagName) < 0 ||\n            isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n            return;\n        }\n        const el = target;\n        if (el.classList.contains(ignoreClass) ||\n            (ignoreSelector && el.matches(ignoreSelector))) {\n            return;\n        }\n        const type = getInputType(target);\n        let text = getInputValue(el, tagName, type);\n        let isChecked = false;\n        const isInputMasked = shouldMaskInput({\n            maskInputOptions,\n            tagName,\n            type,\n        });\n        const forceMask = needMaskingText(target, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked);\n        if (type === 'radio' || type === 'checkbox') {\n            isChecked = target.checked;\n        }\n        text = maskInputValue({\n            isMasked: forceMask,\n            element: target,\n            value: text,\n            maskInputFn,\n        });\n        cbWithDedup(target, userTriggeredOnInput\n            ? { text, isChecked, userTriggered }\n            : { text, isChecked });\n        const name = target.name;\n        if (type === 'radio' && name && isChecked) {\n            doc\n                .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\n                .forEach((el) => {\n                if (el !== target) {\n                    const text = maskInputValue({\n                        isMasked: forceMask,\n                        element: el,\n                        value: getInputValue(el, tagName, type),\n                        maskInputFn,\n                    });\n                    cbWithDedup(el, userTriggeredOnInput\n                        ? { text, isChecked: !isChecked, userTriggered: false }\n                        : { text, isChecked: !isChecked });\n                }\n            });\n        }\n    }\n    function cbWithDedup(target, v) {\n        const lastInputValue = lastInputValueMap.get(target);\n        if (!lastInputValue ||\n            lastInputValue.text !== v.text ||\n            lastInputValue.isChecked !== v.isChecked) {\n            lastInputValueMap.set(target, v);\n            const id = mirror.getId(target);\n            callbackWrapper(inputCb)({\n                ...v,\n                id,\n            });\n        }\n    }\n    const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n    const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\n    const currentWindow = doc.defaultView;\n    if (!currentWindow) {\n        return () => {\n            handlers.forEach((h) => h());\n        };\n    }\n    const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\n    const hookProperties = [\n        [currentWindow.HTMLInputElement.prototype, 'value'],\n        [currentWindow.HTMLInputElement.prototype, 'checked'],\n        [currentWindow.HTMLSelectElement.prototype, 'value'],\n        [currentWindow.HTMLTextAreaElement.prototype, 'value'],\n        [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\n        [currentWindow.HTMLOptionElement.prototype, 'selected'],\n    ];\n    if (propertyDescriptor && propertyDescriptor.set) {\n        handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\n            set() {\n                callbackWrapper(eventHandler)({\n                    target: this,\n                    isTrusted: false,\n                });\n            },\n        }, false, currentWindow)));\n    }\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction getNestedCSSRulePositions(rule) {\n    const positions = [];\n    function recurse(childRule, pos) {\n        if ((hasNestedCSSRule('CSSGroupingRule') &&\n            childRule.parentRule instanceof CSSGroupingRule) ||\n            (hasNestedCSSRule('CSSMediaRule') &&\n                childRule.parentRule instanceof CSSMediaRule) ||\n            (hasNestedCSSRule('CSSSupportsRule') &&\n                childRule.parentRule instanceof CSSSupportsRule) ||\n            (hasNestedCSSRule('CSSConditionRule') &&\n                childRule.parentRule instanceof CSSConditionRule)) {\n            const rules = Array.from(childRule.parentRule.cssRules);\n            const index = rules.indexOf(childRule);\n            pos.unshift(index);\n        }\n        else if (childRule.parentStyleSheet) {\n            const rules = Array.from(childRule.parentStyleSheet.cssRules);\n            const index = rules.indexOf(childRule);\n            pos.unshift(index);\n        }\n        return pos;\n    }\n    return recurse(rule, positions);\n}\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\n    let id, styleId;\n    if (!sheet)\n        return {};\n    if (sheet.ownerNode)\n        id = mirror.getId(sheet.ownerNode);\n    else\n        styleId = styleMirror.getId(sheet);\n    return {\n        styleId,\n        id,\n    };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\n    if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n        return () => {\n        };\n    }\n    const insertRule = win.CSSStyleSheet.prototype.insertRule;\n    win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            const [rule, index] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                styleSheetRuleCb({\n                    id,\n                    styleId,\n                    adds: [{ rule, index }],\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n    win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            const [index] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                styleSheetRuleCb({\n                    id,\n                    styleId,\n                    removes: [{ index }],\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    let replace;\n    if (win.CSSStyleSheet.prototype.replace) {\n        replace = win.CSSStyleSheet.prototype.replace;\n        win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\n                const [text] = argumentsList;\n                const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                    styleSheetRuleCb({\n                        id,\n                        styleId,\n                        replace: text,\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            }),\n        });\n    }\n    let replaceSync;\n    if (win.CSSStyleSheet.prototype.replaceSync) {\n        replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n        win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\n                const [text] = argumentsList;\n                const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                    styleSheetRuleCb({\n                        id,\n                        styleId,\n                        replaceSync: text,\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            }),\n        });\n    }\n    const supportedNestedCSSRuleTypes = {};\n    if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\n        supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n    }\n    else {\n        if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\n            supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n        }\n        if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\n            supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n        }\n        if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\n            supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n        }\n    }\n    const unmodifiedFunctions = {};\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n        unmodifiedFunctions[typeKey] = {\n            insertRule: type.prototype.insertRule,\n            deleteRule: type.prototype.deleteRule,\n        };\n        type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\n                const [rule, index] = argumentsList;\n                const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                    styleSheetRuleCb({\n                        id,\n                        styleId,\n                        adds: [\n                            {\n                                rule,\n                                index: [\n                                    ...getNestedCSSRulePositions(thisArg),\n                                    index || 0,\n                                ],\n                            },\n                        ],\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            }),\n        });\n        type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\n                const [index] = argumentsList;\n                const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                    styleSheetRuleCb({\n                        id,\n                        styleId,\n                        removes: [\n                            { index: [...getNestedCSSRulePositions(thisArg), index] },\n                        ],\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            }),\n        });\n    });\n    return callbackWrapper(() => {\n        win.CSSStyleSheet.prototype.insertRule = insertRule;\n        win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n        replace && (win.CSSStyleSheet.prototype.replace = replace);\n        replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n        Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n            type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n            type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n        });\n    });\n}\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\n    let hostId = null;\n    if (host.nodeName === '#document')\n        hostId = mirror.getId(host);\n    else\n        hostId = mirror.getId(host.host);\n    const patchTarget = host.nodeName === '#document'\n        ? _optionalChain$2([host, 'access', _4 => _4.defaultView, 'optionalAccess', _5 => _5.Document])\n        : _optionalChain$2([host, 'access', _6 => _6.ownerDocument, 'optionalAccess', _7 => _7.defaultView, 'optionalAccess', _8 => _8.ShadowRoot]);\n    const originalPropertyDescriptor = _optionalChain$2([patchTarget, 'optionalAccess', _9 => _9.prototype])\n        ? Object.getOwnPropertyDescriptor(_optionalChain$2([patchTarget, 'optionalAccess', _10 => _10.prototype]), 'adoptedStyleSheets')\n        : undefined;\n    if (hostId === null ||\n        hostId === -1 ||\n        !patchTarget ||\n        !originalPropertyDescriptor)\n        return () => {\n        };\n    Object.defineProperty(host, 'adoptedStyleSheets', {\n        configurable: originalPropertyDescriptor.configurable,\n        enumerable: originalPropertyDescriptor.enumerable,\n        get() {\n            return _optionalChain$2([originalPropertyDescriptor, 'access', _11 => _11.get, 'optionalAccess', _12 => _12.call, 'call', _13 => _13(this)]);\n        },\n        set(sheets) {\n            const result = _optionalChain$2([originalPropertyDescriptor, 'access', _14 => _14.set, 'optionalAccess', _15 => _15.call, 'call', _16 => _16(this, sheets)]);\n            if (hostId !== null && hostId !== -1) {\n                try {\n                    stylesheetManager.adoptStyleSheets(sheets, hostId);\n                }\n                catch (e) {\n                }\n            }\n            return result;\n        },\n    });\n    return callbackWrapper(() => {\n        Object.defineProperty(host, 'adoptedStyleSheets', {\n            configurable: originalPropertyDescriptor.configurable,\n            enumerable: originalPropertyDescriptor.enumerable,\n            get: originalPropertyDescriptor.get,\n            set: originalPropertyDescriptor.set,\n        });\n    });\n}\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\n    const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n    win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            const [property, value, priority] = argumentsList;\n            if (ignoreCSSAttributes.has(property)) {\n                return setProperty.apply(thisArg, [property, value, priority]);\n            }\n            const { id, styleId } = getIdAndStyleId(_optionalChain$2([thisArg, 'access', _17 => _17.parentRule, 'optionalAccess', _18 => _18.parentStyleSheet]), mirror, stylesheetManager.styleMirror);\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                styleDeclarationCb({\n                    id,\n                    styleId,\n                    set: {\n                        property,\n                        value,\n                        priority,\n                    },\n                    index: getNestedCSSRulePositions(thisArg.parentRule),\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            const [property] = argumentsList;\n            if (ignoreCSSAttributes.has(property)) {\n                return removeProperty.apply(thisArg, [property]);\n            }\n            const { id, styleId } = getIdAndStyleId(_optionalChain$2([thisArg, 'access', _19 => _19.parentRule, 'optionalAccess', _20 => _20.parentStyleSheet]), mirror, stylesheetManager.styleMirror);\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n                styleDeclarationCb({\n                    id,\n                    styleId,\n                    remove: {\n                        property,\n                    },\n                    index: getNestedCSSRulePositions(thisArg.parentRule),\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    return callbackWrapper(() => {\n        win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n        win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n    });\n}\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, doc, }) {\n    const handler = callbackWrapper((type) => throttle$1(callbackWrapper((event) => {\n        const target = getEventTarget(event);\n        if (!target ||\n            isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n            return;\n        }\n        const { currentTime, volume, muted, playbackRate } = target;\n        mediaInteractionCb({\n            type,\n            id: mirror.getId(target),\n            currentTime,\n            volume,\n            muted,\n            playbackRate,\n        });\n    }), sampling.media || 500));\n    const handlers = [\n        on('play', handler(0), doc),\n        on('pause', handler(1), doc),\n        on('seeked', handler(2), doc),\n        on('volumechange', handler(3), doc),\n        on('ratechange', handler(4), doc),\n    ];\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction initFontObserver({ fontCb, doc }) {\n    const win = doc.defaultView;\n    if (!win) {\n        return () => {\n        };\n    }\n    const handlers = [];\n    const fontMap = new WeakMap();\n    const originalFontFace = win.FontFace;\n    win.FontFace = function FontFace(family, source, descriptors) {\n        const fontFace = new originalFontFace(family, source, descriptors);\n        fontMap.set(fontFace, {\n            family,\n            buffer: typeof source !== 'string',\n            descriptors,\n            fontSource: typeof source === 'string'\n                ? source\n                : JSON.stringify(Array.from(new Uint8Array(source))),\n        });\n        return fontFace;\n    };\n    const restoreHandler = patch(doc.fonts, 'add', function (original) {\n        return function (fontFace) {\n            setTimeout$1(callbackWrapper(() => {\n                const p = fontMap.get(fontFace);\n                if (p) {\n                    fontCb(p);\n                    fontMap.delete(fontFace);\n                }\n            }), 0);\n            return original.apply(this, [fontFace]);\n        };\n    });\n    handlers.push(() => {\n        win.FontFace = originalFontFace;\n    });\n    handlers.push(restoreHandler);\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction initSelectionObserver(param) {\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, selectionCb, } = param;\n    let collapsed = true;\n    const updateSelection = callbackWrapper(() => {\n        const selection = doc.getSelection();\n        if (!selection || (collapsed && _optionalChain$2([selection, 'optionalAccess', _21 => _21.isCollapsed])))\n            return;\n        collapsed = selection.isCollapsed || false;\n        const ranges = [];\n        const count = selection.rangeCount || 0;\n        for (let i = 0; i < count; i++) {\n            const range = selection.getRangeAt(i);\n            const { startContainer, startOffset, endContainer, endOffset } = range;\n            const blocked = isBlocked(startContainer, blockClass, blockSelector, unblockSelector, true) ||\n                isBlocked(endContainer, blockClass, blockSelector, unblockSelector, true);\n            if (blocked)\n                continue;\n            ranges.push({\n                start: mirror.getId(startContainer),\n                startOffset,\n                end: mirror.getId(endContainer),\n                endOffset,\n            });\n        }\n        selectionCb({ ranges });\n    });\n    updateSelection();\n    return on('selectionchange', updateSelection);\n}\nfunction initCustomElementObserver({ doc, customElementCb, }) {\n    const win = doc.defaultView;\n    if (!win || !win.customElements)\n        return () => { };\n    const restoreHandler = patch(win.customElements, 'define', function (original) {\n        return function (name, constructor, options) {\n            try {\n                customElementCb({\n                    define: {\n                        name,\n                    },\n                });\n            }\n            catch (e) {\n            }\n            return original.apply(this, [name, constructor, options]);\n        };\n    });\n    return restoreHandler;\n}\nfunction initObservers(o, _hooks = {}) {\n    const currentWindow = o.doc.defaultView;\n    if (!currentWindow) {\n        return () => {\n        };\n    }\n    const mutationObserver = initMutationObserver(o, o.doc);\n    const mousemoveHandler = initMoveObserver(o);\n    const mouseInteractionHandler = initMouseInteractionObserver(o);\n    const scrollHandler = initScrollObserver(o);\n    const viewportResizeHandler = initViewportResizeObserver(o, {\n        win: currentWindow,\n    });\n    const inputHandler = initInputObserver(o);\n    const mediaInteractionHandler = initMediaInteractionObserver(o);\n    const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n    const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n    const styleDeclarationObserver = initStyleDeclarationObserver(o, {\n        win: currentWindow,\n    });\n    const fontObserver = o.collectFonts\n        ? initFontObserver(o)\n        : () => {\n        };\n    const selectionObserver = initSelectionObserver(o);\n    const customElementObserver = initCustomElementObserver(o);\n    const pluginHandlers = [];\n    for (const plugin of o.plugins) {\n        pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n    }\n    return callbackWrapper(() => {\n        mutationBuffers.forEach((b) => b.reset());\n        mutationObserver.disconnect();\n        mousemoveHandler();\n        mouseInteractionHandler();\n        scrollHandler();\n        viewportResizeHandler();\n        inputHandler();\n        mediaInteractionHandler();\n        styleSheetObserver();\n        adoptedStyleSheetObserver();\n        styleDeclarationObserver();\n        fontObserver();\n        selectionObserver();\n        customElementObserver();\n        pluginHandlers.forEach((h) => h());\n    });\n}\nfunction hasNestedCSSRule(prop) {\n    return typeof window[prop] !== 'undefined';\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n    return Boolean(typeof window[prop] !== 'undefined' &&\n        window[prop].prototype &&\n        'insertRule' in window[prop].prototype &&\n        'deleteRule' in window[prop].prototype);\n}\n\nclass CrossOriginIframeMirror {\n    constructor(generateIdFn) {\n        this.generateIdFn = generateIdFn;\n        this.iframeIdToRemoteIdMap = new WeakMap();\n        this.iframeRemoteIdToIdMap = new WeakMap();\n    }\n    getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n        const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n        const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n        let id = idToRemoteIdMap.get(remoteId);\n        if (!id) {\n            id = this.generateIdFn();\n            idToRemoteIdMap.set(remoteId, id);\n            remoteIdToIdMap.set(id, remoteId);\n        }\n        return id;\n    }\n    getIds(iframe, remoteId) {\n        const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n        const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n        return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\n    }\n    getRemoteId(iframe, id, map) {\n        const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n        if (typeof id !== 'number')\n            return id;\n        const remoteId = remoteIdToIdMap.get(id);\n        if (!remoteId)\n            return -1;\n        return remoteId;\n    }\n    getRemoteIds(iframe, ids) {\n        const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n        return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n    }\n    reset(iframe) {\n        if (!iframe) {\n            this.iframeIdToRemoteIdMap = new WeakMap();\n            this.iframeRemoteIdToIdMap = new WeakMap();\n            return;\n        }\n        this.iframeIdToRemoteIdMap.delete(iframe);\n        this.iframeRemoteIdToIdMap.delete(iframe);\n    }\n    getIdToRemoteIdMap(iframe) {\n        let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n        if (!idToRemoteIdMap) {\n            idToRemoteIdMap = new Map();\n            this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n        }\n        return idToRemoteIdMap;\n    }\n    getRemoteIdToIdMap(iframe) {\n        let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n        if (!remoteIdToIdMap) {\n            remoteIdToIdMap = new Map();\n            this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n        }\n        return remoteIdToIdMap;\n    }\n}\n\nfunction _optionalChain$1(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nclass IframeManagerNoop {\n    constructor() {\n        this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n        this.crossOriginIframeRootIdMap = new WeakMap();\n    }\n    addIframe() {\n    }\n    addLoadListener() {\n    }\n    attachIframe() {\n    }\n}\nclass IframeManager {\n    constructor(options) {\n        this.iframes = new WeakMap();\n        this.crossOriginIframeMap = new WeakMap();\n        this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n        this.crossOriginIframeRootIdMap = new WeakMap();\n        this.mutationCb = options.mutationCb;\n        this.wrappedEmit = options.wrappedEmit;\n        this.stylesheetManager = options.stylesheetManager;\n        this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n        this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n        this.mirror = options.mirror;\n        if (this.recordCrossOriginIframes) {\n            window.addEventListener('message', this.handleMessage.bind(this));\n        }\n    }\n    addIframe(iframeEl) {\n        this.iframes.set(iframeEl, true);\n        if (iframeEl.contentWindow)\n            this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n    }\n    addLoadListener(cb) {\n        this.loadListener = cb;\n    }\n    attachIframe(iframeEl, childSn) {\n        this.mutationCb({\n            adds: [\n                {\n                    parentId: this.mirror.getId(iframeEl),\n                    nextId: null,\n                    node: childSn,\n                },\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true,\n        });\n        _optionalChain$1([this, 'access', _ => _.loadListener, 'optionalCall', _2 => _2(iframeEl)]);\n        if (iframeEl.contentDocument &&\n            iframeEl.contentDocument.adoptedStyleSheets &&\n            iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n            this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n    }\n    handleMessage(message) {\n        const crossOriginMessageEvent = message;\n        if (crossOriginMessageEvent.data.type !== 'rrweb' ||\n            crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n            return;\n        const iframeSourceWindow = message.source;\n        if (!iframeSourceWindow)\n            return;\n        const iframeEl = this.crossOriginIframeMap.get(message.source);\n        if (!iframeEl)\n            return;\n        const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n        if (transformedEvent)\n            this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n    }\n    transformCrossOriginEvent(iframeEl, e) {\n        switch (e.type) {\n            case EventType.FullSnapshot: {\n                this.crossOriginIframeMirror.reset(iframeEl);\n                this.crossOriginIframeStyleMirror.reset(iframeEl);\n                this.replaceIdOnNode(e.data.node, iframeEl);\n                const rootId = e.data.node.id;\n                this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n                this.patchRootIdOnNode(e.data.node, rootId);\n                return {\n                    timestamp: e.timestamp,\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.Mutation,\n                        adds: [\n                            {\n                                parentId: this.mirror.getId(iframeEl),\n                                nextId: null,\n                                node: e.data.node,\n                            },\n                        ],\n                        removes: [],\n                        texts: [],\n                        attributes: [],\n                        isAttachIframe: true,\n                    },\n                };\n            }\n            case EventType.Meta:\n            case EventType.Load:\n            case EventType.DomContentLoaded: {\n                return false;\n            }\n            case EventType.Plugin: {\n                return e;\n            }\n            case EventType.Custom: {\n                this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\n                return e;\n            }\n            case EventType.IncrementalSnapshot: {\n                switch (e.data.source) {\n                    case IncrementalSource.Mutation: {\n                        e.data.adds.forEach((n) => {\n                            this.replaceIds(n, iframeEl, [\n                                'parentId',\n                                'nextId',\n                                'previousId',\n                            ]);\n                            this.replaceIdOnNode(n.node, iframeEl);\n                            const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n                            rootId && this.patchRootIdOnNode(n.node, rootId);\n                        });\n                        e.data.removes.forEach((n) => {\n                            this.replaceIds(n, iframeEl, ['parentId', 'id']);\n                        });\n                        e.data.attributes.forEach((n) => {\n                            this.replaceIds(n, iframeEl, ['id']);\n                        });\n                        e.data.texts.forEach((n) => {\n                            this.replaceIds(n, iframeEl, ['id']);\n                        });\n                        return e;\n                    }\n                    case IncrementalSource.Drag:\n                    case IncrementalSource.TouchMove:\n                    case IncrementalSource.MouseMove: {\n                        e.data.positions.forEach((p) => {\n                            this.replaceIds(p, iframeEl, ['id']);\n                        });\n                        return e;\n                    }\n                    case IncrementalSource.ViewportResize: {\n                        return false;\n                    }\n                    case IncrementalSource.MediaInteraction:\n                    case IncrementalSource.MouseInteraction:\n                    case IncrementalSource.Scroll:\n                    case IncrementalSource.CanvasMutation:\n                    case IncrementalSource.Input: {\n                        this.replaceIds(e.data, iframeEl, ['id']);\n                        return e;\n                    }\n                    case IncrementalSource.StyleSheetRule:\n                    case IncrementalSource.StyleDeclaration: {\n                        this.replaceIds(e.data, iframeEl, ['id']);\n                        this.replaceStyleIds(e.data, iframeEl, ['styleId']);\n                        return e;\n                    }\n                    case IncrementalSource.Font: {\n                        return e;\n                    }\n                    case IncrementalSource.Selection: {\n                        e.data.ranges.forEach((range) => {\n                            this.replaceIds(range, iframeEl, ['start', 'end']);\n                        });\n                        return e;\n                    }\n                    case IncrementalSource.AdoptedStyleSheet: {\n                        this.replaceIds(e.data, iframeEl, ['id']);\n                        this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\n                        _optionalChain$1([e, 'access', _3 => _3.data, 'access', _4 => _4.styles, 'optionalAccess', _5 => _5.forEach, 'call', _6 => _6((style) => {\n                            this.replaceStyleIds(style, iframeEl, ['styleId']);\n                        })]);\n                        return e;\n                    }\n                }\n            }\n        }\n        return false;\n    }\n    replace(iframeMirror, obj, iframeEl, keys) {\n        for (const key of keys) {\n            if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\n                continue;\n            if (Array.isArray(obj[key])) {\n                obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n            }\n            else {\n                obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n            }\n        }\n        return obj;\n    }\n    replaceIds(obj, iframeEl, keys) {\n        return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n    }\n    replaceStyleIds(obj, iframeEl, keys) {\n        return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n    }\n    replaceIdOnNode(node, iframeEl) {\n        this.replaceIds(node, iframeEl, ['id', 'rootId']);\n        if ('childNodes' in node) {\n            node.childNodes.forEach((child) => {\n                this.replaceIdOnNode(child, iframeEl);\n            });\n        }\n    }\n    patchRootIdOnNode(node, rootId) {\n        if (node.type !== NodeType$1.Document && !node.rootId)\n            node.rootId = rootId;\n        if ('childNodes' in node) {\n            node.childNodes.forEach((child) => {\n                this.patchRootIdOnNode(child, rootId);\n            });\n        }\n    }\n}\n\nclass ShadowDomManagerNoop {\n    init() {\n    }\n    addShadowRoot() {\n    }\n    observeAttachShadow() {\n    }\n    reset() {\n    }\n}\nclass ShadowDomManager {\n    constructor(options) {\n        this.shadowDoms = new WeakSet();\n        this.restoreHandlers = [];\n        this.mutationCb = options.mutationCb;\n        this.scrollCb = options.scrollCb;\n        this.bypassOptions = options.bypassOptions;\n        this.mirror = options.mirror;\n        this.init();\n    }\n    init() {\n        this.reset();\n        this.patchAttachShadow(Element, document);\n    }\n    addShadowRoot(shadowRoot, doc) {\n        if (!isNativeShadowDom(shadowRoot))\n            return;\n        if (this.shadowDoms.has(shadowRoot))\n            return;\n        this.shadowDoms.add(shadowRoot);\n        const observer = initMutationObserver({\n            ...this.bypassOptions,\n            doc,\n            mutationCb: this.mutationCb,\n            mirror: this.mirror,\n            shadowDomManager: this,\n        }, shadowRoot);\n        this.restoreHandlers.push(() => observer.disconnect());\n        this.restoreHandlers.push(initScrollObserver({\n            ...this.bypassOptions,\n            scrollCb: this.scrollCb,\n            doc: shadowRoot,\n            mirror: this.mirror,\n        }));\n        setTimeout$1(() => {\n            if (shadowRoot.adoptedStyleSheets &&\n                shadowRoot.adoptedStyleSheets.length > 0)\n                this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\n            this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n                mirror: this.mirror,\n                stylesheetManager: this.bypassOptions.stylesheetManager,\n            }, shadowRoot));\n        }, 0);\n    }\n    observeAttachShadow(iframeElement) {\n        if (!iframeElement.contentWindow || !iframeElement.contentDocument)\n            return;\n        this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n    }\n    patchAttachShadow(element, doc) {\n        const manager = this;\n        this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\n            return function (option) {\n                const shadowRoot = original.call(this, option);\n                if (this.shadowRoot && inDom(this))\n                    manager.addShadowRoot(this.shadowRoot, doc);\n                return shadowRoot;\n            };\n        }));\n    }\n    reset() {\n        this.restoreHandlers.forEach((handler) => {\n            try {\n                handler();\n            }\n            catch (e) {\n            }\n        });\n        this.restoreHandlers = [];\n        this.shadowDoms = new WeakSet();\n    }\n}\n\nclass CanvasManagerNoop {\n    reset() {\n    }\n    freeze() {\n    }\n    unfreeze() {\n    }\n    lock() {\n    }\n    unlock() {\n    }\n    snapshot() {\n    }\n}\n\nclass StylesheetManager {\n    constructor(options) {\n        this.trackedLinkElements = new WeakSet();\n        this.styleMirror = new StyleSheetMirror();\n        this.mutationCb = options.mutationCb;\n        this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n    }\n    attachLinkElement(linkEl, childSn) {\n        if ('_cssText' in childSn.attributes)\n            this.mutationCb({\n                adds: [],\n                removes: [],\n                texts: [],\n                attributes: [\n                    {\n                        id: childSn.id,\n                        attributes: childSn\n                            .attributes,\n                    },\n                ],\n            });\n        this.trackLinkElement(linkEl);\n    }\n    trackLinkElement(linkEl) {\n        if (this.trackedLinkElements.has(linkEl))\n            return;\n        this.trackedLinkElements.add(linkEl);\n        this.trackStylesheetInLinkElement(linkEl);\n    }\n    adoptStyleSheets(sheets, hostId) {\n        if (sheets.length === 0)\n            return;\n        const adoptedStyleSheetData = {\n            id: hostId,\n            styleIds: [],\n        };\n        const styles = [];\n        for (const sheet of sheets) {\n            let styleId;\n            if (!this.styleMirror.has(sheet)) {\n                styleId = this.styleMirror.add(sheet);\n                styles.push({\n                    styleId,\n                    rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\n                        rule: stringifyRule(r),\n                        index,\n                    })),\n                });\n            }\n            else\n                styleId = this.styleMirror.getId(sheet);\n            adoptedStyleSheetData.styleIds.push(styleId);\n        }\n        if (styles.length > 0)\n            adoptedStyleSheetData.styles = styles;\n        this.adoptedStyleSheetCb(adoptedStyleSheetData);\n    }\n    reset() {\n        this.styleMirror.reset();\n        this.trackedLinkElements = new WeakSet();\n    }\n    trackStylesheetInLinkElement(linkEl) {\n    }\n}\n\nclass ProcessedNodeManager {\n    constructor() {\n        this.nodeMap = new WeakMap();\n        this.loop = true;\n        this.periodicallyClear();\n    }\n    periodicallyClear() {\n        onRequestAnimationFrame(() => {\n            this.clear();\n            if (this.loop)\n                this.periodicallyClear();\n        });\n    }\n    inOtherBuffer(node, thisBuffer) {\n        const buffers = this.nodeMap.get(node);\n        return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\n    }\n    add(node, buffer) {\n        this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n    }\n    clear() {\n        this.nodeMap = new WeakMap();\n    }\n    destroy() {\n        this.loop = false;\n    }\n}\n\nlet wrappedEmit;\nlet _takeFullSnapshot;\nconst mirror = createMirror();\nfunction record(options = {}) {\n    const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskAttributeFn, maskInputFn, maskTextFn, maxCanvasSize = null, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\n        ? options.recordAfter\n        : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, onMutation, getCanvasManager, } = options;\n    registerErrorHandler(errorHandler);\n    const inEmittingFrame = recordCrossOriginIframes\n        ? window.parent === window\n        : true;\n    let passEmitsToParent = false;\n    if (!inEmittingFrame) {\n        try {\n            if (window.parent.document) {\n                passEmitsToParent = false;\n            }\n        }\n        catch (e) {\n            passEmitsToParent = true;\n        }\n    }\n    if (inEmittingFrame && !emit) {\n        throw new Error('emit function is required');\n    }\n    if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n        sampling.mousemove = mousemoveWait;\n    }\n    mirror.reset();\n    const maskInputOptions = maskAllInputs === true\n        ? {\n            color: true,\n            date: true,\n            'datetime-local': true,\n            email: true,\n            month: true,\n            number: true,\n            range: true,\n            search: true,\n            tel: true,\n            text: true,\n            time: true,\n            url: true,\n            week: true,\n            textarea: true,\n            select: true,\n            radio: true,\n            checkbox: true,\n        }\n        : _maskInputOptions !== undefined\n            ? _maskInputOptions\n            : {};\n    const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n        ? {\n            script: true,\n            comment: true,\n            headFavicon: true,\n            headWhitespace: true,\n            headMetaSocial: true,\n            headMetaRobots: true,\n            headMetaHttpEquiv: true,\n            headMetaVerification: true,\n            headMetaAuthorship: _slimDOMOptions === 'all',\n            headMetaDescKeywords: _slimDOMOptions === 'all',\n        }\n        : _slimDOMOptions\n            ? _slimDOMOptions\n            : {};\n    polyfill();\n    let lastFullSnapshotEvent;\n    let incrementalSnapshotCount = 0;\n    const eventProcessor = (e) => {\n        for (const plugin of plugins || []) {\n            if (plugin.eventProcessor) {\n                e = plugin.eventProcessor(e);\n            }\n        }\n        if (packFn &&\n            !passEmitsToParent) {\n            e = packFn(e);\n        }\n        return e;\n    };\n    wrappedEmit = (r, isCheckout) => {\n        const e = r;\n        e.timestamp = nowTimestamp();\n        if (_optionalChain([mutationBuffers, 'access', _ => _[0], 'optionalAccess', _2 => _2.isFrozen, 'call', _3 => _3()]) &&\n            e.type !== EventType.FullSnapshot &&\n            !(e.type === EventType.IncrementalSnapshot &&\n                e.data.source === IncrementalSource.Mutation)) {\n            mutationBuffers.forEach((buf) => buf.unfreeze());\n        }\n        if (inEmittingFrame) {\n            _optionalChain([emit, 'optionalCall', _4 => _4(eventProcessor(e), isCheckout)]);\n        }\n        else if (passEmitsToParent) {\n            const message = {\n                type: 'rrweb',\n                event: eventProcessor(e),\n                origin: window.location.origin,\n                isCheckout,\n            };\n            window.parent.postMessage(message, '*');\n        }\n        if (e.type === EventType.FullSnapshot) {\n            lastFullSnapshotEvent = e;\n            incrementalSnapshotCount = 0;\n        }\n        else if (e.type === EventType.IncrementalSnapshot) {\n            if (e.data.source === IncrementalSource.Mutation &&\n                e.data.isAttachIframe) {\n                return;\n            }\n            incrementalSnapshotCount++;\n            const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n            const exceedTime = checkoutEveryNms &&\n                lastFullSnapshotEvent &&\n                e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n            if (exceedCount || exceedTime) {\n                takeFullSnapshot(true);\n            }\n        }\n    };\n    const wrappedMutationEmit = (m) => {\n        wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n                source: IncrementalSource.Mutation,\n                ...m,\n            },\n        });\n    };\n    const wrappedScrollEmit = (p) => wrappedEmit({\n        type: EventType.IncrementalSnapshot,\n        data: {\n            source: IncrementalSource.Scroll,\n            ...p,\n        },\n    });\n    const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n        type: EventType.IncrementalSnapshot,\n        data: {\n            source: IncrementalSource.CanvasMutation,\n            ...p,\n        },\n    });\n    const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit({\n        type: EventType.IncrementalSnapshot,\n        data: {\n            source: IncrementalSource.AdoptedStyleSheet,\n            ...a,\n        },\n    });\n    const stylesheetManager = new StylesheetManager({\n        mutationCb: wrappedMutationEmit,\n        adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\n    });\n    const iframeManager = typeof __RRWEB_EXCLUDE_IFRAME__ === 'boolean' && __RRWEB_EXCLUDE_IFRAME__\n        ? new IframeManagerNoop()\n        : new IframeManager({\n            mirror,\n            mutationCb: wrappedMutationEmit,\n            stylesheetManager: stylesheetManager,\n            recordCrossOriginIframes,\n            wrappedEmit,\n        });\n    for (const plugin of plugins || []) {\n        if (plugin.getMirror)\n            plugin.getMirror({\n                nodeMirror: mirror,\n                crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n                crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\n            });\n    }\n    const processedNodeManager = new ProcessedNodeManager();\n    const canvasManager = _getCanvasManager(getCanvasManager, {\n        mirror,\n        win: window,\n        mutationCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n                source: IncrementalSource.CanvasMutation,\n                ...p,\n            },\n        }),\n        recordCanvas,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        maxCanvasSize,\n        sampling: sampling['canvas'],\n        dataURLOptions,\n        errorHandler,\n    });\n    const shadowDomManager = typeof __RRWEB_EXCLUDE_SHADOW_DOM__ === 'boolean' &&\n        __RRWEB_EXCLUDE_SHADOW_DOM__\n        ? new ShadowDomManagerNoop()\n        : new ShadowDomManager({\n            mutationCb: wrappedMutationEmit,\n            scrollCb: wrappedScrollEmit,\n            bypassOptions: {\n                onMutation,\n                blockClass,\n                blockSelector,\n                unblockSelector,\n                maskAllText,\n                maskTextClass,\n                unmaskTextClass,\n                maskTextSelector,\n                unmaskTextSelector,\n                inlineStylesheet,\n                maskInputOptions,\n                dataURLOptions,\n                maskAttributeFn,\n                maskTextFn,\n                maskInputFn,\n                recordCanvas,\n                inlineImages,\n                sampling,\n                slimDOMOptions,\n                iframeManager,\n                stylesheetManager,\n                canvasManager,\n                keepIframeSrcFn,\n                processedNodeManager,\n            },\n            mirror,\n        });\n    const takeFullSnapshot = (isCheckout = false) => {\n        wrappedEmit({\n            type: EventType.Meta,\n            data: {\n                href: window.location.href,\n                width: getWindowWidth(),\n                height: getWindowHeight(),\n            },\n        }, isCheckout);\n        stylesheetManager.reset();\n        shadowDomManager.init();\n        mutationBuffers.forEach((buf) => buf.lock());\n        const node = snapshot(document, {\n            mirror,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskAllText,\n            maskTextClass,\n            unmaskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            inlineStylesheet,\n            maskAllInputs: maskInputOptions,\n            maskAttributeFn,\n            maskInputFn,\n            maskTextFn,\n            slimDOM: slimDOMOptions,\n            dataURLOptions,\n            recordCanvas,\n            inlineImages,\n            onSerialize: (n) => {\n                if (isSerializedIframe(n, mirror)) {\n                    iframeManager.addIframe(n);\n                }\n                if (isSerializedStylesheet(n, mirror)) {\n                    stylesheetManager.trackLinkElement(n);\n                }\n                if (hasShadowRoot(n)) {\n                    shadowDomManager.addShadowRoot(n.shadowRoot, document);\n                }\n            },\n            onIframeLoad: (iframe, childSn) => {\n                iframeManager.attachIframe(iframe, childSn);\n                shadowDomManager.observeAttachShadow(iframe);\n            },\n            onStylesheetLoad: (linkEl, childSn) => {\n                stylesheetManager.attachLinkElement(linkEl, childSn);\n            },\n            keepIframeSrcFn,\n        });\n        if (!node) {\n            return console.warn('Failed to snapshot the document');\n        }\n        wrappedEmit({\n            type: EventType.FullSnapshot,\n            data: {\n                node,\n                initialOffset: getWindowScroll(window),\n            },\n        });\n        mutationBuffers.forEach((buf) => buf.unlock());\n        if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n            stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n    };\n    _takeFullSnapshot = takeFullSnapshot;\n    try {\n        const handlers = [];\n        const observe = (doc) => {\n            return callbackWrapper(initObservers)({\n                onMutation,\n                mutationCb: wrappedMutationEmit,\n                mousemoveCb: (positions, source) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source,\n                        positions,\n                    },\n                }),\n                mouseInteractionCb: (d) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.MouseInteraction,\n                        ...d,\n                    },\n                }),\n                scrollCb: wrappedScrollEmit,\n                viewportResizeCb: (d) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.ViewportResize,\n                        ...d,\n                    },\n                }),\n                inputCb: (v) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.Input,\n                        ...v,\n                    },\n                }),\n                mediaInteractionCb: (p) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.MediaInteraction,\n                        ...p,\n                    },\n                }),\n                styleSheetRuleCb: (r) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.StyleSheetRule,\n                        ...r,\n                    },\n                }),\n                styleDeclarationCb: (r) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.StyleDeclaration,\n                        ...r,\n                    },\n                }),\n                canvasMutationCb: wrappedCanvasMutationEmit,\n                fontCb: (p) => wrappedEmit({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source: IncrementalSource.Font,\n                        ...p,\n                    },\n                }),\n                selectionCb: (p) => {\n                    wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: {\n                            source: IncrementalSource.Selection,\n                            ...p,\n                        },\n                    });\n                },\n                customElementCb: (c) => {\n                    wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: {\n                            source: IncrementalSource.CustomElement,\n                            ...c,\n                        },\n                    });\n                },\n                blockClass,\n                ignoreClass,\n                ignoreSelector,\n                maskAllText,\n                maskTextClass,\n                unmaskTextClass,\n                maskTextSelector,\n                unmaskTextSelector,\n                maskInputOptions,\n                inlineStylesheet,\n                sampling,\n                recordCanvas,\n                inlineImages,\n                userTriggeredOnInput,\n                collectFonts,\n                doc,\n                maskAttributeFn,\n                maskInputFn,\n                maskTextFn,\n                keepIframeSrcFn,\n                blockSelector,\n                unblockSelector,\n                slimDOMOptions,\n                dataURLOptions,\n                mirror,\n                iframeManager,\n                stylesheetManager,\n                shadowDomManager,\n                processedNodeManager,\n                canvasManager,\n                ignoreCSSAttributes,\n                plugins: _optionalChain([plugins\n, 'optionalAccess', _5 => _5.filter, 'call', _6 => _6((p) => p.observer)\n, 'optionalAccess', _7 => _7.map, 'call', _8 => _8((p) => ({\n                    observer: p.observer,\n                    options: p.options,\n                    callback: (payload) => wrappedEmit({\n                        type: EventType.Plugin,\n                        data: {\n                            plugin: p.name,\n                            payload,\n                        },\n                    }),\n                }))]) || [],\n            }, {});\n        };\n        iframeManager.addLoadListener((iframeEl) => {\n            try {\n                handlers.push(observe(iframeEl.contentDocument));\n            }\n            catch (error) {\n                console.warn(error);\n            }\n        });\n        const init = () => {\n            takeFullSnapshot();\n            handlers.push(observe(document));\n        };\n        if (document.readyState === 'interactive' ||\n            document.readyState === 'complete') {\n            init();\n        }\n        else {\n            handlers.push(on('DOMContentLoaded', () => {\n                wrappedEmit({\n                    type: EventType.DomContentLoaded,\n                    data: {},\n                });\n                if (recordAfter === 'DOMContentLoaded')\n                    init();\n            }));\n            handlers.push(on('load', () => {\n                wrappedEmit({\n                    type: EventType.Load,\n                    data: {},\n                });\n                if (recordAfter === 'load')\n                    init();\n            }, window));\n        }\n        return () => {\n            handlers.forEach((h) => h());\n            processedNodeManager.destroy();\n            _takeFullSnapshot = undefined;\n            unregisterErrorHandler();\n        };\n    }\n    catch (error) {\n        console.warn(error);\n    }\n}\nfunction takeFullSnapshot(isCheckout) {\n    if (!_takeFullSnapshot) {\n        throw new Error('please take full snapshot after start recording');\n    }\n    _takeFullSnapshot(isCheckout);\n}\nrecord.mirror = mirror;\nrecord.takeFullSnapshot = takeFullSnapshot;\nfunction _getCanvasManager(getCanvasManagerFn, options) {\n    try {\n        return getCanvasManagerFn\n            ? getCanvasManagerFn(options)\n            : new CanvasManagerNoop();\n    }\n    catch (e2) {\n        console.warn('Unable to initialize CanvasManager');\n        return new CanvasManagerNoop();\n    }\n}\n\nconst ReplayEventTypeIncrementalSnapshot = 3;\nconst ReplayEventTypeCustom = 5;\n\n/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nfunction timestampToMs(timestamp) {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp : timestamp * 1000;\n}\n\n/**\n * Converts a timestamp to s, if it was in ms, or keeps it as s.\n */\nfunction timestampToS(timestamp) {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Add a breadcrumb event to replay.\n */\nfunction addBreadcrumbEvent(replay, breadcrumb) {\n  if (breadcrumb.category === 'sentry.transaction') {\n    return;\n  }\n\n  if (['ui.click', 'ui.input'].includes(breadcrumb.category )) {\n    replay.triggerUserActivity();\n  } else {\n    replay.checkAndHandleExpiredSession();\n  }\n\n  replay.addUpdate(() => {\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    replay.throttledAddEvent({\n      type: EventType.Custom,\n      // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n      // but maybe we should just keep them as milliseconds\n      timestamp: (breadcrumb.timestamp || 0) * 1000,\n      data: {\n        tag: 'breadcrumb',\n        // normalize to max. 10 depth and 1_000 properties per object\n        payload: normalize(breadcrumb, 10, 1000),\n      },\n    });\n\n    // Do not flush after console log messages\n    return breadcrumb.category === 'console';\n  });\n}\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/** Get the closest interactive parent element, or else return the given element. */\nfunction getClosestInteractive(element) {\n  const closestInteractive = element.closest(INTERACTIVE_SELECTOR);\n  return closestInteractive || element;\n}\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in <button><img></button>,\n * The target will be the image, not the button, which we don't want here\n */\nfunction getClickTargetNode(event) {\n  const target = getTargetNode(event);\n\n  if (!target || !(target instanceof Element)) {\n    return target;\n  }\n\n  return getClosestInteractive(target);\n}\n\n/** Get the event target node. */\nfunction getTargetNode(event) {\n  if (isEventWithTarget(event)) {\n    return event.target ;\n  }\n\n  return event;\n}\n\nfunction isEventWithTarget(event) {\n  return typeof event === 'object' && !!event && 'target' in event;\n}\n\nlet handlers;\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nfunction onWindowOpen(cb) {\n  // Ensure to only register this once\n  if (!handlers) {\n    handlers = [];\n    monkeyPatchWindowOpen();\n  }\n\n  handlers.push(cb);\n\n  return () => {\n    const pos = handlers ? handlers.indexOf(cb) : -1;\n    if (pos > -1) {\n      (handlers ).splice(pos, 1);\n    }\n  };\n}\n\nfunction monkeyPatchWindowOpen() {\n  fill(WINDOW, 'open', function (originalWindowOpen) {\n    return function (...args) {\n      if (handlers) {\n        try {\n          handlers.forEach(handler => handler());\n        } catch (e) {\n          // ignore errors in here\n        }\n      }\n\n      return originalWindowOpen.apply(WINDOW, args);\n    };\n  });\n}\n\n/** Handle a click. */\nfunction handleClick(clickDetector, clickBreadcrumb, node) {\n  clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nclass ClickDetector  {\n  // protected for testing\n\n   constructor(\n    replay,\n    slowClickConfig,\n    // Just for easier testing\n    _addBreadcrumbEvent = addBreadcrumbEvent,\n  ) {\n    this._lastMutation = 0;\n    this._lastScroll = 0;\n    this._clicks = [];\n\n    // We want everything in s, but options are in ms\n    this._timeout = slowClickConfig.timeout / 1000;\n    this._threshold = slowClickConfig.threshold / 1000;\n    this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n    this._replay = replay;\n    this._ignoreSelector = slowClickConfig.ignoreSelector;\n    this._addBreadcrumbEvent = _addBreadcrumbEvent;\n  }\n\n  /** Register click detection handlers on mutation or scroll. */\n   addListeners() {\n    const cleanupWindowOpen = onWindowOpen(() => {\n      // Treat window.open as mutation\n      this._lastMutation = nowInSeconds();\n    });\n\n    this._teardown = () => {\n      cleanupWindowOpen();\n\n      this._clicks = [];\n      this._lastMutation = 0;\n      this._lastScroll = 0;\n    };\n  }\n\n  /** Clean up listeners. */\n   removeListeners() {\n    if (this._teardown) {\n      this._teardown();\n    }\n\n    if (this._checkClickTimeout) {\n      clearTimeout(this._checkClickTimeout);\n    }\n  }\n\n  /** @inheritDoc */\n   handleClick(breadcrumb, node) {\n    if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n      return;\n    }\n\n    const newClick = {\n      timestamp: timestampToS(breadcrumb.timestamp),\n      clickBreadcrumb: breadcrumb,\n      // Set this to 0 so we know it originates from the click breadcrumb\n      clickCount: 0,\n      node,\n    };\n\n    // If there was a click in the last 1s on the same element, ignore it - only keep a single reference per second\n    if (\n      this._clicks.some(click => click.node === newClick.node && Math.abs(click.timestamp - newClick.timestamp) < 1)\n    ) {\n      return;\n    }\n\n    this._clicks.push(newClick);\n\n    // If this is the first new click, set a timeout to check for multi clicks\n    if (this._clicks.length === 1) {\n      this._scheduleCheckClicks();\n    }\n  }\n\n  /** @inheritDoc */\n   registerMutation(timestamp = Date.now()) {\n    this._lastMutation = timestampToS(timestamp);\n  }\n\n  /** @inheritDoc */\n   registerScroll(timestamp = Date.now()) {\n    this._lastScroll = timestampToS(timestamp);\n  }\n\n  /** @inheritDoc */\n   registerClick(element) {\n    const node = getClosestInteractive(element);\n    this._handleMultiClick(node );\n  }\n\n  /** Count multiple clicks on elements. */\n   _handleMultiClick(node) {\n    this._getClicks(node).forEach(click => {\n      click.clickCount++;\n    });\n  }\n\n  /** Get all pending clicks for a given node. */\n   _getClicks(node) {\n    return this._clicks.filter(click => click.node === node);\n  }\n\n  /** Check the clicks that happened. */\n   _checkClicks() {\n    const timedOutClicks = [];\n\n    const now = nowInSeconds();\n\n    this._clicks.forEach(click => {\n      if (!click.mutationAfter && this._lastMutation) {\n        click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n      }\n      if (!click.scrollAfter && this._lastScroll) {\n        click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n      }\n\n      // All of these are in seconds!\n      if (click.timestamp + this._timeout <= now) {\n        timedOutClicks.push(click);\n      }\n    });\n\n    // Remove \"old\" clicks\n    for (const click of timedOutClicks) {\n      const pos = this._clicks.indexOf(click);\n\n      if (pos > -1) {\n        this._generateBreadcrumbs(click);\n        this._clicks.splice(pos, 1);\n      }\n    }\n\n    // Trigger new check, unless no clicks left\n    if (this._clicks.length) {\n      this._scheduleCheckClicks();\n    }\n  }\n\n  /** Generate matching breadcrumb(s) for the click. */\n   _generateBreadcrumbs(click) {\n    const replay = this._replay;\n    const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n    const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n    const isSlowClick = !hadScroll && !hadMutation;\n    const { clickCount, clickBreadcrumb } = click;\n\n    // Slow click\n    if (isSlowClick) {\n      // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n      // If not, it means we just timed out without scroll & mutation\n      const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n      const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n      const breadcrumb = {\n        type: 'default',\n        message: clickBreadcrumb.message,\n        timestamp: clickBreadcrumb.timestamp,\n        category: 'ui.slowClickDetected',\n        data: {\n          ...clickBreadcrumb.data,\n          url: WINDOW.location.href,\n          route: replay.getCurrentRoute(),\n          timeAfterClickMs,\n          endReason,\n          // If clickCount === 0, it means multiClick was not correctly captured here\n          // - we still want to send 1 in this case\n          clickCount: clickCount || 1,\n        },\n      };\n\n      this._addBreadcrumbEvent(replay, breadcrumb);\n      return;\n    }\n\n    // Multi click\n    if (clickCount > 1) {\n      const breadcrumb = {\n        type: 'default',\n        message: clickBreadcrumb.message,\n        timestamp: clickBreadcrumb.timestamp,\n        category: 'ui.multiClick',\n        data: {\n          ...clickBreadcrumb.data,\n          url: WINDOW.location.href,\n          route: replay.getCurrentRoute(),\n          clickCount,\n          metric: true,\n        },\n      };\n\n      this._addBreadcrumbEvent(replay, breadcrumb);\n    }\n  }\n\n  /** Schedule to check current clicks. */\n   _scheduleCheckClicks() {\n    if (this._checkClickTimeout) {\n      clearTimeout(this._checkClickTimeout);\n    }\n\n    this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n  }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nfunction ignoreElement(node, ignoreSelector) {\n  if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n    return true;\n  }\n\n  // If <input> tag, we only want to consider input[type='submit'] & input[type='button']\n  if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n    return true;\n  }\n\n  // If <a> tag, detect special variants that may not lead to an action\n  // If target !== _self, we may open the link somewhere else, which would lead to no action\n  // Also, when downloading a file, we may not leave the page, but still not trigger an action\n  if (\n    node.tagName === 'A' &&\n    (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n  ) {\n    return true;\n  }\n\n  if (ignoreSelector && node.matches(ignoreSelector)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb) {\n  return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds() {\n  return Date.now() / 1000;\n}\n\n/** Update the click detector based on a recording event of rrweb. */\nfunction updateClickDetectorForRecordingEvent(clickDetector, event) {\n  try {\n    // note: We only consider incremental snapshots here\n    // This means that any full snapshot is ignored for mutation detection - the reason is that we simply cannot know if a mutation happened here.\n    // E.g. think that we are buffering, an error happens and we take a full snapshot because we switched to session mode -\n    // in this scenario, we would not know if a dead click happened because of the error, which is a key dead click scenario.\n    // Instead, by ignoring full snapshots, we have the risk that we generate a false positive\n    // (if a mutation _did_ happen but was \"swallowed\" by the full snapshot)\n    // But this should be more unlikely as we'd generally capture the incremental snapshot right away\n\n    if (!isIncrementalEvent(event)) {\n      return;\n    }\n\n    const { source } = event.data;\n    if (source === IncrementalSource.Mutation) {\n      clickDetector.registerMutation(event.timestamp);\n    }\n\n    if (source === IncrementalSource.Scroll) {\n      clickDetector.registerScroll(event.timestamp);\n    }\n\n    if (isIncrementalMouseInteraction(event)) {\n      const { type, id } = event.data;\n      const node = record.mirror.getNode(id);\n\n      if (node instanceof HTMLElement && type === MouseInteractions.Click) {\n        clickDetector.registerClick(node);\n      }\n    }\n  } catch (e) {\n    // ignore errors here, e.g. if accessing something that does not exist\n  }\n}\n\nfunction isIncrementalEvent(event) {\n  return event.type === ReplayEventTypeIncrementalSnapshot;\n}\n\nfunction isIncrementalMouseInteraction(\n  event,\n) {\n  return event.data.source === IncrementalSource.MouseInteraction;\n}\n\n/**\n * Create a breadcrumb for a replay.\n */\nfunction createBreadcrumb(\n  breadcrumb,\n) {\n  return {\n    timestamp: Date.now() / 1000,\n    type: 'default',\n    ...breadcrumb,\n  };\n}\n\nvar NodeType;\n(function (NodeType) {\n    NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n    NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n    NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n    NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n    NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n    NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\n// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n  'id',\n  'class',\n  'aria-label',\n  'role',\n  'name',\n  'alt',\n  'title',\n  'data-test-id',\n  'data-testid',\n  'disabled',\n  'aria-disabled',\n  'data-sentry-component',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nfunction getAttributesToRecord(attributes) {\n  const obj = {};\n  for (const key in attributes) {\n    if (ATTRIBUTES_TO_RECORD.has(key)) {\n      let normalizedKey = key;\n\n      if (key === 'data-testid' || key === 'data-test-id') {\n        normalizedKey = 'testId';\n      }\n\n      obj[normalizedKey] = attributes[key];\n    }\n  }\n\n  return obj;\n}\n\nconst handleDomListener = (\n  replay,\n) => {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleDom(handlerData);\n\n    if (!result) {\n      return;\n    }\n\n    const isClick = handlerData.name === 'click';\n    const event = isClick ? (handlerData.event ) : undefined;\n    // Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)\n    if (\n      isClick &&\n      replay.clickDetector &&\n      event &&\n      event.target &&\n      !event.altKey &&\n      !event.metaKey &&\n      !event.ctrlKey &&\n      !event.shiftKey\n    ) {\n      handleClick(\n        replay.clickDetector,\n        result ,\n        getClickTargetNode(handlerData.event ) ,\n      );\n    }\n\n    addBreadcrumbEvent(replay, result);\n  };\n};\n\n/** Get the base DOM breadcrumb. */\nfunction getBaseDomBreadcrumb(target, message) {\n  const nodeId = record.mirror.getId(target);\n  const node = nodeId && record.mirror.getNode(nodeId);\n  const meta = node && record.mirror.getMeta(node);\n  const element = meta && isElement(meta) ? meta : null;\n\n  return {\n    message,\n    data: element\n      ? {\n          nodeId,\n          node: {\n            id: nodeId,\n            tagName: element.tagName,\n            textContent: Array.from(element.childNodes)\n              .map((node) => node.type === NodeType.Text && node.textContent)\n              .filter(Boolean) // filter out empty values\n              .map(text => (text ).trim())\n              .join(''),\n            attributes: getAttributesToRecord(element.attributes),\n          },\n        }\n      : {},\n  };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nfunction handleDom(handlerData) {\n  const { target, message } = getDomTarget(handlerData);\n\n  return createBreadcrumb({\n    category: `ui.${handlerData.name}`,\n    ...getBaseDomBreadcrumb(target, message),\n  });\n}\n\nfunction getDomTarget(handlerData) {\n  const isClick = handlerData.name === 'click';\n\n  let message;\n  let target = null;\n\n  // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n  try {\n    target = isClick ? getClickTargetNode(handlerData.event ) : getTargetNode(handlerData.event );\n    message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n  } catch (e) {\n    message = '<unknown>';\n  }\n\n  return { target, message };\n}\n\nfunction isElement(node) {\n  return node.type === NodeType.Element;\n}\n\n/** Handle keyboard events & create breadcrumbs. */\nfunction handleKeyboardEvent(replay, event) {\n  if (!replay.isEnabled()) {\n    return;\n  }\n\n  // Update user activity, but do not restart recording as it can create\n  // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n  // session with a single \"keydown\" breadcrumb is created)\n  replay.updateUserActivity();\n\n  const breadcrumb = getKeyboardBreadcrumb(event);\n\n  if (!breadcrumb) {\n    return;\n  }\n\n  addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nfunction getKeyboardBreadcrumb(event) {\n  const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n  // never capture for input fields\n  if (!target || isInputElement(target ) || !key) {\n    return null;\n  }\n\n  // Note: We do not consider shift here, as that means \"uppercase\"\n  const hasModifierKey = metaKey || ctrlKey || altKey;\n  const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n  // Do not capture breadcrumb if only a word key is pressed\n  // This could leak e.g. user input\n  if (!hasModifierKey && isCharacterKey) {\n    return null;\n  }\n\n  const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n  const baseBreadcrumb = getBaseDomBreadcrumb(target , message);\n\n  return createBreadcrumb({\n    category: 'ui.keyDown',\n    message,\n    data: {\n      ...baseBreadcrumb.data,\n      metaKey,\n      shiftKey,\n      ctrlKey,\n      altKey,\n      key,\n    },\n  });\n}\n\nfunction isInputElement(target) {\n  return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n\n// Map entryType -> function to normalize data for event\nconst ENTRY_TYPES\n\n = {\n  // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n  resource: createResourceEntry,\n  paint: createPaintEntry,\n  // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n  navigation: createNavigationEntry,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nfunction createPerformanceEntries(\n  entries,\n) {\n  return entries.map(createPerformanceEntry).filter(Boolean) ;\n}\n\nfunction createPerformanceEntry(entry) {\n  if (!ENTRY_TYPES[entry.entryType]) {\n    return null;\n  }\n\n  return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time) {\n  // browserPerformanceTimeOrigin can be undefined if `performance` or\n  // `performance.now` doesn't exist, but this is already checked by this integration\n  return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry) {\n  const { duration, entryType, name, startTime } = entry;\n\n  const start = getAbsoluteTime(startTime);\n  return {\n    type: entryType,\n    name,\n    start,\n    end: start + duration,\n    data: undefined,\n  };\n}\n\nfunction createNavigationEntry(entry) {\n  const {\n    entryType,\n    name,\n    decodedBodySize,\n    duration,\n    domComplete,\n    encodedBodySize,\n    domContentLoadedEventStart,\n    domContentLoadedEventEnd,\n    domInteractive,\n    loadEventStart,\n    loadEventEnd,\n    redirectCount,\n    startTime,\n    transferSize,\n    type,\n  } = entry;\n\n  // Ignore entries with no duration, they do not seem to be useful and cause dupes\n  if (duration === 0) {\n    return null;\n  }\n\n  return {\n    type: `${entryType}.${type}`,\n    start: getAbsoluteTime(startTime),\n    end: getAbsoluteTime(domComplete),\n    name,\n    data: {\n      size: transferSize,\n      decodedBodySize,\n      encodedBodySize,\n      duration,\n      domInteractive,\n      domContentLoadedEventStart,\n      domContentLoadedEventEnd,\n      loadEventStart,\n      loadEventEnd,\n      domComplete,\n      redirectCount,\n    },\n  };\n}\n\nfunction createResourceEntry(\n  entry,\n) {\n  const {\n    entryType,\n    initiatorType,\n    name,\n    responseEnd,\n    startTime,\n    decodedBodySize,\n    encodedBodySize,\n    responseStatus,\n    transferSize,\n  } = entry;\n\n  // Core SDK handles these\n  if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n    return null;\n  }\n\n  return {\n    type: `${entryType}.${initiatorType}`,\n    start: getAbsoluteTime(startTime),\n    end: getAbsoluteTime(responseEnd),\n    name,\n    data: {\n      size: transferSize,\n      statusCode: responseStatus,\n      decodedBodySize,\n      encodedBodySize,\n    },\n  };\n}\n\n/**\n * Add a LCP event to the replay based on an LCP metric.\n */\nfunction getLargestContentfulPaint(metric\n\n) {\n  const entries = metric.entries;\n  const lastEntry = entries[entries.length - 1] ;\n  const element = lastEntry ? lastEntry.element : undefined;\n\n  const value = metric.value;\n\n  const end = getAbsoluteTime(value);\n\n  const data = {\n    type: 'largest-contentful-paint',\n    name: 'largest-contentful-paint',\n    start: end,\n    end,\n    data: {\n      value,\n      size: value,\n      nodeId: element ? record.mirror.getId(element) : undefined,\n    },\n  };\n\n  return data;\n}\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n * Returns a callback to stop observing.\n */\nfunction setupPerformanceObserver(replay) {\n  function addPerformanceEntry(entry) {\n    // It is possible for entries to come up multiple times\n    if (!replay.performanceEntries.includes(entry)) {\n      replay.performanceEntries.push(entry);\n    }\n  }\n\n  function onEntries({ entries }) {\n    entries.forEach(addPerformanceEntry);\n  }\n\n  const clearCallbacks = [];\n\n  (['navigation', 'paint', 'resource'] ).forEach(type => {\n    clearCallbacks.push(addPerformanceInstrumentationHandler(type, onEntries));\n  });\n\n  clearCallbacks.push(\n    addLcpInstrumentationHandler(({ metric }) => {\n      replay.replayPerformanceEntries.push(getLargestContentfulPaint(metric));\n    }),\n  );\n\n  // A callback to cleanup all handlers\n  return () => {\n    clearCallbacks.forEach(clearCallback => clearCallback());\n  };\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nconst r = `var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([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]),i=new t([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]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<<t[a-1];var s=new r(i[30]);for(a=1;a<30;++a)for(var o=i[a];o<i[a+1];++o)s[o]=o-i[a]<<5|a;return{b:i,r:s}},o=s(e,2),f=o.b,h=o.r;f[28]=258,h[258]=28;for(var l=s(i,0).r,u=new n(32768),c=0;c<32768;++c){var v=(43690&c)>>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a<i;++a)t[a]&&++s[t[a]-1];var o,f=new n(r);for(a=1;a<r;++a)f[a]=f[a-1]+s[a-1]<<1;if(e){o=new n(1<<r);var h=15-r;for(a=0;a<i;++a)if(t[a])for(var l=a<<4|t[a],c=r-t[a],v=f[t[a]-1]++<<c,d=v|(1<<c)-1;v<=d;++v)o[u[v]>>h]=l}else for(o=new n(i),a=0;a<i;++a)t[a]&&(o[a]=u[f[t[a]-1]++]>>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=[\"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\"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;a<r.length;++a)r[a]&&i.push({s:a,f:r[a]});var s=i.length,o=i.slice();if(!s)return{t:F,l:0};if(1==s){var f=new t(i[0].s+1);return f[i[0].s]=1,{t:f,l:1}}i.sort((function(t,n){return t.f-n.f})),i.push({s:-1,f:25001});var h=i[0],l=i[1],u=0,c=1,v=2;for(i[0]={s:-1,f:h.f+l.f,l:h,r:l};c!=s-1;)h=i[i[u].f<i[v].f?u++:v++],l=i[u!=c&&i[u].f<i[v].f?u++:v++],i[c++]={s:-1,f:h.f+l.f,l:h,r:l};var d=o[0].s;for(a=1;a<s;++a)o[a].s>d&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<<y;for(o.sort((function(t,n){return g[n.s]-g[t.s]||t.f-n.f}));a<s;++a){var b=o[a].s;if(!(g[b]>e))break;p+=m-(1<<w-g[b]),g[b]=e}for(p>>=y;p>0;){var M=o[a].s;g[M]<e?p-=1<<e-g[M]++-1:++a}for(;a>=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},k=function(t,n,r){var e=r.length,i=m(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 a=0;a<e;++a)t[i+a+4]=r[a];return 8*(i+4+e)},C=function(t,r,s,o,f,h,l,u,c,v,m){z(r,m++,s),++f[256];for(var b=_(f,15),M=b.t,E=b.l,x=_(h,15),C=x.t,U=x.l,F=D(M),I=F.c,S=F.n,L=D(C),O=L.c,j=L.n,q=new n(19),B=0;B<I.length;++B)++q[31&I[B]];for(B=0;B<O.length;++B)++q[31&O[B]];for(var G=_(q,7),H=G.t,J=G.l,K=19;K>4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X<W)),m+=2,X<W){N=d(M,E,0),P=M,Q=d(C,U,0),R=C;var Y=d(H,J,0);z(r,m,S-257),z(r,m+5,j-1),z(r,m+10,K-4),m+=14;for(B=0;B<K;++B)z(r,m+3*B,H[a[B]]);m+=3*K;for(var Z=[I,O],$=0;$<2;++$){var tt=Z[$];for(B=0;B<tt.length;++B){var nt=31&tt[B];z(r,m,Y[nt]),m+=H[nt],nt>15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B<u;++B){var rt=o[B];if(rt>255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=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}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s<o;++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}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<<o)-1,A=c.p||new n(32768),_=c.h||new n(z+1),x=Math.ceil(o/3),D=2*x,T=function(t){return(a[t]^a[t+1]<<x^a[t+2]<<D)&z},F=new r(25e3),I=new n(288),S=new n(32),L=0,O=0,j=c.i||0,q=0,B=c.w||0,G=0;j+2<v;++j){var H=T(j),J=32767&j,K=_[H];if(A[J]=K,_[H]=J,B<=j){var N=v-j;if((L>7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$<Z&&a[j+$]==a[j+$-W];++$);if($>Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;P<tt;++P){var rt=j-W+P&32767,et=rt-A[rt]&32767;et>nt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j<v;++j)F[q++]=a[j],++I[a[j]];p=C(a,g,w,F,I,S,O,q,G,j-G,p),w||(c.r=7&p|g[p/8|0]<<3,p-=7,c.h=_,c.p=A,c.i=j,c.w=B)}else{for(j=c.w||0;j<v+w;j+=65535){var st=j+65535;st>=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if(\"function\"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(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 n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.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)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=I[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return 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&&O(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)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(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=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G=\"undefined\"!=typeof TextEncoder&&new TextEncoder,H=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i<n.length;++i)e[i]=n.charCodeAt(i);return e}if(G)return G.encode(n);var a=n.length,s=new t(n.length+(n.length>>1)),o=0,f=function(t){s[o++]=t};for(i=0;i<a;++i){if(o+5>s.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const n=this._hasEvents?\",\":\"\";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push(\"]\",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r<e;r++)n+=t[r].length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n<i;n++){const i=t[n];r.set(i,e),e+=i.length}return r}(this._deflatedData);return this._init(),t}_init(){this._hasEvents=!1,this._deflatedData=[],this.deflate=new B,this.deflate.ondata=(t,n)=>{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push(\"[\")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener(\"message\",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&\"function\"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n\nfunction e(){const e=new Blob([r]);return URL.createObjectURL(e)}\n\n/**\n * Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.\n */\nfunction logInfo(message, shouldAddBreadcrumb) {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  logger.info(message);\n\n  if (shouldAddBreadcrumb) {\n    addLogBreadcrumb(message);\n  }\n}\n\n/**\n * Log a message, and add a breadcrumb in the next tick.\n * This is necessary when the breadcrumb may be added before the replay is initialized.\n */\nfunction logInfoNextTick(message, shouldAddBreadcrumb) {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  logger.info(message);\n\n  if (shouldAddBreadcrumb) {\n    // Wait a tick here to avoid race conditions for some initial logs\n    // which may be added before replay is initialized\n    setTimeout(() => {\n      addLogBreadcrumb(message);\n    }, 0);\n  }\n}\n\nfunction addLogBreadcrumb(message) {\n  addBreadcrumb(\n    {\n      category: 'console',\n      data: {\n        logger: 'replay',\n      },\n      level: 'info',\n      message,\n    },\n    { level: 'info' },\n  );\n}\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nclass EventBufferSizeExceededError extends Error {\n   constructor() {\n    super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n  }\n}\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nclass EventBufferArray  {\n  /** All the events that are buffered to be sent. */\n\n  /** @inheritdoc */\n\n   constructor() {\n    this.events = [];\n    this._totalSize = 0;\n    this.hasCheckout = false;\n  }\n\n  /** @inheritdoc */\n   get hasEvents() {\n    return this.events.length > 0;\n  }\n\n  /** @inheritdoc */\n   get type() {\n    return 'sync';\n  }\n\n  /** @inheritdoc */\n   destroy() {\n    this.events = [];\n  }\n\n  /** @inheritdoc */\n   async addEvent(event) {\n    const eventSize = JSON.stringify(event).length;\n    this._totalSize += eventSize;\n    if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n      throw new EventBufferSizeExceededError();\n    }\n\n    this.events.push(event);\n  }\n\n  /** @inheritdoc */\n   finish() {\n    return new Promise(resolve => {\n      // Make a copy of the events array reference and immediately clear the\n      // events member so that we do not lose new events while uploading\n      // attachment.\n      const eventsRet = this.events;\n      this.clear();\n      resolve(JSON.stringify(eventsRet));\n    });\n  }\n\n  /** @inheritdoc */\n   clear() {\n    this.events = [];\n    this._totalSize = 0;\n    this.hasCheckout = false;\n  }\n\n  /** @inheritdoc */\n   getEarliestTimestamp() {\n    const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n    if (!timestamp) {\n      return null;\n    }\n\n    return timestampToMs(timestamp);\n  }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass WorkerHandler {\n\n   constructor(worker) {\n    this._worker = worker;\n    this._id = 0;\n  }\n\n  /**\n   * Ensure the worker is ready (or not).\n   * This will either resolve when the worker is ready, or reject if an error occured.\n   */\n   ensureReady() {\n    // Ensure we only check once\n    if (this._ensureReadyPromise) {\n      return this._ensureReadyPromise;\n    }\n\n    this._ensureReadyPromise = new Promise((resolve, reject) => {\n      this._worker.addEventListener(\n        'message',\n        ({ data }) => {\n          if ((data ).success) {\n            resolve();\n          } else {\n            reject();\n          }\n        },\n        { once: true },\n      );\n\n      this._worker.addEventListener(\n        'error',\n        error => {\n          reject(error);\n        },\n        { once: true },\n      );\n    });\n\n    return this._ensureReadyPromise;\n  }\n\n  /**\n   * Destroy the worker.\n   */\n   destroy() {\n    logInfo('[Replay] Destroying compression worker');\n    this._worker.terminate();\n  }\n\n  /**\n   * Post message to worker and wait for response before resolving promise.\n   */\n   postMessage(method, arg) {\n    const id = this._getAndIncrementId();\n\n    return new Promise((resolve, reject) => {\n      const listener = ({ data }) => {\n        const response = data ;\n        if (response.method !== method) {\n          return;\n        }\n\n        // There can be multiple listeners for a single method, the id ensures\n        // that the response matches the caller.\n        if (response.id !== id) {\n          return;\n        }\n\n        // At this point, we'll always want to remove listener regardless of result status\n        this._worker.removeEventListener('message', listener);\n\n        if (!response.success) {\n          // TODO: Do some error handling, not sure what\n          DEBUG_BUILD && logger.error('[Replay]', response.response);\n\n          reject(new Error('Error in compression worker'));\n          return;\n        }\n\n        resolve(response.response );\n      };\n\n      // Note: we can't use `once` option because it's possible it needs to\n      // listen to multiple messages\n      this._worker.addEventListener('message', listener);\n      this._worker.postMessage({ id, method, arg });\n    });\n  }\n\n  /** Get the current ID and increment it for the next call. */\n   _getAndIncrementId() {\n    return this._id++;\n  }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass EventBufferCompressionWorker  {\n  /** @inheritdoc */\n\n   constructor(worker) {\n    this._worker = new WorkerHandler(worker);\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n    this.hasCheckout = false;\n  }\n\n  /** @inheritdoc */\n   get hasEvents() {\n    return !!this._earliestTimestamp;\n  }\n\n  /** @inheritdoc */\n   get type() {\n    return 'worker';\n  }\n\n  /**\n   * Ensure the worker is ready (or not).\n   * This will either resolve when the worker is ready, or reject if an error occured.\n   */\n   ensureReady() {\n    return this._worker.ensureReady();\n  }\n\n  /**\n   * Destroy the event buffer.\n   */\n   destroy() {\n    this._worker.destroy();\n  }\n\n  /**\n   * Add an event to the event buffer.\n   *\n   * Returns true if event was successfuly received and processed by worker.\n   */\n   addEvent(event) {\n    const timestamp = timestampToMs(event.timestamp);\n    if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n      this._earliestTimestamp = timestamp;\n    }\n\n    const data = JSON.stringify(event);\n    this._totalSize += data.length;\n\n    if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n      return Promise.reject(new EventBufferSizeExceededError());\n    }\n\n    return this._sendEventToWorker(data);\n  }\n\n  /**\n   * Finish the event buffer and return the compressed data.\n   */\n   finish() {\n    return this._finishRequest();\n  }\n\n  /** @inheritdoc */\n   clear() {\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n    this.hasCheckout = false;\n\n    // We do not wait on this, as we assume the order of messages is consistent for the worker\n    this._worker.postMessage('clear').then(null, e => {\n      DEBUG_BUILD && logger.warn('[Replay] Sending \"clear\" message to worker failed', e);\n    });\n  }\n\n  /** @inheritdoc */\n   getEarliestTimestamp() {\n    return this._earliestTimestamp;\n  }\n\n  /**\n   * Send the event to the worker.\n   */\n   _sendEventToWorker(data) {\n    return this._worker.postMessage('addEvent', data);\n  }\n\n  /**\n   * Finish the request and return the compressed data from the worker.\n   */\n   async _finishRequest() {\n    const response = await this._worker.postMessage('finish');\n\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n\n    return response;\n  }\n}\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nclass EventBufferProxy  {\n\n   constructor(worker) {\n    this._fallback = new EventBufferArray();\n    this._compression = new EventBufferCompressionWorker(worker);\n    this._used = this._fallback;\n\n    this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n  }\n\n  /** @inheritdoc */\n   get type() {\n    return this._used.type;\n  }\n\n  /** @inheritDoc */\n   get hasEvents() {\n    return this._used.hasEvents;\n  }\n\n  /** @inheritdoc */\n   get hasCheckout() {\n    return this._used.hasCheckout;\n  }\n  /** @inheritdoc */\n   set hasCheckout(value) {\n    this._used.hasCheckout = value;\n  }\n\n  /** @inheritDoc */\n   destroy() {\n    this._fallback.destroy();\n    this._compression.destroy();\n  }\n\n  /** @inheritdoc */\n   clear() {\n    return this._used.clear();\n  }\n\n  /** @inheritdoc */\n   getEarliestTimestamp() {\n    return this._used.getEarliestTimestamp();\n  }\n\n  /**\n   * Add an event to the event buffer.\n   *\n   * Returns true if event was successfully added.\n   */\n   addEvent(event) {\n    return this._used.addEvent(event);\n  }\n\n  /** @inheritDoc */\n   async finish() {\n    // Ensure the worker is loaded, so the sent event is compressed\n    await this.ensureWorkerIsLoaded();\n\n    return this._used.finish();\n  }\n\n  /** Ensure the worker has loaded. */\n   ensureWorkerIsLoaded() {\n    return this._ensureWorkerIsLoadedPromise;\n  }\n\n  /** Actually check if the worker has been loaded. */\n   async _ensureWorkerIsLoaded() {\n    try {\n      await this._compression.ensureReady();\n    } catch (error) {\n      // If the worker fails to load, we fall back to the simple buffer.\n      // Nothing more to do from our side here\n      logInfo('[Replay] Failed to load the compression worker, falling back to simple buffer');\n      return;\n    }\n\n    // Now we need to switch over the array buffer to the compression worker\n    await this._switchToCompressionWorker();\n  }\n\n  /** Switch the used buffer to the compression worker. */\n   async _switchToCompressionWorker() {\n    const { events, hasCheckout } = this._fallback;\n\n    const addEventPromises = [];\n    for (const event of events) {\n      addEventPromises.push(this._compression.addEvent(event));\n    }\n\n    this._compression.hasCheckout = hasCheckout;\n\n    // We switch over to the new buffer immediately - any further events will be added\n    // after the previously buffered ones\n    this._used = this._compression;\n\n    // Wait for original events to be re-added before resolving\n    try {\n      await Promise.all(addEventPromises);\n    } catch (error) {\n      DEBUG_BUILD && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n    }\n  }\n}\n\n/**\n * Create an event buffer for replays.\n */\nfunction createEventBuffer({\n  useCompression,\n  workerUrl: customWorkerUrl,\n}) {\n  if (\n    useCompression &&\n    // eslint-disable-next-line no-restricted-globals\n    window.Worker\n  ) {\n    const worker = _loadWorker(customWorkerUrl);\n\n    if (worker) {\n      return worker;\n    }\n  }\n\n  logInfo('[Replay] Using simple buffer');\n  return new EventBufferArray();\n}\n\nfunction _loadWorker(customWorkerUrl) {\n  try {\n    const workerUrl = customWorkerUrl || _getWorkerUrl();\n\n    if (!workerUrl) {\n      return;\n    }\n\n    logInfo(`[Replay] Using compression worker${customWorkerUrl ? ` from ${customWorkerUrl}` : ''}`);\n    const worker = new Worker(workerUrl);\n    return new EventBufferProxy(worker);\n  } catch (error) {\n    logInfo('[Replay] Failed to create compression worker');\n    // Fall back to use simple event buffer array\n  }\n}\n\nfunction _getWorkerUrl() {\n  if (typeof __SENTRY_EXCLUDE_REPLAY_WORKER__ === 'undefined' || !__SENTRY_EXCLUDE_REPLAY_WORKER__) {\n    return e();\n  }\n\n  return '';\n}\n\n/** If sessionStorage is available. */\nfunction hasSessionStorage() {\n  try {\n    // This can throw, e.g. when being accessed in a sandboxed iframe\n    return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nfunction clearSession(replay) {\n  deleteSession();\n  replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession() {\n  if (!hasSessionStorage()) {\n    return;\n  }\n\n  try {\n    WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n  } catch (e) {\n    // Ignore potential SecurityError exceptions\n  }\n}\n\n/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nfunction isSampled(sampleRate) {\n  if (sampleRate === undefined) {\n    return false;\n  }\n\n  // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n  return Math.random() < sampleRate;\n}\n\n/**\n * Get a session with defaults & applied sampling.\n */\nfunction makeSession(session) {\n  const now = Date.now();\n  const id = session.id || uuid4();\n  // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n  const started = session.started || now;\n  const lastActivity = session.lastActivity || now;\n  const segmentId = session.segmentId || 0;\n  const sampled = session.sampled;\n  const previousSessionId = session.previousSessionId;\n\n  return {\n    id,\n    started,\n    lastActivity,\n    segmentId,\n    sampled,\n    previousSessionId,\n  };\n}\n\n/**\n * Save a session to session storage.\n */\nfunction saveSession(session) {\n  if (!hasSessionStorage()) {\n    return;\n  }\n\n  try {\n    WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n  } catch (e) {\n    // Ignore potential SecurityError exceptions\n  }\n}\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nfunction getSessionSampleType(sessionSampleRate, allowBuffering) {\n  return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nfunction createSession(\n  { sessionSampleRate, allowBuffering, stickySession = false },\n  { previousSessionId } = {},\n) {\n  const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n  const session = makeSession({\n    sampled,\n    previousSessionId,\n  });\n\n  if (stickySession) {\n    saveSession(session);\n  }\n\n  return session;\n}\n\n/**\n * Fetches a session from storage\n */\nfunction fetchSession(traceInternals) {\n  if (!hasSessionStorage()) {\n    return null;\n  }\n\n  try {\n    // This can throw if cookies are disabled\n    const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n    if (!sessionStringFromStorage) {\n      return null;\n    }\n\n    const sessionObj = JSON.parse(sessionStringFromStorage) ;\n\n    logInfoNextTick('[Replay] Loading existing session', traceInternals);\n\n    return makeSession(sessionObj);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nfunction isExpired(\n  initialTime,\n  expiry,\n  targetTime = +new Date(),\n) {\n  // Always expired if < 0\n  if (initialTime === null || expiry === undefined || expiry < 0) {\n    return true;\n  }\n\n  // Never expires if == 0\n  if (expiry === 0) {\n    return false;\n  }\n\n  return initialTime + expiry <= targetTime;\n}\n\n/**\n * Checks to see if session is expired\n */\nfunction isSessionExpired(\n  session,\n  {\n    maxReplayDuration,\n    sessionIdleExpire,\n    targetTime = Date.now(),\n  },\n) {\n  return (\n    // First, check that maximum session length has not been exceeded\n    isExpired(session.started, maxReplayDuration, targetTime) ||\n    // check that the idle timeout has not been exceeded (i.e. user has\n    // performed an action within the last `sessionIdleExpire` ms)\n    isExpired(session.lastActivity, sessionIdleExpire, targetTime)\n  );\n}\n\n/** If the session should be refreshed or not. */\nfunction shouldRefreshSession(\n  session,\n  { sessionIdleExpire, maxReplayDuration },\n) {\n  // If not expired, all good, just keep the session\n  if (!isSessionExpired(session, { sessionIdleExpire, maxReplayDuration })) {\n    return false;\n  }\n\n  // If we are buffering & haven't ever flushed yet, always continue\n  if (session.sampled === 'buffer' && session.segmentId === 0) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Get or create a session, when initializing the replay.\n * Returns a session that may be unsampled.\n */\nfunction loadOrCreateSession(\n  {\n    traceInternals,\n    sessionIdleExpire,\n    maxReplayDuration,\n    previousSessionId,\n  }\n\n,\n  sessionOptions,\n) {\n  const existingSession = sessionOptions.stickySession && fetchSession(traceInternals);\n\n  // No session exists yet, just create a new one\n  if (!existingSession) {\n    logInfoNextTick('[Replay] Creating new session', traceInternals);\n    return createSession(sessionOptions, { previousSessionId });\n  }\n\n  if (!shouldRefreshSession(existingSession, { sessionIdleExpire, maxReplayDuration })) {\n    return existingSession;\n  }\n\n  logInfoNextTick('[Replay] Session in sessionStorage is expired, creating new one...');\n  return createSession(sessionOptions, { previousSessionId: existingSession.id });\n}\n\nfunction isCustomEvent(event) {\n  return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * In contrast to `addEvent`, this does not return a promise & does not wait for the adding of the event to succeed/fail.\n * Instead this returns `true` if we tried to add the event, else false.\n * It returns `false` e.g. if we are paused, disabled, or out of the max replay duration.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nfunction addEventSync(replay, event, isCheckout) {\n  if (!shouldAddEvent(replay, event)) {\n    return false;\n  }\n\n  // This should never reject\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  _addEvent(replay, event, isCheckout);\n\n  return true;\n}\n\n/**\n * Add an event to the event buffer.\n * Resolves to `null` if no event was added, else to `void`.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nfunction addEvent(\n  replay,\n  event,\n  isCheckout,\n) {\n  if (!shouldAddEvent(replay, event)) {\n    return Promise.resolve(null);\n  }\n\n  return _addEvent(replay, event, isCheckout);\n}\n\nasync function _addEvent(\n  replay,\n  event,\n  isCheckout,\n) {\n  if (!replay.eventBuffer) {\n    return null;\n  }\n\n  try {\n    if (isCheckout && replay.recordingMode === 'buffer') {\n      replay.eventBuffer.clear();\n    }\n\n    if (isCheckout) {\n      replay.eventBuffer.hasCheckout = true;\n    }\n\n    const replayOptions = replay.getOptions();\n\n    const eventAfterPossibleCallback = maybeApplyCallback(event, replayOptions.beforeAddRecordingEvent);\n\n    if (!eventAfterPossibleCallback) {\n      return;\n    }\n\n    return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n  } catch (error) {\n    const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n    DEBUG_BUILD && logger.error(error);\n    await replay.stop({ reason });\n\n    const client = getClient();\n\n    if (client) {\n      client.recordDroppedEvent('internal_sdk_error', 'replay');\n    }\n  }\n}\n\n/** Exported only for tests. */\nfunction shouldAddEvent(replay, event) {\n  if (!replay.eventBuffer || replay.isPaused() || !replay.isEnabled()) {\n    return false;\n  }\n\n  const timestampInMs = timestampToMs(event.timestamp);\n\n  // Throw out events that happen more than 5 minutes ago. This can happen if\n  // page has been left open and idle for a long period of time and user\n  // comes back to trigger a new session. The performance entries rely on\n  // `performance.timeOrigin`, which is when the page first opened.\n  if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n    return false;\n  }\n\n  // Throw out events that are +60min from the initial timestamp\n  if (timestampInMs > replay.getContext().initialTimestamp + replay.getOptions().maxReplayDuration) {\n    logInfo(\n      `[Replay] Skipping event with timestamp ${timestampInMs} because it is after maxReplayDuration`,\n      replay.getOptions()._experiments.traceInternals,\n    );\n    return false;\n  }\n\n  return true;\n}\n\nfunction maybeApplyCallback(\n  event,\n  callback,\n) {\n  try {\n    if (typeof callback === 'function' && isCustomEvent(event)) {\n      return callback(event);\n    }\n  } catch (error) {\n    DEBUG_BUILD &&\n      logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);\n    return null;\n  }\n\n  return event;\n}\n\n/** If the event is an error event */\nfunction isErrorEvent(event) {\n  return !event.type;\n}\n\n/** If the event is a transaction event */\nfunction isTransactionEvent(event) {\n  return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nfunction isReplayEvent(event) {\n  return event.type === 'replay_event';\n}\n\n/** If the event is a feedback event */\nfunction isFeedbackEvent(event) {\n  return event.type === 'feedback';\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleAfterSendEvent(replay) {\n  // Custom transports may still be returning `Promise<void>`, which means we cannot expect the status code to be available there\n  // TODO (v8): remove this check as it will no longer be necessary\n  const enforceStatusCode = isBaseTransportSend();\n\n  return (event, sendResponse) => {\n    if (!replay.isEnabled() || (!isErrorEvent(event) && !isTransactionEvent(event))) {\n      return;\n    }\n\n    const statusCode = sendResponse && sendResponse.statusCode;\n\n    // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n    // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n    // If we do use the base transport, we skip if we encountered an non-OK status code\n    if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n      return;\n    }\n\n    if (isTransactionEvent(event)) {\n      handleTransactionEvent(replay, event);\n      return;\n    }\n\n    handleErrorEvent(replay, event);\n  };\n}\n\nfunction handleTransactionEvent(replay, event) {\n  const replayContext = replay.getContext();\n\n  // Collect traceIds in _context regardless of `recordingMode`\n  // In error mode, _context gets cleared on every checkout\n  // We limit to max. 100 transactions linked\n  if (event.contexts && event.contexts.trace && event.contexts.trace.trace_id && replayContext.traceIds.size < 100) {\n    replayContext.traceIds.add(event.contexts.trace.trace_id );\n  }\n}\n\nfunction handleErrorEvent(replay, event) {\n  const replayContext = replay.getContext();\n\n  // Add error to list of errorIds of replay. This is ok to do even if not\n  // sampled because context will get reset at next checkout.\n  // XXX: There is also a race condition where it's possible to capture an\n  // error to Sentry before Replay SDK has loaded, but response returns after\n  // it was loaded, and this gets called.\n  // We limit to max. 100 errors linked\n  if (event.event_id && replayContext.errorIds.size < 100) {\n    replayContext.errorIds.add(event.event_id);\n  }\n\n  // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n  // Need to be very careful that this does not cause an infinite loop\n  if (replay.recordingMode !== 'buffer' || !event.tags || !event.tags.replayId) {\n    return;\n  }\n\n  const { beforeErrorSampling } = replay.getOptions();\n  if (typeof beforeErrorSampling === 'function' && !beforeErrorSampling(event)) {\n    return;\n  }\n\n  setTimeout(() => {\n    // Capture current event buffer as new replay\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    replay.sendBufferedReplayOrFlush();\n  });\n}\n\nfunction isBaseTransportSend() {\n  const client = getClient();\n  if (!client) {\n    return false;\n  }\n\n  const transport = client.getTransport();\n  if (!transport) {\n    return false;\n  }\n\n  return (\n    (transport.send ).__sentry__baseTransport__ || false\n  );\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleBeforeSendEvent(replay) {\n  return (event) => {\n    if (!replay.isEnabled() || !isErrorEvent(event)) {\n      return;\n    }\n\n    handleHydrationError(replay, event);\n  };\n}\n\nfunction handleHydrationError(replay, event) {\n  const exceptionValue = event.exception && event.exception.values && event.exception.values[0].value;\n  if (typeof exceptionValue !== 'string') {\n    return;\n  }\n\n  if (\n    // Only matches errors in production builds of react-dom\n    // Example https://reactjs.org/docs/error-decoder.html?invariant=423\n    exceptionValue.match(/reactjs\\.org\\/docs\\/error-decoder\\.html\\?invariant=(418|419|422|423|425)/) ||\n    // Development builds of react-dom\n    // Error 1: Hydration failed because the initial UI does not match what was rendered on the server.\n    // Error 2: Text content does not match server-rendered HTML. Warning: Text content did not match.\n    exceptionValue.match(/(does not match server-rendered HTML|Hydration failed because)/i)\n  ) {\n    const breadcrumb = createBreadcrumb({\n      category: 'replay.hydrate-error',\n    });\n    addBreadcrumbEvent(replay, breadcrumb);\n  }\n}\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nfunction isRrwebError(event, hint) {\n  if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n    return false;\n  }\n\n  // @ts-expect-error this may be set by rrweb when it finds errors\n  if (hint.originalException && hint.originalException.__rrweb__) {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Add a feedback breadcrumb event to replay.\n */\nfunction addFeedbackBreadcrumb(replay, event) {\n  replay.triggerUserActivity();\n  replay.addUpdate(() => {\n    if (!event.timestamp) {\n      // Ignore events that don't have timestamps (this shouldn't happen, more of a typing issue)\n      // Return true here so that we don't flush\n      return true;\n    }\n\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    replay.throttledAddEvent({\n      type: EventType.Custom,\n      timestamp: event.timestamp * 1000,\n      data: {\n        tag: 'breadcrumb',\n        payload: {\n          timestamp: event.timestamp,\n          type: 'default',\n          category: 'sentry.feedback',\n          data: {\n            feedbackId: event.event_id,\n          },\n        },\n      },\n    } );\n\n    return false;\n  });\n}\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nfunction shouldSampleForBufferEvent(replay, event) {\n  if (replay.recordingMode !== 'buffer') {\n    return false;\n  }\n\n  // ignore this error because otherwise we could loop indefinitely with\n  // trying to capture replay and failing\n  if (event.message === UNABLE_TO_SEND_REPLAY) {\n    return false;\n  }\n\n  // Require the event to be an error event & to have an exception\n  if (!event.exception || event.type) {\n    return false;\n  }\n\n  return isSampled(replay.getOptions().errorSampleRate);\n}\n\n/**\n * Returns a listener to be added to `addEventProcessor(listener)`.\n */\nfunction handleGlobalEventListener(\n  replay,\n  includeAfterSendEventHandling = false,\n) {\n  const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n  return Object.assign(\n    (event, hint) => {\n      // Do nothing if replay has been disabled\n      if (!replay.isEnabled()) {\n        return event;\n      }\n\n      if (isReplayEvent(event)) {\n        // Replays have separate set of breadcrumbs, do not include breadcrumbs\n        // from core SDK\n        delete event.breadcrumbs;\n        return event;\n      }\n\n      // We only want to handle errors, transactions, and feedbacks, nothing else\n      if (!isErrorEvent(event) && !isTransactionEvent(event) && !isFeedbackEvent(event)) {\n        return event;\n      }\n\n      // Ensure we do not add replay_id if the session is expired\n      const isSessionActive = replay.checkAndHandleExpiredSession();\n      if (!isSessionActive) {\n        return event;\n      }\n\n      if (isFeedbackEvent(event)) {\n        // This should never reject\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        replay.flush();\n        event.contexts.feedback.replay_id = replay.getSessionId();\n        // Add a replay breadcrumb for this piece of feedback\n        addFeedbackBreadcrumb(replay, event);\n        return event;\n      }\n\n      // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n      // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n      if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n        DEBUG_BUILD && logger.log('[Replay] Ignoring error from rrweb internals', event);\n        return null;\n      }\n\n      // When in buffer mode, we decide to sample here.\n      // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n      // And convert the buffer session to a full session\n      const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n      // Tag errors if it has been sampled in buffer mode, or if it is session mode\n      // Only tag transactions if in session mode\n      const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n      if (shouldTagReplayId) {\n        event.tags = { ...event.tags, replayId: replay.getSessionId() };\n      }\n\n      // In cases where a custom client is used that does not support the new hooks (yet),\n      // we manually call this hook method here\n      if (afterSendHandler) {\n        // Pretend the error had a 200 response so we always capture it\n        afterSendHandler(event, { statusCode: 200 });\n      }\n\n      return event;\n    },\n    { id: 'Replay' },\n  );\n}\n\n/**\n * Create a \"span\" for each performance entry.\n */\nfunction createPerformanceSpans(\n  replay,\n  entries,\n) {\n  return entries.map(({ type, start, end, name, data }) => {\n    const response = replay.throttledAddEvent({\n      type: EventType.Custom,\n      timestamp: start,\n      data: {\n        tag: 'performanceSpan',\n        payload: {\n          op: type,\n          description: name,\n          startTimestamp: start,\n          endTimestamp: end,\n          data,\n        },\n      },\n    });\n\n    // If response is a string, it means its either THROTTLED or SKIPPED\n    return typeof response === 'string' ? Promise.resolve(null) : response;\n  });\n}\n\nfunction handleHistory(handlerData) {\n  const { from, to } = handlerData;\n\n  const now = Date.now() / 1000;\n\n  return {\n    type: 'navigation.push',\n    start: now,\n    end: now,\n    name: to,\n    data: {\n      previous: from,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addHistoryInstrumentationHandler(listener)`.\n */\nfunction handleHistorySpanListener(replay) {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleHistory(handlerData);\n\n    if (result === null) {\n      return;\n    }\n\n    // Need to collect visited URLs\n    replay.getContext().urls.push(result.name);\n    replay.triggerUserActivity();\n\n    replay.addUpdate(() => {\n      createPerformanceSpans(replay, [result]);\n      // Returning false to flush\n      return false;\n    });\n  };\n}\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nfunction shouldFilterRequest(replay, url) {\n  // If we enabled the `traceInternals` experiment, we want to trace everything\n  if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {\n    return false;\n  }\n\n  return isSentryRequestUrl(url, getClient());\n}\n\n/** Add a performance entry breadcrumb */\nfunction addNetworkBreadcrumb(\n  replay,\n  result,\n) {\n  if (!replay.isEnabled()) {\n    return;\n  }\n\n  if (result === null) {\n    return;\n  }\n\n  if (shouldFilterRequest(replay, result.name)) {\n    return;\n  }\n\n  replay.addUpdate(() => {\n    createPerformanceSpans(replay, [result]);\n    // Returning true will cause `addUpdate` to not flush\n    // We do not want network requests to cause a flush. This will prevent\n    // recurring/polling requests from keeping the replay session alive.\n    return true;\n  });\n}\n\n/** only exported for tests */\nfunction handleFetch(handlerData) {\n  const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n  if (!endTimestamp) {\n    return null;\n  }\n\n  // This is only used as a fallback, so we know the body sizes are never set here\n  const { method, url } = fetchData;\n\n  return {\n    type: 'resource.fetch',\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    name: url,\n    data: {\n      method,\n      statusCode: response ? (response ).status : undefined,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addFetchInstrumentationHandler(listener)`.\n */\nfunction handleFetchSpanListener(replay) {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleFetch(handlerData);\n\n    addNetworkBreadcrumb(replay, result);\n  };\n}\n\n/** only exported for tests */\nfunction handleXhr(handlerData) {\n  const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n  const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n  if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n    return null;\n  }\n\n  // This is only used as a fallback, so we know the body sizes are never set here\n  const { method, url, status_code: statusCode } = sentryXhrData;\n\n  if (url === undefined) {\n    return null;\n  }\n\n  return {\n    type: 'resource.xhr',\n    name: url,\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    data: {\n      method,\n      statusCode,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addXhrInstrumentationHandler(listener)`.\n */\nfunction handleXhrSpanListener(replay) {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleXhr(handlerData);\n\n    addNetworkBreadcrumb(replay, result);\n  };\n}\n\n/** Get the size of a body. */\nfunction getBodySize(\n  body,\n  textEncoder,\n) {\n  if (!body) {\n    return undefined;\n  }\n\n  try {\n    if (typeof body === 'string') {\n      return textEncoder.encode(body).length;\n    }\n\n    if (body instanceof URLSearchParams) {\n      return textEncoder.encode(body.toString()).length;\n    }\n\n    if (body instanceof FormData) {\n      const formDataStr = _serializeFormData(body);\n      return textEncoder.encode(formDataStr).length;\n    }\n\n    if (body instanceof Blob) {\n      return body.size;\n    }\n\n    if (body instanceof ArrayBuffer) {\n      return body.byteLength;\n    }\n\n    // Currently unhandled types: ArrayBufferView, ReadableStream\n  } catch (e) {\n    // just return undefined\n  }\n\n  return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined.  */\nfunction parseContentLengthHeader(header) {\n  if (!header) {\n    return undefined;\n  }\n\n  const size = parseInt(header, 10);\n  return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nfunction getBodyString(body) {\n  try {\n    if (typeof body === 'string') {\n      return [body];\n    }\n\n    if (body instanceof URLSearchParams) {\n      return [body.toString()];\n    }\n\n    if (body instanceof FormData) {\n      return [_serializeFormData(body)];\n    }\n\n    if (!body) {\n      return [undefined];\n    }\n  } catch (e2) {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n\n  DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n  return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\n/** Merge a warning into an existing network request/response. */\nfunction mergeWarning(\n  info,\n  warning,\n) {\n  if (!info) {\n    return {\n      headers: {},\n      size: undefined,\n      _meta: {\n        warnings: [warning],\n      },\n    };\n  }\n\n  const newMeta = { ...info._meta };\n  const existingWarnings = newMeta.warnings || [];\n  newMeta.warnings = [...existingWarnings, warning];\n\n  info._meta = newMeta;\n  return info;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nfunction makeNetworkReplayBreadcrumb(\n  type,\n  data,\n) {\n  if (!data) {\n    return null;\n  }\n\n  const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n  const result = {\n    type,\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    name: url,\n    data: dropUndefinedKeys({\n      method,\n      statusCode,\n      request,\n      response,\n    }),\n  };\n\n  return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nfunction buildSkippedNetworkRequestOrResponse(bodySize) {\n  return {\n    headers: {},\n    size: bodySize,\n    _meta: {\n      warnings: ['URL_SKIPPED'],\n    },\n  };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nfunction buildNetworkRequestOrResponse(\n  headers,\n  bodySize,\n  body,\n) {\n  if (!bodySize && Object.keys(headers).length === 0) {\n    return undefined;\n  }\n\n  if (!bodySize) {\n    return {\n      headers,\n    };\n  }\n\n  if (!body) {\n    return {\n      headers,\n      size: bodySize,\n    };\n  }\n\n  const info = {\n    headers,\n    size: bodySize,\n  };\n\n  const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n  info.body = normalizedBody;\n  if (warnings && warnings.length > 0) {\n    info._meta = {\n      warnings,\n    };\n  }\n\n  return info;\n}\n\n/** Filter a set of headers */\nfunction getAllowedHeaders(headers, allowedHeaders) {\n  return Object.keys(headers).reduce((filteredHeaders, key) => {\n    const normalizedKey = key.toLowerCase();\n    // Avoid putting empty strings into the headers\n    if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n      filteredHeaders[normalizedKey] = headers[key];\n    }\n    return filteredHeaders;\n  }, {});\n}\n\nfunction _serializeFormData(formData) {\n  // This is a bit simplified, but gives us a decent estimate\n  // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n  // @ts-expect-error passing FormData to URLSearchParams actually works\n  return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body)\n\n {\n  if (!body || typeof body !== 'string') {\n    return {\n      body,\n    };\n  }\n\n  const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n  const isProbablyJson = _strIsProbablyJson(body);\n\n  if (exceedsSizeLimit) {\n    const truncatedBody = body.slice(0, NETWORK_BODY_MAX_SIZE);\n\n    if (isProbablyJson) {\n      return {\n        body: truncatedBody,\n        warnings: ['MAYBE_JSON_TRUNCATED'],\n      };\n    }\n\n    return {\n      body: `${truncatedBody}…`,\n      warnings: ['TEXT_TRUNCATED'],\n    };\n  }\n\n  if (isProbablyJson) {\n    try {\n      const jsonBody = JSON.parse(body);\n      return {\n        body: jsonBody,\n      };\n    } catch (e3) {\n      // fall back to just send the body as string\n    }\n  }\n\n  return {\n    body,\n  };\n}\n\nfunction _strIsProbablyJson(str) {\n  const first = str[0];\n  const last = str[str.length - 1];\n\n  // Simple check: If this does not start & end with {} or [], it's not JSON\n  return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nfunction urlMatches(url, urls) {\n  const fullUrl = getFullUrl(url);\n\n  return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nfunction getFullUrl(url, baseURI = WINDOW.document.baseURI) {\n  // Short circuit for common cases:\n  if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n    return url;\n  }\n  const fixedUrl = new URL(url, baseURI);\n\n  // If these do not match, we are not dealing with a relative URL, so just return it\n  if (fixedUrl.origin !== new URL(baseURI).origin) {\n    return url;\n  }\n\n  const fullUrl = fixedUrl.href;\n\n  // Remove trailing slashes, if they don't match the original URL\n  if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n    return fullUrl.slice(0, -1);\n  }\n\n  return fullUrl;\n}\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureFetchBreadcrumbToReplay(\n  breadcrumb,\n  hint,\n  options\n\n,\n) {\n  try {\n    const data = await _prepareFetchData(breadcrumb, hint, options);\n\n    // Create a replay performance entry from this breadcrumb\n    const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n    addNetworkBreadcrumb(options.replay, result);\n  } catch (error) {\n    DEBUG_BUILD && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n  }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichFetchBreadcrumb(\n  breadcrumb,\n  hint,\n  options,\n) {\n  const { input, response } = hint;\n\n  const body = input ? _getFetchRequestArgBody(input) : undefined;\n  const reqSize = getBodySize(body, options.textEncoder);\n\n  const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n  if (reqSize !== undefined) {\n    breadcrumb.data.request_body_size = reqSize;\n  }\n  if (resSize !== undefined) {\n    breadcrumb.data.response_body_size = resSize;\n  }\n}\n\nasync function _prepareFetchData(\n  breadcrumb,\n  hint,\n  options\n\n,\n) {\n  const now = Date.now();\n  const { startTimestamp = now, endTimestamp = now } = hint;\n\n  const {\n    url,\n    method,\n    status_code: statusCode = 0,\n    request_body_size: requestBodySize,\n    response_body_size: responseBodySize,\n  } = breadcrumb.data;\n\n  const captureDetails =\n    urlMatches(url, options.networkDetailAllowUrls) && !urlMatches(url, options.networkDetailDenyUrls);\n\n  const request = captureDetails\n    ? _getRequestInfo(options, hint.input, requestBodySize)\n    : buildSkippedNetworkRequestOrResponse(requestBodySize);\n  const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n  return {\n    startTimestamp,\n    endTimestamp,\n    url,\n    method,\n    statusCode,\n    request,\n    response,\n  };\n}\n\nfunction _getRequestInfo(\n  { networkCaptureBodies, networkRequestHeaders },\n  input,\n  requestBodySize,\n) {\n  const headers = input ? getRequestHeaders(input, networkRequestHeaders) : {};\n\n  if (!networkCaptureBodies) {\n    return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n  }\n\n  // We only want to transmit string or string-like bodies\n  const requestBody = _getFetchRequestArgBody(input);\n  const [bodyStr, warning] = getBodyString(requestBody);\n  const data = buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n\n  if (warning) {\n    return mergeWarning(data, warning);\n  }\n\n  return data;\n}\n\n/** Exported only for tests. */\nasync function _getResponseInfo(\n  captureDetails,\n  {\n    networkCaptureBodies,\n    textEncoder,\n    networkResponseHeaders,\n  }\n\n,\n  response,\n  responseBodySize,\n) {\n  if (!captureDetails && responseBodySize !== undefined) {\n    return buildSkippedNetworkRequestOrResponse(responseBodySize);\n  }\n\n  const headers = response ? getAllHeaders(response.headers, networkResponseHeaders) : {};\n\n  if (!response || (!networkCaptureBodies && responseBodySize !== undefined)) {\n    return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n  }\n\n  const [bodyText, warning] = await _parseFetchResponseBody(response);\n  const result = getResponseData(bodyText, {\n    networkCaptureBodies,\n    textEncoder,\n    responseBodySize,\n    captureDetails,\n    headers,\n  });\n\n  if (warning) {\n    return mergeWarning(result, warning);\n  }\n\n  return result;\n}\n\nfunction getResponseData(\n  bodyText,\n  {\n    networkCaptureBodies,\n    textEncoder,\n    responseBodySize,\n    captureDetails,\n    headers,\n  }\n\n,\n) {\n  try {\n    const size =\n      bodyText && bodyText.length && responseBodySize === undefined\n        ? getBodySize(bodyText, textEncoder)\n        : responseBodySize;\n\n    if (!captureDetails) {\n      return buildSkippedNetworkRequestOrResponse(size);\n    }\n\n    if (networkCaptureBodies) {\n      return buildNetworkRequestOrResponse(headers, size, bodyText);\n    }\n\n    return buildNetworkRequestOrResponse(headers, size, undefined);\n  } catch (error) {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to serialize response body', error);\n    // fallback\n    return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n  }\n}\n\nasync function _parseFetchResponseBody(response) {\n  const res = _tryCloneResponse(response);\n\n  if (!res) {\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n\n  try {\n    const text = await _tryGetResponseText(res);\n    return [text];\n  } catch (error) {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to get text body from response', error);\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs = []) {\n  // We only support getting the body from the fetch options\n  if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n    return undefined;\n  }\n\n  return (fetchArgs[1] ).body;\n}\n\nfunction getAllHeaders(headers, allowedHeaders) {\n  const allHeaders = {};\n\n  allowedHeaders.forEach(header => {\n    if (headers.get(header)) {\n      allHeaders[header] = headers.get(header) ;\n    }\n  });\n\n  return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs, allowedHeaders) {\n  if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n    return getHeadersFromOptions(fetchArgs[0] , allowedHeaders);\n  }\n\n  if (fetchArgs.length === 2) {\n    return getHeadersFromOptions(fetchArgs[1] , allowedHeaders);\n  }\n\n  return {};\n}\n\nfunction getHeadersFromOptions(\n  input,\n  allowedHeaders,\n) {\n  if (!input) {\n    return {};\n  }\n\n  const headers = input.headers;\n\n  if (!headers) {\n    return {};\n  }\n\n  if (headers instanceof Headers) {\n    return getAllHeaders(headers, allowedHeaders);\n  }\n\n  // We do not support this, as it is not really documented (anymore?)\n  if (Array.isArray(headers)) {\n    return {};\n  }\n\n  return getAllowedHeaders(headers, allowedHeaders);\n}\n\nfunction _tryCloneResponse(response) {\n  try {\n    // We have to clone this, as the body can only be read once\n    return response.clone();\n  } catch (error) {\n    // this can throw if the response was already consumed before\n    DEBUG_BUILD && logger.warn('[Replay] Failed to clone response body', error);\n  }\n}\n\n/**\n * Get the response body of a fetch request, or timeout after 500ms.\n * Fetch can return a streaming body, that may not resolve (or not for a long time).\n * If that happens, we rather abort after a short time than keep waiting for this.\n */\nfunction _tryGetResponseText(response) {\n  return new Promise((resolve, reject) => {\n    const timeout = setTimeout(() => reject(new Error('Timeout while trying to read response body')), 500);\n\n    _getResponseText(response)\n      .then(\n        txt => resolve(txt),\n        reason => reject(reason),\n      )\n      .finally(() => clearTimeout(timeout));\n  });\n}\n\nasync function _getResponseText(response) {\n  // Force this to be a promise, just to be safe\n  // eslint-disable-next-line no-return-await\n  return await response.text();\n}\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureXhrBreadcrumbToReplay(\n  breadcrumb,\n  hint,\n  options,\n) {\n  try {\n    const data = _prepareXhrData(breadcrumb, hint, options);\n\n    // Create a replay performance entry from this breadcrumb\n    const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n    addNetworkBreadcrumb(options.replay, result);\n  } catch (error) {\n    DEBUG_BUILD && logger.error('[Replay] Failed to capture xhr breadcrumb', error);\n  }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichXhrBreadcrumb(\n  breadcrumb,\n  hint,\n  options,\n) {\n  const { xhr, input } = hint;\n\n  if (!xhr) {\n    return;\n  }\n\n  const reqSize = getBodySize(input, options.textEncoder);\n  const resSize = xhr.getResponseHeader('content-length')\n    ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n    : _getBodySize(xhr.response, xhr.responseType, options.textEncoder);\n\n  if (reqSize !== undefined) {\n    breadcrumb.data.request_body_size = reqSize;\n  }\n  if (resSize !== undefined) {\n    breadcrumb.data.response_body_size = resSize;\n  }\n}\n\nfunction _prepareXhrData(\n  breadcrumb,\n  hint,\n  options,\n) {\n  const now = Date.now();\n  const { startTimestamp = now, endTimestamp = now, input, xhr } = hint;\n\n  const {\n    url,\n    method,\n    status_code: statusCode = 0,\n    request_body_size: requestBodySize,\n    response_body_size: responseBodySize,\n  } = breadcrumb.data;\n\n  if (!url) {\n    return null;\n  }\n\n  if (!xhr || !urlMatches(url, options.networkDetailAllowUrls) || urlMatches(url, options.networkDetailDenyUrls)) {\n    const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n    const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n    return {\n      startTimestamp,\n      endTimestamp,\n      url,\n      method,\n      statusCode,\n      request,\n      response,\n    };\n  }\n\n  const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n  const networkRequestHeaders = xhrInfo\n    ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n    : {};\n  const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n  const [requestBody, requestWarning] = options.networkCaptureBodies ? getBodyString(input) : [undefined];\n  const [responseBody, responseWarning] = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : [undefined];\n\n  const request = buildNetworkRequestOrResponse(networkRequestHeaders, requestBodySize, requestBody);\n  const response = buildNetworkRequestOrResponse(networkResponseHeaders, responseBodySize, responseBody);\n\n  return {\n    startTimestamp,\n    endTimestamp,\n    url,\n    method,\n    statusCode,\n    request: requestWarning ? mergeWarning(request, requestWarning) : request,\n    response: responseWarning ? mergeWarning(response, responseWarning) : response,\n  };\n}\n\nfunction getResponseHeaders(xhr) {\n  const headers = xhr.getAllResponseHeaders();\n\n  if (!headers) {\n    return {};\n  }\n\n  return headers.split('\\r\\n').reduce((acc, line) => {\n    const [key, value] = line.split(': ');\n    acc[key.toLowerCase()] = value;\n    return acc;\n  }, {});\n}\n\nfunction _getXhrResponseBody(xhr) {\n  // We collect errors that happen, but only log them if we can't get any response body\n  const errors = [];\n\n  try {\n    return [xhr.responseText];\n  } catch (e) {\n    errors.push(e);\n  }\n\n  // Try to manually parse the response body, if responseText fails\n  try {\n    return _parseXhrResponse(xhr.response, xhr.responseType);\n  } catch (e) {\n    errors.push(e);\n  }\n\n  DEBUG_BUILD && logger.warn('[Replay] Failed to get xhr response body', ...errors);\n\n  return [undefined];\n}\n\n/**\n * Get the string representation of the XHR response.\n * Based on MDN, these are the possible types of the response:\n * string\n * ArrayBuffer\n * Blob\n * Document\n * POJO\n *\n * Exported only for tests.\n */\nfunction _parseXhrResponse(\n  body,\n  responseType,\n) {\n  try {\n    if (typeof body === 'string') {\n      return [body];\n    }\n\n    if (body instanceof Document) {\n      return [body.body.outerHTML];\n    }\n\n    if (responseType === 'json' && body && typeof body === 'object') {\n      return [JSON.stringify(body)];\n    }\n\n    if (!body) {\n      return [undefined];\n    }\n  } catch (e2) {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n\n  DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n  return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\nfunction _getBodySize(\n  body,\n  responseType,\n  textEncoder,\n) {\n  try {\n    const bodyStr = responseType === 'json' && body && typeof body === 'object' ? JSON.stringify(body) : body;\n    return getBodySize(bodyStr, textEncoder);\n  } catch (e3) {\n    return undefined;\n  }\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n *   (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nfunction handleNetworkBreadcrumbs(replay) {\n  const client = getClient();\n\n  try {\n    const textEncoder = new TextEncoder();\n\n    const {\n      networkDetailAllowUrls,\n      networkDetailDenyUrls,\n      networkCaptureBodies,\n      networkRequestHeaders,\n      networkResponseHeaders,\n    } = replay.getOptions();\n\n    const options = {\n      replay,\n      textEncoder,\n      networkDetailAllowUrls,\n      networkDetailDenyUrls,\n      networkCaptureBodies,\n      networkRequestHeaders,\n      networkResponseHeaders,\n    };\n\n    if (client && client.on) {\n      client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n    } else {\n      // Fallback behavior\n      addFetchInstrumentationHandler(handleFetchSpanListener(replay));\n      addXhrInstrumentationHandler(handleXhrSpanListener(replay));\n    }\n  } catch (e2) {\n    // Do nothing\n  }\n}\n\n/** just exported for tests */\nfunction beforeAddNetworkBreadcrumb(\n  options,\n  breadcrumb,\n  hint,\n) {\n  if (!breadcrumb.data) {\n    return;\n  }\n\n  try {\n    if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n      // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n      // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n      // So any async mutations to it will not be reflected in the final breadcrumb\n      enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n      // This call should not reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n    }\n\n    if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n      // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n      // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n      // So any async mutations to it will not be reflected in the final breadcrumb\n      enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n      // This call should not reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n    }\n  } catch (e) {\n    DEBUG_BUILD && logger.warn('Error when enriching network breadcrumb');\n  }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb) {\n  return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb) {\n  return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint) {\n  return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint) {\n  return hint && hint.response;\n}\n\nlet _LAST_BREADCRUMB = null;\n\nfunction isBreadcrumbWithCategory(breadcrumb) {\n  return !!breadcrumb.category;\n}\n\nconst handleScopeListener =\n  (replay) =>\n  (scope) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleScope(scope);\n\n    if (!result) {\n      return;\n    }\n\n    addBreadcrumbEvent(replay, result);\n  };\n\n/**\n * An event handler to handle scope changes.\n */\nfunction handleScope(scope) {\n  // TODO (v8): Remove this guard. This was put in place because we introduced\n  // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n  // For now, we'll just return null if the method doesn't exist but we should eventually\n  // get rid of this guard.\n  const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n  // Listener can be called when breadcrumbs have not changed, so we store the\n  // reference to the last crumb and only return a crumb if it has changed\n  if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n    return null;\n  }\n\n  _LAST_BREADCRUMB = newBreadcrumb;\n\n  if (\n    !isBreadcrumbWithCategory(newBreadcrumb) ||\n    ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n    newBreadcrumb.category.startsWith('ui.')\n  ) {\n    return null;\n  }\n\n  if (newBreadcrumb.category === 'console') {\n    return normalizeConsoleBreadcrumb(newBreadcrumb);\n  }\n\n  return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nfunction normalizeConsoleBreadcrumb(\n  breadcrumb,\n) {\n  const args = breadcrumb.data && breadcrumb.data.arguments;\n\n  if (!Array.isArray(args) || args.length === 0) {\n    return createBreadcrumb(breadcrumb);\n  }\n\n  let isTruncated = false;\n\n  // Avoid giant args captures\n  const normalizedArgs = args.map(arg => {\n    if (!arg) {\n      return arg;\n    }\n    if (typeof arg === 'string') {\n      if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n        isTruncated = true;\n        return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n      }\n\n      return arg;\n    }\n    if (typeof arg === 'object') {\n      try {\n        const normalizedArg = normalize(arg, 7);\n        const stringified = JSON.stringify(normalizedArg);\n        if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n          isTruncated = true;\n          // We use the pretty printed JSON string here as a base\n          return `${JSON.stringify(normalizedArg, null, 2).slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n        }\n        return normalizedArg;\n      } catch (e) {\n        // fall back to default\n      }\n    }\n\n    return arg;\n  });\n\n  return createBreadcrumb({\n    ...breadcrumb,\n    data: {\n      ...breadcrumb.data,\n      arguments: normalizedArgs,\n      ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n    },\n  });\n}\n\n/**\n * Add global listeners that cannot be removed.\n */\nfunction addGlobalListeners(replay) {\n  // Listeners from core SDK //\n  const scope = getCurrentScope();\n  const client = getClient();\n\n  scope.addScopeListener(handleScopeListener(replay));\n  addClickKeypressInstrumentationHandler(handleDomListener(replay));\n  addHistoryInstrumentationHandler(handleHistorySpanListener(replay));\n  handleNetworkBreadcrumbs(replay);\n\n  // Tag all (non replay) events that get sent to Sentry with the current\n  // replay ID so that we can reference them later in the UI\n  const eventProcessor = handleGlobalEventListener(replay, !hasHooks(client));\n  if (client && client.addEventProcessor) {\n    client.addEventProcessor(eventProcessor);\n  } else {\n    addEventProcessor(eventProcessor);\n  }\n\n  // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n  if (hasHooks(client)) {\n    client.on('beforeSendEvent', handleBeforeSendEvent(replay));\n    client.on('afterSendEvent', handleAfterSendEvent(replay));\n    client.on('createDsc', (dsc) => {\n      const replayId = replay.getSessionId();\n      // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n      if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n        // Ensure to check that the session is still active - it could have expired in the meanwhile\n        const isSessionActive = replay.checkAndHandleExpiredSession();\n        if (isSessionActive) {\n          dsc.replay_id = replayId;\n        }\n      }\n    });\n\n    client.on('startTransaction', transaction => {\n      replay.lastTransaction = transaction;\n    });\n\n    // We may be missing the initial startTransaction due to timing issues,\n    // so we capture it on finish again.\n    client.on('finishTransaction', transaction => {\n      replay.lastTransaction = transaction;\n    });\n\n    // We want to flush replay\n    client.on('beforeSendFeedback', (feedbackEvent, options) => {\n      const replayId = replay.getSessionId();\n      if (options && options.includeReplay && replay.isEnabled() && replayId) {\n        // This should never reject\n        if (feedbackEvent.contexts && feedbackEvent.contexts.feedback) {\n          feedbackEvent.contexts.feedback.replay_id = replayId;\n        }\n      }\n    });\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client) {\n  return !!(client && client.on);\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nasync function addMemoryEntry(replay) {\n  // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n  try {\n    return Promise.all(\n      createPerformanceSpans(replay, [\n        // @ts-expect-error memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n        createMemoryEntry(WINDOW.performance.memory),\n      ]),\n    );\n  } catch (error) {\n    // Do nothing\n    return [];\n  }\n}\n\nfunction createMemoryEntry(memoryEntry) {\n  const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n  // we don't want to use `getAbsoluteTime` because it adds the event time to the\n  // time origin, so we get the current timestamp instead\n  const time = Date.now() / 1000;\n  return {\n    type: 'memory',\n    name: 'memory',\n    start: time,\n    end: time,\n    data: {\n      memory: {\n        jsHeapSizeLimit,\n        totalJSHeapSize,\n        usedJSHeapSize,\n      },\n    },\n  };\n}\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n *          debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n *          was already invoked in the meantime, return @param func's return value.\n *          The debounced function has two additional properties:\n *          - `flush`: Invokes the debounced function immediately and returns its return value\n *          - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nfunction debounce(func, wait, options) {\n  let callbackReturnValue;\n\n  let timerId;\n  let maxTimerId;\n\n  const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n  function invokeFunc() {\n    cancelTimers();\n    callbackReturnValue = func();\n    return callbackReturnValue;\n  }\n\n  function cancelTimers() {\n    timerId !== undefined && clearTimeout(timerId);\n    maxTimerId !== undefined && clearTimeout(maxTimerId);\n    timerId = maxTimerId = undefined;\n  }\n\n  function flush() {\n    if (timerId !== undefined || maxTimerId !== undefined) {\n      return invokeFunc();\n    }\n    return callbackReturnValue;\n  }\n\n  function debounced() {\n    if (timerId) {\n      clearTimeout(timerId);\n    }\n    timerId = setTimeout(invokeFunc, wait);\n\n    if (maxWait && maxTimerId === undefined) {\n      maxTimerId = setTimeout(invokeFunc, maxWait);\n    }\n\n    return callbackReturnValue;\n  }\n\n  debounced.cancel = cancelTimers;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nfunction getHandleRecordingEmit(replay) {\n  let hadFirstEvent = false;\n\n  return (event, _isCheckout) => {\n    // If this is false, it means session is expired, create and a new session and wait for checkout\n    if (!replay.checkAndHandleExpiredSession()) {\n      DEBUG_BUILD && logger.warn('[Replay] Received replay event after session expired.');\n\n      return;\n    }\n\n    // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n    // We also want to treat the first event as a checkout, so we handle this specifically here\n    const isCheckout = _isCheckout || !hadFirstEvent;\n    hadFirstEvent = true;\n\n    if (replay.clickDetector) {\n      updateClickDetectorForRecordingEvent(replay.clickDetector, event);\n    }\n\n    // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n    replay.addUpdate(() => {\n      // The session is always started immediately on pageload/init, but for\n      // error-only replays, it should reflect the most recent checkout\n      // when an error occurs. Clear any state that happens before this current\n      // checkout. This needs to happen before `addEvent()` which updates state\n      // dependent on this reset.\n      if (replay.recordingMode === 'buffer' && isCheckout) {\n        replay.setInitialState();\n      }\n\n      // If the event is not added (e.g. due to being paused, disabled, or out of the max replay duration),\n      // Skip all further steps\n      if (!addEventSync(replay, event, isCheckout)) {\n        // Return true to skip scheduling a debounced flush\n        return true;\n      }\n\n      // Different behavior for full snapshots (type=2), ignore other event types\n      // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n      if (!isCheckout) {\n        return false;\n      }\n\n      // Additionally, create a meta event that will capture certain SDK settings.\n      // In order to handle buffer mode, this needs to either be done when we\n      // receive checkout events or at flush time.\n      //\n      // `isCheckout` is always true, but want to be explicit that it should\n      // only be added for checkouts\n      addSettingsEvent(replay, isCheckout);\n\n      // If there is a previousSessionId after a full snapshot occurs, then\n      // the replay session was started due to session expiration. The new session\n      // is started before triggering a new checkout and contains the id\n      // of the previous session. Do not immediately flush in this case\n      // to avoid capturing only the checkout and instead the replay will\n      // be captured if they perform any follow-up actions.\n      if (replay.session && replay.session.previousSessionId) {\n        return true;\n      }\n\n      // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n      // this should usually be the timestamp of the checkout event, but to be safe...\n      if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n        const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n        if (earliestEvent) {\n          logInfo(\n            `[Replay] Updating session start time to earliest event in buffer to ${new Date(earliestEvent)}`,\n            replay.getOptions()._experiments.traceInternals,\n          );\n\n          replay.session.started = earliestEvent;\n\n          if (replay.getOptions().stickySession) {\n            saveSession(replay.session);\n          }\n        }\n      }\n\n      if (replay.recordingMode === 'session') {\n        // If the full snapshot is due to an initial load, we will not have\n        // a previous session ID. In this case, we want to buffer events\n        // for a set amount of time before flushing. This can help avoid\n        // capturing replays of users that immediately close the window.\n\n        // This should never reject\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        void replay.flush();\n      }\n\n      return true;\n    });\n  };\n}\n\n/**\n * Exported for tests\n */\nfunction createOptionsEvent(replay) {\n  const options = replay.getOptions();\n  return {\n    type: EventType.Custom,\n    timestamp: Date.now(),\n    data: {\n      tag: 'options',\n      payload: {\n        shouldRecordCanvas: replay.isRecordingCanvas(),\n        sessionSampleRate: options.sessionSampleRate,\n        errorSampleRate: options.errorSampleRate,\n        useCompressionOption: options.useCompression,\n        blockAllMedia: options.blockAllMedia,\n        maskAllText: options.maskAllText,\n        maskAllInputs: options.maskAllInputs,\n        useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n        networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n        networkCaptureBodies: options.networkCaptureBodies,\n        networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n        networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n      },\n    },\n  };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay, isCheckout) {\n  // Only need to add this event when sending the first segment\n  if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n    return;\n  }\n\n  addEventSync(replay, createOptionsEvent(replay), false);\n}\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nfunction createReplayEnvelope(\n  replayEvent,\n  recordingData,\n  dsn,\n  tunnel,\n) {\n  return createEnvelope(\n    createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n    [\n      [{ type: 'replay_event' }, replayEvent],\n      [\n        {\n          type: 'replay_recording',\n          // If string then we need to encode to UTF8, otherwise will have\n          // wrong size. TextEncoder has similar browser support to\n          // MutationObserver, although it does not accept IE11.\n          length:\n            typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n        },\n        recordingData,\n      ],\n    ],\n  );\n}\n\n/**\n * Prepare the recording data ready to be sent.\n */\nfunction prepareRecordingData({\n  recordingData,\n  headers,\n}\n\n) {\n  let payloadWithSequence;\n\n  // XXX: newline is needed to separate sequence id from events\n  const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n  if (typeof recordingData === 'string') {\n    payloadWithSequence = `${replayHeaders}${recordingData}`;\n  } else {\n    const enc = new TextEncoder();\n    // XXX: newline is needed to separate sequence id from events\n    const sequence = enc.encode(replayHeaders);\n    // Merge the two Uint8Arrays\n    payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n    payloadWithSequence.set(sequence);\n    payloadWithSequence.set(recordingData, sequence.length);\n  }\n\n  return payloadWithSequence;\n}\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nasync function prepareReplayEvent({\n  client,\n  scope,\n  replayId: event_id,\n  event,\n}\n\n) {\n  const integrations =\n    typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n      ? Object.keys(client._integrations)\n      : undefined;\n\n  const eventHint = { event_id, integrations };\n\n  if (client.emit) {\n    client.emit('preprocessEvent', event, eventHint);\n  }\n\n  const preparedEvent = (await prepareEvent(\n    client.getOptions(),\n    event,\n    eventHint,\n    scope,\n    client,\n    getIsolationScope(),\n  )) ;\n\n  // If e.g. a global event processor returned null\n  if (!preparedEvent) {\n    return null;\n  }\n\n  // This normally happens in browser client \"_prepareEvent\"\n  // but since we do not use this private method from the client, but rather the plain import\n  // we need to do this manually.\n  preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n  // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n  const metadata = client.getSdkMetadata && client.getSdkMetadata();\n  const { name, version } = (metadata && metadata.sdk) || {};\n\n  preparedEvent.sdk = {\n    ...preparedEvent.sdk,\n    name: name || 'sentry.javascript.unknown',\n    version: version || '0.0.0',\n  };\n\n  return preparedEvent;\n}\n\n/**\n * Send replay attachment using `fetch()`\n */\nasync function sendReplayRequest({\n  recordingData,\n  replayId,\n  segmentId: segment_id,\n  eventContext,\n  timestamp,\n  session,\n}) {\n  const preparedRecordingData = prepareRecordingData({\n    recordingData,\n    headers: {\n      segment_id,\n    },\n  });\n\n  const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n  const client = getClient();\n  const scope = getCurrentScope();\n  const transport = client && client.getTransport();\n  const dsn = client && client.getDsn();\n\n  if (!client || !transport || !dsn || !session.sampled) {\n    return;\n  }\n\n  const baseEvent = {\n    type: REPLAY_EVENT_NAME,\n    replay_start_timestamp: initialTimestamp / 1000,\n    timestamp: timestamp / 1000,\n    error_ids: errorIds,\n    trace_ids: traceIds,\n    urls,\n    replay_id: replayId,\n    segment_id,\n    replay_type: session.sampled,\n  };\n\n  const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n  if (!replayEvent) {\n    // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n    client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n    logInfo('An event processor returned `null`, will not send event.');\n    return;\n  }\n\n  /*\n  For reference, the fully built event looks something like this:\n  {\n      \"type\": \"replay_event\",\n      \"timestamp\": 1670837008.634,\n      \"error_ids\": [\n          \"errorId\"\n      ],\n      \"trace_ids\": [\n          \"traceId\"\n      ],\n      \"urls\": [\n          \"https://example.com\"\n      ],\n      \"replay_id\": \"eventId\",\n      \"segment_id\": 3,\n      \"replay_type\": \"error\",\n      \"platform\": \"javascript\",\n      \"event_id\": \"eventId\",\n      \"environment\": \"production\",\n      \"sdk\": {\n          \"integrations\": [\n              \"BrowserTracing\",\n              \"Replay\"\n          ],\n          \"name\": \"sentry.javascript.browser\",\n          \"version\": \"7.25.0\"\n      },\n      \"sdkProcessingMetadata\": {},\n      \"contexts\": {\n      },\n  }\n  */\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete replayEvent.sdkProcessingMetadata;\n\n  const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n  let response;\n\n  try {\n    response = await transport.send(envelope);\n  } catch (err) {\n    const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n    try {\n      // In case browsers don't allow this property to be writable\n      // @ts-expect-error This needs lib es2022 and newer\n      error.cause = err;\n    } catch (e) {\n      // nothing to do\n    }\n    throw error;\n  }\n\n  // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n  if (!response) {\n    return response;\n  }\n\n  // If the status code is invalid, we want to immediately stop & not retry\n  if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n    throw new TransportStatusCodeError(response.statusCode);\n  }\n\n  const rateLimits = updateRateLimits({}, response);\n  if (isRateLimited(rateLimits, 'replay')) {\n    throw new RateLimitError(rateLimits);\n  }\n\n  return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nclass TransportStatusCodeError extends Error {\n   constructor(statusCode) {\n    super(`Transport returned status code ${statusCode}`);\n  }\n}\n\n/**\n * This error indicates that we hit a rate limit API error.\n */\nclass RateLimitError extends Error {\n\n   constructor(rateLimits) {\n    super('Rate limit hit');\n    this.rateLimits = rateLimits;\n  }\n}\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nasync function sendReplay(\n  replayData,\n  retryConfig = {\n    count: 0,\n    interval: RETRY_BASE_INTERVAL,\n  },\n) {\n  const { recordingData, options } = replayData;\n\n  // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n  if (!recordingData.length) {\n    return;\n  }\n\n  try {\n    await sendReplayRequest(replayData);\n    return true;\n  } catch (err) {\n    if (err instanceof TransportStatusCodeError || err instanceof RateLimitError) {\n      throw err;\n    }\n\n    // Capture error for every failed replay\n    setContext('Replays', {\n      _retryCount: retryConfig.count,\n    });\n\n    if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {\n      captureException(err);\n    }\n\n    // If an error happened here, it's likely that uploading the attachment\n    // failed, we'll can retry with the same events payload\n    if (retryConfig.count >= RETRY_MAX_COUNT) {\n      const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n      try {\n        // In case browsers don't allow this property to be writable\n        // @ts-expect-error This needs lib es2022 and newer\n        error.cause = err;\n      } catch (e) {\n        // nothing to do\n      }\n\n      throw error;\n    }\n\n    // will retry in intervals of 5, 10, 30\n    retryConfig.interval *= ++retryConfig.count;\n\n    return new Promise((resolve, reject) => {\n      setTimeout(async () => {\n        try {\n          await sendReplay(replayData, retryConfig);\n          resolve(true);\n        } catch (err) {\n          reject(err);\n        }\n      }, retryConfig.interval);\n    });\n  }\n}\n\nconst THROTTLED = '__THROTTLED';\nconst SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction throttle(\n  fn,\n  maxCount,\n  durationSeconds,\n) {\n  const counter = new Map();\n\n  const _cleanup = (now) => {\n    const threshold = now - durationSeconds;\n    counter.forEach((_value, key) => {\n      if (key < threshold) {\n        counter.delete(key);\n      }\n    });\n  };\n\n  const _getTotalCount = () => {\n    return [...counter.values()].reduce((a, b) => a + b, 0);\n  };\n\n  let isThrottled = false;\n\n  return (...rest) => {\n    // Date in second-precision, which we use as basis for the throttling\n    const now = Math.floor(Date.now() / 1000);\n\n    // First, make sure to delete any old entries\n    _cleanup(now);\n\n    // If already over limit, do nothing\n    if (_getTotalCount() >= maxCount) {\n      const wasThrottled = isThrottled;\n      isThrottled = true;\n      return wasThrottled ? SKIPPED : THROTTLED;\n    }\n\n    isThrottled = false;\n    const count = counter.get(now) || 0;\n    counter.set(now, count + 1);\n\n    return fn(...rest);\n  };\n}\n\n/* eslint-disable max-lines */ // TODO: We might want to split this file up\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nclass ReplayContainer  {\n\n  /**\n   * Recording can happen in one of three modes:\n   *   - session: Record the whole session, sending it continuously\n   *   - buffer: Always keep the last 60s of recording, requires:\n   *     - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n   *     - or calling `flush()` to send the replay\n   */\n\n  /**\n   * The current or last active transcation.\n   * This is only available when performance is enabled.\n   */\n\n  /**\n   * These are here so we can overwrite them in tests etc.\n   * @hidden\n   */\n\n  /**\n   * Options to pass to `rrweb.record()`\n   */\n\n  /**\n   * Timestamp of the last user activity. This lives across sessions.\n   */\n\n  /**\n   * Is the integration currently active?\n   */\n\n  /**\n   * Paused is a state where:\n   * - DOM Recording is not listening at all\n   * - Nothing will be added to event buffer (e.g. core SDK events)\n   */\n\n  /**\n   * Have we attached listeners to the core SDK?\n   * Note we have to track this as there is no way to remove instrumentation handlers.\n   */\n\n  /**\n   * Function to stop recording\n   */\n\n  /**\n   * Internal use for canvas recording options\n   */\n\n   constructor({\n    options,\n    recordingOptions,\n  }\n\n) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);\n    this.eventBuffer = null;\n    this.performanceEntries = [];\n    this.replayPerformanceEntries = [];\n    this.recordingMode = 'session';\n    this.timeouts = {\n      sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n      sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n    } ;\n    this._lastActivity = Date.now();\n    this._isEnabled = false;\n    this._isPaused = false;\n    this._hasInitializedCoreListeners = false;\n    this._context = {\n      errorIds: new Set(),\n      traceIds: new Set(),\n      urls: [],\n      initialTimestamp: Date.now(),\n      initialUrl: '',\n    };\n\n    this._recordingOptions = recordingOptions;\n    this._options = options;\n\n    this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n      maxWait: this._options.flushMaxDelay,\n    });\n\n    this._throttledAddEvent = throttle(\n      (event, isCheckout) => addEvent(this, event, isCheckout),\n      // Max 300 events...\n      300,\n      // ... per 5s\n      5,\n    );\n\n    const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n    const slowClickConfig = slowClickTimeout\n      ? {\n          threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n          timeout: slowClickTimeout,\n          scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n          ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n        }\n      : undefined;\n\n    if (slowClickConfig) {\n      this.clickDetector = new ClickDetector(this, slowClickConfig);\n    }\n  }\n\n  /** Get the event context. */\n   getContext() {\n    return this._context;\n  }\n\n  /** If recording is currently enabled. */\n   isEnabled() {\n    return this._isEnabled;\n  }\n\n  /** If recording is currently paused. */\n   isPaused() {\n    return this._isPaused;\n  }\n\n  /**\n   * Determine if canvas recording is enabled\n   */\n   isRecordingCanvas() {\n    return Boolean(this._canvas);\n  }\n\n  /** Get the replay integration options. */\n   getOptions() {\n    return this._options;\n  }\n\n  /**\n   * Initializes the plugin based on sampling configuration. Should not be\n   * called outside of constructor.\n   */\n   initializeSampling(previousSessionId) {\n    const { errorSampleRate, sessionSampleRate } = this._options;\n\n    // If neither sample rate is > 0, then do nothing - user will need to call one of\n    // `start()` or `startBuffering` themselves.\n    if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n      return;\n    }\n\n    // Otherwise if there is _any_ sample rate set, try to load an existing\n    // session, or create a new one.\n    this._initializeSessionForSampling(previousSessionId);\n\n    if (!this.session) {\n      // This should not happen, something wrong has occurred\n      this._handleException(new Error('Unable to initialize and create session'));\n      return;\n    }\n\n    if (this.session.sampled === false) {\n      // This should only occur if `errorSampleRate` is 0 and was unsampled for\n      // session-based replay. In this case there is nothing to do.\n      return;\n    }\n\n    // If segmentId > 0, it means we've previously already captured this session\n    // In this case, we still want to continue in `session` recording mode\n    this.recordingMode = this.session.sampled === 'buffer' && this.session.segmentId === 0 ? 'buffer' : 'session';\n\n    logInfoNextTick(\n      `[Replay] Starting replay in ${this.recordingMode} mode`,\n      this._options._experiments.traceInternals,\n    );\n\n    this._initializeRecording();\n  }\n\n  /**\n   * Start a replay regardless of sampling rate. Calling this will always\n   * create a new session. Will throw an error if replay is already in progress.\n   *\n   * Creates or loads a session, attaches listeners to varying events (DOM,\n   * _performanceObserver, Recording, Sentry SDK, etc)\n   */\n   start() {\n    if (this._isEnabled && this.recordingMode === 'session') {\n      throw new Error('Replay recording is already in progress');\n    }\n\n    if (this._isEnabled && this.recordingMode === 'buffer') {\n      throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n    }\n\n    logInfoNextTick('[Replay] Starting replay in session mode', this._options._experiments.traceInternals);\n\n    // Required as user activity is initially set in\n    // constructor, so if `start()` is called after\n    // session idle expiration, a replay will not be\n    // created due to an idle timeout.\n    this._updateUserActivity();\n\n    const session = loadOrCreateSession(\n      {\n        maxReplayDuration: this._options.maxReplayDuration,\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        traceInternals: this._options._experiments.traceInternals,\n      },\n      {\n        stickySession: this._options.stickySession,\n        // This is intentional: create a new session-based replay when calling `start()`\n        sessionSampleRate: 1,\n        allowBuffering: false,\n      },\n    );\n\n    this.session = session;\n\n    this._initializeRecording();\n  }\n\n  /**\n   * Start replay buffering. Buffers until `flush()` is called or, if\n   * `replaysOnErrorSampleRate` > 0, an error occurs.\n   */\n   startBuffering() {\n    if (this._isEnabled) {\n      throw new Error('Replay recording is already in progress');\n    }\n\n    logInfoNextTick('[Replay] Starting replay in buffer mode', this._options._experiments.traceInternals);\n\n    const session = loadOrCreateSession(\n      {\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        maxReplayDuration: this._options.maxReplayDuration,\n        traceInternals: this._options._experiments.traceInternals,\n      },\n      {\n        stickySession: this._options.stickySession,\n        sessionSampleRate: 0,\n        allowBuffering: true,\n      },\n    );\n\n    this.session = session;\n\n    this.recordingMode = 'buffer';\n    this._initializeRecording();\n  }\n\n  /**\n   * Start recording.\n   *\n   * Note that this will cause a new DOM checkout\n   */\n   startRecording() {\n    try {\n      const canvasOptions = this._canvas;\n\n      this._stopRecording = record({\n        ...this._recordingOptions,\n        // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n        // Without this, it would record forever, until an error happens, which we don't want\n        // instead, we'll always keep the last 60 seconds of replay before an error happened\n        ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n        emit: getHandleRecordingEmit(this),\n        onMutation: this._onMutationHandler,\n        ...(canvasOptions\n          ? {\n              recordCanvas: canvasOptions.recordCanvas,\n              getCanvasManager: canvasOptions.getCanvasManager,\n              sampling: canvasOptions.sampling,\n              dataURLOptions: canvasOptions.dataURLOptions,\n            }\n          : {}),\n      });\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Stops the recording, if it was running.\n   *\n   * Returns true if it was previously stopped, or is now stopped,\n   * otherwise false.\n   */\n   stopRecording() {\n    try {\n      if (this._stopRecording) {\n        this._stopRecording();\n        this._stopRecording = undefined;\n      }\n\n      return true;\n    } catch (err) {\n      this._handleException(err);\n      return false;\n    }\n  }\n\n  /**\n   * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n   * does not support a teardown\n   */\n   async stop({ forceFlush = false, reason } = {}) {\n    if (!this._isEnabled) {\n      return;\n    }\n\n    // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n    // enter into an infinite loop when `stop()` is called while flushing.\n    this._isEnabled = false;\n\n    try {\n      logInfo(\n        `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`,\n        this._options._experiments.traceInternals,\n      );\n\n      this._removeListeners();\n      this.stopRecording();\n\n      this._debouncedFlush.cancel();\n      // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n      // `_isEnabled` state of the plugin since it was disabled above.\n      if (forceFlush) {\n        await this._flush({ force: true });\n      }\n\n      // After flush, destroy event buffer\n      this.eventBuffer && this.eventBuffer.destroy();\n      this.eventBuffer = null;\n\n      // Clear session from session storage, note this means if a new session\n      // is started after, it will not have `previousSessionId`\n      clearSession(this);\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Pause some replay functionality. See comments for `_isPaused`.\n   * This differs from stop as this only stops DOM recording, it is\n   * not as thorough of a shutdown as `stop()`.\n   */\n   pause() {\n    if (this._isPaused) {\n      return;\n    }\n\n    this._isPaused = true;\n    this.stopRecording();\n\n    logInfo('[Replay] Pausing replay', this._options._experiments.traceInternals);\n  }\n\n  /**\n   * Resumes recording, see notes for `pause().\n   *\n   * Note that calling `startRecording()` here will cause a\n   * new DOM checkout.`\n   */\n   resume() {\n    if (!this._isPaused || !this._checkSession()) {\n      return;\n    }\n\n    this._isPaused = false;\n    this.startRecording();\n\n    logInfo('[Replay] Resuming replay', this._options._experiments.traceInternals);\n  }\n\n  /**\n   * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n   * Unless `continueRecording` is false, the replay will continue to record and\n   * behave as a \"session\"-based replay.\n   *\n   * Otherwise, queue up a flush.\n   */\n   async sendBufferedReplayOrFlush({ continueRecording = true } = {}) {\n    if (this.recordingMode === 'session') {\n      return this.flushImmediate();\n    }\n\n    const activityTime = Date.now();\n\n    logInfo('[Replay] Converting buffer to session', this._options._experiments.traceInternals);\n\n    // Allow flush to complete before resuming as a session recording, otherwise\n    // the checkout from `startRecording` may be included in the payload.\n    // Prefer to keep the error replay as a separate (and smaller) segment\n    // than the session replay.\n    await this.flushImmediate();\n\n    const hasStoppedRecording = this.stopRecording();\n\n    if (!continueRecording || !hasStoppedRecording) {\n      return;\n    }\n\n    // To avoid race conditions where this is called multiple times, we check here again that we are still buffering\n    if ((this.recordingMode ) === 'session') {\n      return;\n    }\n\n    // Re-start recording in session-mode\n    this.recordingMode = 'session';\n\n    // Once this session ends, we do not want to refresh it\n    if (this.session) {\n      this._updateUserActivity(activityTime);\n      this._updateSessionActivity(activityTime);\n      this._maybeSaveSession();\n    }\n\n    this.startRecording();\n  }\n\n  /**\n   * We want to batch uploads of replay events. Save events only if\n   * `<flushMinDelay>` milliseconds have elapsed since the last event\n   * *OR* if `<flushMaxDelay>` milliseconds have elapsed.\n   *\n   * Accepts a callback to perform side-effects and returns true to stop batch\n   * processing and hand back control to caller.\n   */\n   addUpdate(cb) {\n    // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n    const cbResult = cb();\n\n    // If this option is turned on then we will only want to call `flush`\n    // explicitly\n    if (this.recordingMode === 'buffer') {\n      return;\n    }\n\n    // If callback is true, we do not want to continue with flushing -- the\n    // caller will need to handle it.\n    if (cbResult === true) {\n      return;\n    }\n\n    // addUpdate is called quite frequently - use _debouncedFlush so that it\n    // respects the flush delays and does not flush immediately\n    this._debouncedFlush();\n  }\n\n  /**\n   * Updates the user activity timestamp and resumes recording. This should be\n   * called in an event handler for a user action that we consider as the user\n   * being \"active\" (e.g. a mouse click).\n   */\n   triggerUserActivity() {\n    this._updateUserActivity();\n\n    // This case means that recording was once stopped due to inactivity.\n    // Ensure that recording is resumed.\n    if (!this._stopRecording) {\n      // Create a new session, otherwise when the user action is flushed, it\n      // will get rejected due to an expired session.\n      if (!this._checkSession()) {\n        return;\n      }\n\n      // Note: This will cause a new DOM checkout\n      this.resume();\n      return;\n    }\n\n    // Otherwise... recording was never suspended, continue as normalish\n    this.checkAndHandleExpiredSession();\n\n    this._updateSessionActivity();\n  }\n\n  /**\n   * Updates the user activity timestamp *without* resuming\n   * recording. Some user events (e.g. keydown) can be create\n   * low-value replays that only contain the keypress as a\n   * breadcrumb. Instead this would require other events to\n   * create a new replay after a session has expired.\n   */\n   updateUserActivity() {\n    this._updateUserActivity();\n    this._updateSessionActivity();\n  }\n\n  /**\n   * Only flush if `this.recordingMode === 'session'`\n   */\n   conditionalFlush() {\n    if (this.recordingMode === 'buffer') {\n      return Promise.resolve();\n    }\n\n    return this.flushImmediate();\n  }\n\n  /**\n   * Flush using debounce flush\n   */\n   flush() {\n    return this._debouncedFlush() ;\n  }\n\n  /**\n   * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n   * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n   * cases of mulitple flushes happening closely together.\n   */\n   flushImmediate() {\n    this._debouncedFlush();\n    // `.flush` is provided by the debounced function, analogously to lodash.debounce\n    return this._debouncedFlush.flush() ;\n  }\n\n  /**\n   * Cancels queued up flushes.\n   */\n   cancelFlush() {\n    this._debouncedFlush.cancel();\n  }\n\n  /** Get the current sesion (=replay) ID */\n   getSessionId() {\n    return this.session && this.session.id;\n  }\n\n  /**\n   * Checks if recording should be stopped due to user inactivity. Otherwise\n   * check if session is expired and create a new session if so. Triggers a new\n   * full snapshot on new session.\n   *\n   * Returns true if session is not expired, false otherwise.\n   * @hidden\n   */\n   checkAndHandleExpiredSession() {\n    // Prevent starting a new session if the last user activity is older than\n    // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n    // session+recording. This creates noisy replays that do not have much\n    // content in them.\n    if (\n      this._lastActivity &&\n      isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n      this.session &&\n      this.session.sampled === 'session'\n    ) {\n      // Pause recording only for session-based replays. Otherwise, resuming\n      // will create a new replay and will conflict with users who only choose\n      // to record error-based replays only. (e.g. the resumed replay will not\n      // contain a reference to an error)\n      this.pause();\n      return;\n    }\n\n    // --- There is recent user activity --- //\n    // This will create a new session if expired, based on expiry length\n    if (!this._checkSession()) {\n      // Check session handles the refreshing itself\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Capture some initial state that can change throughout the lifespan of the\n   * replay. This is required because otherwise they would be captured at the\n   * first flush.\n   */\n   setInitialState() {\n    const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n    const url = `${WINDOW.location.origin}${urlPath}`;\n\n    this.performanceEntries = [];\n    this.replayPerformanceEntries = [];\n\n    // Reset _context as well\n    this._clearContext();\n\n    this._context.initialUrl = url;\n    this._context.initialTimestamp = Date.now();\n    this._context.urls.push(url);\n  }\n\n  /**\n   * Add a breadcrumb event, that may be throttled.\n   * If it was throttled, we add a custom breadcrumb to indicate that.\n   */\n   throttledAddEvent(\n    event,\n    isCheckout,\n  ) {\n    const res = this._throttledAddEvent(event, isCheckout);\n\n    // If this is THROTTLED, it means we have throttled the event for the first time\n    // In this case, we want to add a breadcrumb indicating that something was skipped\n    if (res === THROTTLED) {\n      const breadcrumb = createBreadcrumb({\n        category: 'replay.throttled',\n      });\n\n      this.addUpdate(() => {\n        // Return `false` if the event _was_ added, as that means we schedule a flush\n        return !addEventSync(this, {\n          type: ReplayEventTypeCustom,\n          timestamp: breadcrumb.timestamp || 0,\n          data: {\n            tag: 'breadcrumb',\n            payload: breadcrumb,\n            metric: true,\n          },\n        });\n      });\n    }\n\n    return res;\n  }\n\n  /**\n   * This will get the parametrized route name of the current page.\n   * This is only available if performance is enabled, and if an instrumented router is used.\n   */\n   getCurrentRoute() {\n    // eslint-disable-next-line deprecation/deprecation\n    const lastTransaction = this.lastTransaction || getCurrentScope().getTransaction();\n\n    const attributes = (lastTransaction && spanToJSON(lastTransaction).data) || {};\n    const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n    if (!lastTransaction || !source || !['route', 'custom'].includes(source)) {\n      return undefined;\n    }\n\n    return spanToJSON(lastTransaction).description;\n  }\n\n  /**\n   * Initialize and start all listeners to varying events (DOM,\n   * Performance Observer, Recording, Sentry SDK, etc)\n   */\n   _initializeRecording() {\n    this.setInitialState();\n\n    // this method is generally called on page load or manually - in both cases\n    // we should treat it as an activity\n    this._updateSessionActivity();\n\n    this.eventBuffer = createEventBuffer({\n      useCompression: this._options.useCompression,\n      workerUrl: this._options.workerUrl,\n    });\n\n    this._removeListeners();\n    this._addListeners();\n\n    // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n    this._isEnabled = true;\n    this._isPaused = false;\n\n    this.startRecording();\n  }\n\n  /** A wrapper to conditionally capture exceptions. */\n   _handleException(error) {\n    DEBUG_BUILD && logger.error('[Replay]', error);\n\n    if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {\n      captureException(error);\n    }\n  }\n\n  /**\n   * Loads (or refreshes) the current session.\n   */\n   _initializeSessionForSampling(previousSessionId) {\n    // Whenever there is _any_ error sample rate, we always allow buffering\n    // Because we decide on sampling when an error occurs, we need to buffer at all times if sampling for errors\n    const allowBuffering = this._options.errorSampleRate > 0;\n\n    const session = loadOrCreateSession(\n      {\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        maxReplayDuration: this._options.maxReplayDuration,\n        traceInternals: this._options._experiments.traceInternals,\n        previousSessionId,\n      },\n      {\n        stickySession: this._options.stickySession,\n        sessionSampleRate: this._options.sessionSampleRate,\n        allowBuffering,\n      },\n    );\n\n    this.session = session;\n  }\n\n  /**\n   * Checks and potentially refreshes the current session.\n   * Returns false if session is not recorded.\n   */\n   _checkSession() {\n    // If there is no session yet, we do not want to refresh anything\n    // This should generally not happen, but to be safe....\n    if (!this.session) {\n      return false;\n    }\n\n    const currentSession = this.session;\n\n    if (\n      shouldRefreshSession(currentSession, {\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        maxReplayDuration: this._options.maxReplayDuration,\n      })\n    ) {\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this._refreshSession(currentSession);\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Refresh a session with a new one.\n   * This stops the current session (without forcing a flush, as that would never work since we are expired),\n   * and then does a new sampling based on the refreshed session.\n   */\n   async _refreshSession(session) {\n    if (!this._isEnabled) {\n      return;\n    }\n    await this.stop({ reason: 'refresh session' });\n    this.initializeSampling(session.id);\n  }\n\n  /**\n   * Adds listeners to record events for the replay\n   */\n   _addListeners() {\n    try {\n      WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n      WINDOW.addEventListener('blur', this._handleWindowBlur);\n      WINDOW.addEventListener('focus', this._handleWindowFocus);\n      WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n      if (this.clickDetector) {\n        this.clickDetector.addListeners();\n      }\n\n      // There is no way to remove these listeners, so ensure they are only added once\n      if (!this._hasInitializedCoreListeners) {\n        addGlobalListeners(this);\n\n        this._hasInitializedCoreListeners = true;\n      }\n    } catch (err) {\n      this._handleException(err);\n    }\n\n    this._performanceCleanupCallback = setupPerformanceObserver(this);\n  }\n\n  /**\n   * Cleans up listeners that were created in `_addListeners`\n   */\n   _removeListeners() {\n    try {\n      WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n      WINDOW.removeEventListener('blur', this._handleWindowBlur);\n      WINDOW.removeEventListener('focus', this._handleWindowFocus);\n      WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n      if (this.clickDetector) {\n        this.clickDetector.removeListeners();\n      }\n\n      if (this._performanceCleanupCallback) {\n        this._performanceCleanupCallback();\n      }\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Handle when visibility of the page content changes. Opening a new tab will\n   * cause the state to change to hidden because of content of current page will\n   * be hidden. Likewise, moving a different window to cover the contents of the\n   * page will also trigger a change to a hidden state.\n   */\n   __init() {this._handleVisibilityChange = () => {\n    if (WINDOW.document.visibilityState === 'visible') {\n      this._doChangeToForegroundTasks();\n    } else {\n      this._doChangeToBackgroundTasks();\n    }\n  };}\n\n  /**\n   * Handle when page is blurred\n   */\n   __init2() {this._handleWindowBlur = () => {\n    const breadcrumb = createBreadcrumb({\n      category: 'ui.blur',\n    });\n\n    // Do not count blur as a user action -- it's part of the process of them\n    // leaving the page\n    this._doChangeToBackgroundTasks(breadcrumb);\n  };}\n\n  /**\n   * Handle when page is focused\n   */\n   __init3() {this._handleWindowFocus = () => {\n    const breadcrumb = createBreadcrumb({\n      category: 'ui.focus',\n    });\n\n    // Do not count focus as a user action -- instead wait until they focus and\n    // interactive with page\n    this._doChangeToForegroundTasks(breadcrumb);\n  };}\n\n  /** Ensure page remains active when a key is pressed. */\n   __init4() {this._handleKeyboardEvent = (event) => {\n    handleKeyboardEvent(this, event);\n  };}\n\n  /**\n   * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n   */\n   _doChangeToBackgroundTasks(breadcrumb) {\n    if (!this.session) {\n      return;\n    }\n\n    const expired = isSessionExpired(this.session, {\n      maxReplayDuration: this._options.maxReplayDuration,\n      sessionIdleExpire: this.timeouts.sessionIdleExpire,\n    });\n\n    if (expired) {\n      return;\n    }\n\n    if (breadcrumb) {\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n\n    // Send replay when the page/tab becomes hidden. There is no reason to send\n    // replay if it becomes visible, since no actions we care about were done\n    // while it was hidden\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    void this.conditionalFlush();\n  }\n\n  /**\n   * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n   */\n   _doChangeToForegroundTasks(breadcrumb) {\n    if (!this.session) {\n      return;\n    }\n\n    const isSessionActive = this.checkAndHandleExpiredSession();\n\n    if (!isSessionActive) {\n      // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n      // ms, we will re-use the existing session, otherwise create a new\n      // session\n      logInfo('[Replay] Document has become active, but session has expired');\n      return;\n    }\n\n    if (breadcrumb) {\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n  }\n\n  /**\n   * Update user activity (across session lifespans)\n   */\n   _updateUserActivity(_lastActivity = Date.now()) {\n    this._lastActivity = _lastActivity;\n  }\n\n  /**\n   * Updates the session's last activity timestamp\n   */\n   _updateSessionActivity(_lastActivity = Date.now()) {\n    if (this.session) {\n      this.session.lastActivity = _lastActivity;\n      this._maybeSaveSession();\n    }\n  }\n\n  /**\n   * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n   */\n   _createCustomBreadcrumb(breadcrumb) {\n    this.addUpdate(() => {\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this.throttledAddEvent({\n        type: EventType.Custom,\n        timestamp: breadcrumb.timestamp || 0,\n        data: {\n          tag: 'breadcrumb',\n          payload: breadcrumb,\n        },\n      });\n    });\n  }\n\n  /**\n   * Observed performance events are added to `this.performanceEntries`. These\n   * are included in the replay event before it is finished and sent to Sentry.\n   */\n   _addPerformanceEntries() {\n    const performanceEntries = createPerformanceEntries(this.performanceEntries).concat(this.replayPerformanceEntries);\n\n    this.performanceEntries = [];\n    this.replayPerformanceEntries = [];\n\n    return Promise.all(createPerformanceSpans(this, performanceEntries));\n  }\n\n  /**\n   * Clear _context\n   */\n   _clearContext() {\n    // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n    this._context.errorIds.clear();\n    this._context.traceIds.clear();\n    this._context.urls = [];\n  }\n\n  /** Update the initial timestamp based on the buffer content. */\n   _updateInitialTimestampFromEventBuffer() {\n    const { session, eventBuffer } = this;\n    if (!session || !eventBuffer) {\n      return;\n    }\n\n    // we only ever update this on the initial segment\n    if (session.segmentId) {\n      return;\n    }\n\n    const earliestEvent = eventBuffer.getEarliestTimestamp();\n    if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n      this._context.initialTimestamp = earliestEvent;\n    }\n  }\n\n  /**\n   * Return and clear _context\n   */\n   _popEventContext() {\n    const _context = {\n      initialTimestamp: this._context.initialTimestamp,\n      initialUrl: this._context.initialUrl,\n      errorIds: Array.from(this._context.errorIds),\n      traceIds: Array.from(this._context.traceIds),\n      urls: this._context.urls,\n    };\n\n    this._clearContext();\n\n    return _context;\n  }\n\n  /**\n   * Flushes replay event buffer to Sentry.\n   *\n   * Performance events are only added right before flushing - this is\n   * due to the buffered performance observer events.\n   *\n   * Should never be called directly, only by `flush`\n   */\n   async _runFlush() {\n    const replayId = this.getSessionId();\n\n    if (!this.session || !this.eventBuffer || !replayId) {\n      DEBUG_BUILD && logger.error('[Replay] No session or eventBuffer found to flush.');\n      return;\n    }\n\n    await this._addPerformanceEntries();\n\n    // Check eventBuffer again, as it could have been stopped in the meanwhile\n    if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n      return;\n    }\n\n    // Only attach memory event if eventBuffer is not empty\n    await addMemoryEntry(this);\n\n    // Check eventBuffer again, as it could have been stopped in the meanwhile\n    if (!this.eventBuffer) {\n      return;\n    }\n\n    // if this changed in the meanwhile, e.g. because the session was refreshed or similar, we abort here\n    if (replayId !== this.getSessionId()) {\n      return;\n    }\n\n    try {\n      // This uses the data from the eventBuffer, so we need to call this before `finish()\n      this._updateInitialTimestampFromEventBuffer();\n\n      const timestamp = Date.now();\n\n      // Check total duration again, to avoid sending outdated stuff\n      // We leave 30s wiggle room to accomodate late flushing etc.\n      // This _could_ happen when the browser is suspended during flushing, in which case we just want to stop\n      if (timestamp - this._context.initialTimestamp > this._options.maxReplayDuration + 30000) {\n        throw new Error('Session is too long, not sending replay');\n      }\n\n      const eventContext = this._popEventContext();\n      // Always increment segmentId regardless of outcome of sending replay\n      const segmentId = this.session.segmentId++;\n      this._maybeSaveSession();\n\n      // Note this empties the event buffer regardless of outcome of sending replay\n      const recordingData = await this.eventBuffer.finish();\n\n      await sendReplay({\n        replayId,\n        recordingData,\n        segmentId,\n        eventContext,\n        session: this.session,\n        options: this.getOptions(),\n        timestamp,\n      });\n    } catch (err) {\n      this._handleException(err);\n\n      // This means we retried 3 times and all of them failed,\n      // or we ran into a problem we don't want to retry, like rate limiting.\n      // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this.stop({ reason: 'sendReplay' });\n\n      const client = getClient();\n\n      if (client) {\n        client.recordDroppedEvent('send_error', 'replay');\n      }\n    }\n  }\n\n  /**\n   * Flush recording data to Sentry. Creates a lock so that only a single flush\n   * can be active at a time. Do not call this directly.\n   */\n   __init5() {this._flush = async ({\n    force = false,\n  }\n\n = {}) => {\n    if (!this._isEnabled && !force) {\n      // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n      return;\n    }\n\n    if (!this.checkAndHandleExpiredSession()) {\n      DEBUG_BUILD && logger.error('[Replay] Attempting to finish replay event after session expired.');\n      return;\n    }\n\n    if (!this.session) {\n      // should never happen, as we would have bailed out before\n      return;\n    }\n\n    const start = this.session.started;\n    const now = Date.now();\n    const duration = now - start;\n\n    // A flush is about to happen, cancel any queued flushes\n    this._debouncedFlush.cancel();\n\n    // If session is too short, or too long (allow some wiggle room over maxReplayDuration), do not send it\n    // This _should_ not happen, but it may happen if flush is triggered due to a page activity change or similar\n    const tooShort = duration < this._options.minReplayDuration;\n    const tooLong = duration > this._options.maxReplayDuration + 5000;\n    if (tooShort || tooLong) {\n      logInfo(\n        `[Replay] Session duration (${Math.floor(duration / 1000)}s) is too ${\n          tooShort ? 'short' : 'long'\n        }, not sending replay.`,\n        this._options._experiments.traceInternals,\n      );\n\n      if (tooShort) {\n        this._debouncedFlush();\n      }\n      return;\n    }\n\n    const eventBuffer = this.eventBuffer;\n    if (eventBuffer && this.session.segmentId === 0 && !eventBuffer.hasCheckout) {\n      logInfo('[Replay] Flushing initial segment without checkout.', this._options._experiments.traceInternals);\n      // TODO FN: Evaluate if we want to stop here, or remove this again?\n    }\n\n    // this._flushLock acts as a lock so that future calls to `_flush()`\n    // will be blocked until this promise resolves\n    if (!this._flushLock) {\n      this._flushLock = this._runFlush();\n      await this._flushLock;\n      this._flushLock = undefined;\n      return;\n    }\n\n    // Wait for previous flush to finish, then call the debounced `_flush()`.\n    // It's possible there are other flush requests queued and waiting for it\n    // to resolve. We want to reduce all outstanding requests (as well as any\n    // new flush requests that occur within a second of the locked flush\n    // completing) into a single flush.\n\n    try {\n      await this._flushLock;\n    } catch (err) {\n      DEBUG_BUILD && logger.error(err);\n    } finally {\n      this._debouncedFlush();\n    }\n  };}\n\n  /** Save the session, if it is sticky */\n   _maybeSaveSession() {\n    if (this.session && this._options.stickySession) {\n      saveSession(this.session);\n    }\n  }\n\n  /** Handler for rrweb.record.onMutation */\n   __init6() {this._onMutationHandler = (mutations) => {\n    const count = mutations.length;\n\n    const mutationLimit = this._options.mutationLimit;\n    const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n    const overMutationLimit = mutationLimit && count > mutationLimit;\n\n    // Create a breadcrumb if a lot of mutations happen at the same time\n    // We can show this in the UI as an information with potential performance improvements\n    if (count > mutationBreadcrumbLimit || overMutationLimit) {\n      const breadcrumb = createBreadcrumb({\n        category: 'replay.mutations',\n        data: {\n          count,\n          limit: overMutationLimit,\n        },\n      });\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n\n    // Stop replay if over the mutation limit\n    if (overMutationLimit) {\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this.stop({ reason: 'mutationLimit', forceFlush: this.recordingMode === 'session' });\n      return false;\n    }\n\n    // `true` means we use the regular mutation handling by rrweb\n    return true;\n  };}\n}\n\nfunction getOption(\n  selectors,\n  defaultSelectors,\n  deprecatedClassOption,\n  deprecatedSelectorOption,\n) {\n  const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n  const allSelectors = [\n    ...selectors,\n    // @deprecated\n    ...deprecatedSelectors,\n\n    // sentry defaults\n    ...defaultSelectors,\n  ];\n\n  // @deprecated\n  if (typeof deprecatedClassOption !== 'undefined') {\n    // NOTE: No support for RegExp\n    if (typeof deprecatedClassOption === 'string') {\n      allSelectors.push(`.${deprecatedClassOption}`);\n    }\n\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n      );\n    });\n  }\n\n  return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nfunction getPrivacyOptions({\n  mask,\n  unmask,\n  block,\n  unblock,\n  ignore,\n\n  // eslint-disable-next-line deprecation/deprecation\n  blockClass,\n  // eslint-disable-next-line deprecation/deprecation\n  blockSelector,\n  // eslint-disable-next-line deprecation/deprecation\n  maskTextClass,\n  // eslint-disable-next-line deprecation/deprecation\n  maskTextSelector,\n  // eslint-disable-next-line deprecation/deprecation\n  ignoreClass,\n}) {\n  const defaultBlockedElements = ['base[href=\"/\"]'];\n\n  const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n  const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n  const options = {\n    // We are making the decision to make text and input selectors the same\n    maskTextSelector: maskSelector,\n    unmaskTextSelector: unmaskSelector,\n\n    blockSelector: getOption(\n      block,\n      ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n      blockClass,\n      blockSelector,\n    ),\n    unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n    ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n  };\n\n  if (blockClass instanceof RegExp) {\n    options.blockClass = blockClass;\n  }\n\n  if (maskTextClass instanceof RegExp) {\n    options.maskTextClass = maskTextClass;\n  }\n\n  return options;\n}\n\n/**\n * Masks an attribute if necessary, otherwise return attribute value as-is.\n */\nfunction maskAttribute({\n  el,\n  key,\n  maskAttributes,\n  maskAllText,\n  privacyOptions,\n  value,\n}) {\n  // We only mask attributes if `maskAllText` is true\n  if (!maskAllText) {\n    return value;\n  }\n\n  // unmaskTextSelector takes precendence\n  if (privacyOptions.unmaskTextSelector && el.matches(privacyOptions.unmaskTextSelector)) {\n    return value;\n  }\n\n  if (\n    maskAttributes.includes(key) ||\n    // Need to mask `value` attribute for `<input>` if it's a button-like\n    // type\n    (key === 'value' && el.tagName === 'INPUT' && ['submit', 'button'].includes(el.getAttribute('type') || ''))\n  ) {\n    return value.replace(/[\\S]/g, '*');\n  }\n\n  return value;\n}\n\nconst MEDIA_SELECTORS =\n  'img,image,svg,video,object,picture,embed,map,audio,link[rel=\"icon\"],link[rel=\"apple-touch-icon\"]';\n\nconst DEFAULT_NETWORK_HEADERS = ['content-length', 'content-type', 'accept'];\n\nlet _initialized = false;\n\nconst replayIntegration$1 = ((options) => {\n  // eslint-disable-next-line deprecation/deprecation\n  return new Replay$1(options);\n}) ;\n\n/**\n * The main replay integration class, to be passed to `init({  integrations: [] })`.\n * @deprecated Use `replayIntegration()` instead.\n */\nclass Replay$1  {\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'Replay';}\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * Options to pass to `rrweb.record()`\n   */\n\n  /**\n   * Initial options passed to the replay integration, merged with default values.\n   * Note: `sessionSampleRate` and `errorSampleRate` are not required here, as they\n   * can only be finally set when setupOnce() is called.\n   *\n   * @private\n   */\n\n   constructor({\n    flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,\n    flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,\n    minReplayDuration = MIN_REPLAY_DURATION,\n    maxReplayDuration = MAX_REPLAY_DURATION,\n    stickySession = true,\n    useCompression = true,\n    workerUrl,\n    _experiments = {},\n    sessionSampleRate,\n    errorSampleRate,\n    maskAllText = true,\n    maskAllInputs = true,\n    blockAllMedia = true,\n\n    mutationBreadcrumbLimit = 750,\n    mutationLimit = 10000,\n\n    slowClickTimeout = 7000,\n    slowClickIgnoreSelectors = [],\n\n    networkDetailAllowUrls = [],\n    networkDetailDenyUrls = [],\n    networkCaptureBodies = true,\n    networkRequestHeaders = [],\n    networkResponseHeaders = [],\n\n    mask = [],\n    maskAttributes = ['title', 'placeholder'],\n    unmask = [],\n    block = [],\n    unblock = [],\n    ignore = [],\n    maskFn,\n\n    beforeAddRecordingEvent,\n    beforeErrorSampling,\n\n    // eslint-disable-next-line deprecation/deprecation\n    blockClass,\n    // eslint-disable-next-line deprecation/deprecation\n    blockSelector,\n    // eslint-disable-next-line deprecation/deprecation\n    maskInputOptions,\n    // eslint-disable-next-line deprecation/deprecation\n    maskTextClass,\n    // eslint-disable-next-line deprecation/deprecation\n    maskTextSelector,\n    // eslint-disable-next-line deprecation/deprecation\n    ignoreClass,\n  } = {}) {\n    // eslint-disable-next-line deprecation/deprecation\n    this.name = Replay$1.id;\n\n    const privacyOptions = getPrivacyOptions({\n      mask,\n      unmask,\n      block,\n      unblock,\n      ignore,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      ignoreClass,\n    });\n\n    this._recordingOptions = {\n      maskAllInputs,\n      maskAllText,\n      maskInputOptions: { ...(maskInputOptions || {}), password: true },\n      maskTextFn: maskFn,\n      maskInputFn: maskFn,\n      maskAttributeFn: (key, value, el) =>\n        maskAttribute({\n          maskAttributes,\n          maskAllText,\n          privacyOptions,\n          key,\n          value,\n          el,\n        }),\n\n      ...privacyOptions,\n\n      // Our defaults\n      slimDOMOptions: 'all',\n      inlineStylesheet: true,\n      // Disable inline images as it will increase segment/replay size\n      inlineImages: false,\n      // collect fonts, but be aware that `sentry.io` needs to be an allowed\n      // origin for playback\n      collectFonts: true,\n      errorHandler: (err) => {\n        try {\n          err.__rrweb__ = true;\n        } catch (error) {\n          // ignore errors here\n          // this can happen if the error is frozen or does not allow mutation for other reasons\n        }\n      },\n    };\n\n    this._initialOptions = {\n      flushMinDelay,\n      flushMaxDelay,\n      minReplayDuration: Math.min(minReplayDuration, MIN_REPLAY_DURATION_LIMIT),\n      maxReplayDuration: Math.min(maxReplayDuration, MAX_REPLAY_DURATION),\n      stickySession,\n      sessionSampleRate,\n      errorSampleRate,\n      useCompression,\n      workerUrl,\n      blockAllMedia,\n      maskAllInputs,\n      maskAllText,\n      mutationBreadcrumbLimit,\n      mutationLimit,\n      slowClickTimeout,\n      slowClickIgnoreSelectors,\n      networkDetailAllowUrls,\n      networkDetailDenyUrls,\n      networkCaptureBodies,\n      networkRequestHeaders: _getMergedNetworkHeaders(networkRequestHeaders),\n      networkResponseHeaders: _getMergedNetworkHeaders(networkResponseHeaders),\n      beforeAddRecordingEvent,\n      beforeErrorSampling,\n\n      _experiments,\n    };\n\n    if (typeof sessionSampleRate === 'number') {\n      // eslint-disable-next-line\n      console.warn(\n        `[Replay] You are passing \\`sessionSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysSessionSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,\n      );\n\n      this._initialOptions.sessionSampleRate = sessionSampleRate;\n    }\n\n    if (typeof errorSampleRate === 'number') {\n      // eslint-disable-next-line\n      console.warn(\n        `[Replay] You are passing \\`errorSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysOnErrorSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,\n      );\n\n      this._initialOptions.errorSampleRate = errorSampleRate;\n    }\n\n    if (this._initialOptions.blockAllMedia) {\n      // `blockAllMedia` is a more user friendly option to configure blocking\n      // embedded media elements\n      this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector\n        ? MEDIA_SELECTORS\n        : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;\n    }\n\n    if (this._isInitialized && isBrowser()) {\n      throw new Error('Multiple Sentry Session Replay instances are not supported');\n    }\n\n    this._isInitialized = true;\n  }\n\n  /** If replay has already been initialized */\n   get _isInitialized() {\n    return _initialized;\n  }\n\n  /** Update _isInitialized */\n   set _isInitialized(value) {\n    _initialized = value;\n  }\n\n  /**\n   * Setup and initialize replay container\n   */\n   setupOnce() {\n    if (!isBrowser()) {\n      return;\n    }\n\n    this._setup();\n\n    // Once upon a time, we tried to create a transaction in `setupOnce` and it would\n    // potentially create a transaction before some native SDK integrations have run\n    // and applied their own global event processor. An example is:\n    // https://github.com/getsentry/sentry-javascript/blob/b47ceafbdac7f8b99093ce6023726ad4687edc48/packages/browser/src/integrations/useragent.ts\n    //\n    // So we call `this._initialize()` in next event loop as a workaround to wait for other\n    // global event processors to finish. This is no longer needed, but keeping it\n    // here to avoid any future issues.\n    setTimeout(() => this._initialize());\n  }\n\n  /**\n   * Start a replay regardless of sampling rate. Calling this will always\n   * create a new session. Will throw an error if replay is already in progress.\n   *\n   * Creates or loads a session, attaches listeners to varying events (DOM,\n   * PerformanceObserver, Recording, Sentry SDK, etc)\n   */\n   start() {\n    if (!this._replay) {\n      return;\n    }\n\n    this._replay.start();\n  }\n\n  /**\n   * Start replay buffering. Buffers until `flush()` is called or, if\n   * `replaysOnErrorSampleRate` > 0, until an error occurs.\n   */\n   startBuffering() {\n    if (!this._replay) {\n      return;\n    }\n\n    this._replay.startBuffering();\n  }\n\n  /**\n   * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n   * does not support a teardown\n   */\n   stop() {\n    if (!this._replay) {\n      return Promise.resolve();\n    }\n\n    return this._replay.stop({ forceFlush: this._replay.recordingMode === 'session' });\n  }\n\n  /**\n   * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n   * Unless `continueRecording` is false, the replay will continue to record and\n   * behave as a \"session\"-based replay.\n   *\n   * Otherwise, queue up a flush.\n   */\n   flush(options) {\n    if (!this._replay || !this._replay.isEnabled()) {\n      return Promise.resolve();\n    }\n\n    return this._replay.sendBufferedReplayOrFlush(options);\n  }\n\n  /**\n   * Get the current session ID.\n   */\n   getReplayId() {\n    if (!this._replay || !this._replay.isEnabled()) {\n      return;\n    }\n\n    return this._replay.getSessionId();\n  }\n\n  /**\n   * Initializes replay.\n   */\n   _initialize() {\n    if (!this._replay) {\n      return;\n    }\n\n    // We have to run this in _initialize, because this runs in setTimeout\n    // So when this runs all integrations have been added\n    // Before this, we cannot access integrations on the client,\n    // so we need to mutate the options here\n    this._maybeLoadFromReplayCanvasIntegration();\n\n    this._replay.initializeSampling();\n  }\n\n  /** Setup the integration. */\n   _setup() {\n    // Client is not available in constructor, so we need to wait until setupOnce\n    const finalOptions = loadReplayOptionsFromClient(this._initialOptions);\n\n    this._replay = new ReplayContainer({\n      options: finalOptions,\n      recordingOptions: this._recordingOptions,\n    });\n  }\n\n  /** Get canvas options from ReplayCanvas integration, if it is also added. */\n   _maybeLoadFromReplayCanvasIntegration() {\n    // To save bundle size, we skip checking for stuff here\n    // and instead just try-catch everything - as generally this should all be defined\n    /* eslint-disable @typescript-eslint/no-non-null-assertion */\n    try {\n      const client = getClient();\n      const canvasIntegration = client.getIntegrationByName('ReplayCanvas')\n\n;\n      if (!canvasIntegration) {\n        return;\n      }\n\n      this._replay['_canvas'] = canvasIntegration.getOptions();\n    } catch (e) {\n      // ignore errors here\n    }\n    /* eslint-enable @typescript-eslint/no-non-null-assertion */\n  }\n}Replay$1.__initStatic();\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions) {\n  const client = getClient();\n  const opt = client && (client.getOptions() );\n\n  const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };\n\n  if (!opt) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('SDK client is not available.');\n    });\n    return finalOptions;\n  }\n\n  if (\n    initialOptions.sessionSampleRate == null && // TODO remove once deprecated rates are removed\n    initialOptions.errorSampleRate == null && // TODO remove once deprecated rates are removed\n    opt.replaysSessionSampleRate == null &&\n    opt.replaysOnErrorSampleRate == null\n  ) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn(\n        'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',\n      );\n    });\n  }\n\n  if (typeof opt.replaysSessionSampleRate === 'number') {\n    finalOptions.sessionSampleRate = opt.replaysSessionSampleRate;\n  }\n\n  if (typeof opt.replaysOnErrorSampleRate === 'number') {\n    finalOptions.errorSampleRate = opt.replaysOnErrorSampleRate;\n  }\n\n  return finalOptions;\n}\n\nfunction _getMergedNetworkHeaders(headers) {\n  return [...DEFAULT_NETWORK_HEADERS, ...headers.map(header => header.toLowerCase())];\n}\n\n/**\n * This is a small utility to get a type-safe instance of the Replay integration.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getReplay$1() {\n  const client = getClient();\n  return (\n    client && client.getIntegrationByName && client.getIntegrationByName('Replay')\n  );\n}\n\n// eslint-disable-next-line deprecation/deprecation\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\nconst getReplay = getReplay$1;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\nconst replayIntegration = replayIntegration$1;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\n// eslint-disable-next-line deprecation/deprecation\nclass Replay extends Replay$1 {}\n\nexport { Replay$1 as InternalReplay, Replay, getReplay, getReplay$1 as internalGetReplay, replayIntegration$1 as internalReplayIntegration, replayIntegration };\n//# sourceMappingURL=index.js.map\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\n  // by checking for loose equality to `null`, we catch both `null` and `undefined`\n  return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n//   if (lhs != null) {\n//     return lhs;\n//   } else {\n//     return rhsFn();\n//   }\n// }\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n","import type { DsnComponents, MetricBucketItem, SdkMetadata, StatsdEnvelope, StatsdItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\nimport { serializeMetricBuckets } from './utils';\n\n/**\n * Create envelope from a metric aggregate.\n */\nexport function createMetricEnvelope(\n  metricBucketItems: Array<MetricBucketItem>,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): StatsdEnvelope {\n  const headers: StatsdEnvelope[0] = {\n    sent_at: new Date().toISOString(),\n  };\n\n  if (metadata && metadata.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  const item = createMetricEnvelopeItem(metricBucketItems);\n  return createEnvelope<StatsdEnvelope>(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems: MetricBucketItem[]): StatsdItem {\n  const payload = serializeMetricBuckets(metricBucketItems);\n  const metricHeaders: StatsdItem[0] = {\n    type: 'statsd',\n    length: payload.length,\n  };\n  return [metricHeaders, payload];\n}\n","import type { MeasurementUnit, MetricBucketItem, Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { MetricType } from './types';\n\n/**\n * Generate bucket key from metric properties.\n */\nexport function getBucketKey(\n  metricType: MetricType,\n  name: string,\n  unit: MeasurementUnit,\n  tags: Record<string, string>,\n): string {\n  const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n  return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nexport function simpleHash(s: string): number {\n  let rv = 0;\n  for (let i = 0; i < s.length; i++) {\n    const c = s.charCodeAt(i);\n    rv = (rv << 5) - rv + c;\n    rv &= rv;\n  }\n  return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nexport function serializeMetricBuckets(metricBucketItems: MetricBucketItem[]): string {\n  let out = '';\n  for (const item of metricBucketItems) {\n    const tagEntries = Object.entries(item.tags);\n    const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n    out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n  }\n  return out;\n}\n\n/** Sanitizes units */\nexport function sanitizeUnit(unit: string): string {\n  return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/** Sanitizes metric keys */\nexport function sanitizeMetricKey(key: string): string {\n  return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\nfunction sanitizeTagKey(key: string): string {\n  return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\nconst tagValueReplacements: [string, string][] = [\n  ['\\n', '\\\\n'],\n  ['\\r', '\\\\r'],\n  ['\\t', '\\\\t'],\n  ['\\\\', '\\\\\\\\'],\n  ['|', '\\\\u{7c}'],\n  [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input: string): string {\n  for (const [search, replacement] of tagValueReplacements) {\n    if (input === search) {\n      return replacement;\n    }\n  }\n\n  return input;\n}\n\nfunction sanitizeTagValue(value: string): string {\n  return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nexport function sanitizeTags(unsanitizedTags: Record<string, Primitive>): Record<string, string> {\n  const tags: Record<string, string> = {};\n  for (const key in unsanitizedTags) {\n    if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n      const sanitizedKey = sanitizeTagKey(key);\n      tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n    }\n  }\n  return tags;\n}\n","/* eslint-disable max-lines */\nimport type {\n  Breadcrumb,\n  BreadcrumbHint,\n  Client,\n  ClientOptions,\n  DataCategory,\n  DsnComponents,\n  DynamicSamplingContext,\n  Envelope,\n  ErrorEvent,\n  Event,\n  EventDropReason,\n  EventHint,\n  EventProcessor,\n  FeedbackEvent,\n  Integration,\n  IntegrationClass,\n  MetricBucketItem,\n  MetricsAggregator,\n  Outcome,\n  ParameterizedString,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  Severity,\n  SeverityLevel,\n  StartSpanOptions,\n  Transaction,\n  TransactionEvent,\n  Transport,\n  TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n  SentryError,\n  SyncPromise,\n  addItemToEnvelope,\n  checkOrSetAlreadyCaught,\n  createAttachmentEnvelopeItem,\n  isParameterizedString,\n  isPlainObject,\n  isPrimitive,\n  isThenable,\n  logger,\n  makeDsn,\n  rejectedSyncPromise,\n  resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { getClient } from './exports';\nimport { getIsolationScope } from './hub';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport { createMetricEnvelope } from './metrics/envelope';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(options);\n *   }\n *\n *   // ...\n * }\n */\nexport abstract class BaseClient<O extends ClientOptions> implements Client<O> {\n  /**\n   * A reference to a metrics aggregator\n   *\n   * @experimental Note this is alpha API. It may experience breaking changes in the future.\n   */\n  public metricsAggregator?: MetricsAggregator;\n\n  /** Options passed to the SDK. */\n  protected readonly _options: O;\n\n  /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n  protected readonly _dsn?: DsnComponents;\n\n  protected readonly _transport?: Transport;\n\n  /** Array of set up integrations. */\n  protected _integrations: IntegrationIndex;\n\n  /** Indicates whether this client's integrations have been set up. */\n  protected _integrationsInitialized: boolean;\n\n  /** Number of calls being processed */\n  protected _numProcessing: number;\n\n  protected _eventProcessors: EventProcessor[];\n\n  /** Holds flushable  */\n  private _outcomes: { [key: string]: number };\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  private _hooks: Record<string, Function[]>;\n\n  /**\n   * Initializes this client instance.\n   *\n   * @param options Options for the client.\n   */\n  protected constructor(options: O) {\n    this._options = options;\n    this._integrations = {};\n    this._integrationsInitialized = false;\n    this._numProcessing = 0;\n    this._outcomes = {};\n    this._hooks = {};\n    this._eventProcessors = [];\n\n    if (options.dsn) {\n      this._dsn = makeDsn(options.dsn);\n    } else {\n      DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n    }\n\n    if (this._dsn) {\n      const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n      this._transport = options.transport({\n        tunnel: this._options.tunnel,\n        recordDroppedEvent: this.recordDroppedEvent.bind(this),\n        ...options.transportOptions,\n        url,\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n    // ensure we haven't captured this very object before\n    if (checkOrSetAlreadyCaught(exception)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId: string | undefined = hint && hint.event_id;\n\n    this._process(\n      this.eventFromException(exception, hint)\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureMessage(\n    message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    level?: Severity | SeverityLevel,\n    hint?: EventHint,\n    scope?: Scope,\n  ): string | undefined {\n    let eventId: string | undefined = hint && hint.event_id;\n\n    const eventMessage = isParameterizedString(message) ? message : String(message);\n\n    const promisedEvent = isPrimitive(message)\n      ? this.eventFromMessage(eventMessage, level, hint)\n      : this.eventFromException(message, hint);\n\n    this._process(\n      promisedEvent\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n    // ensure we haven't captured this very object before\n    if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId: string | undefined = hint && hint.event_id;\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n\n    this._process(\n      this._captureEvent(event, hint, capturedSpanScope || scope).then(result => {\n        eventId = result;\n      }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureSession(session: Session): void {\n    if (!(typeof session.release === 'string')) {\n      DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n    } else {\n      this.sendSession(session);\n      // After sending, we set init false to indicate it's not the first occurrence\n      updateSession(session, { init: false });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getDsn(): DsnComponents | undefined {\n    return this._dsn;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getOptions(): O {\n    return this._options;\n  }\n\n  /**\n   * @see SdkMetadata in @sentry/types\n   *\n   * @return The metadata of the SDK\n   */\n  public getSdkMetadata(): SdkMetadata | undefined {\n    return this._options._metadata;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTransport(): Transport | undefined {\n    return this._transport;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public flush(timeout?: number): PromiseLike<boolean> {\n    const transport = this._transport;\n    if (transport) {\n      if (this.metricsAggregator) {\n        this.metricsAggregator.flush();\n      }\n      return this._isClientDoneProcessing(timeout).then(clientFinished => {\n        return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n      });\n    } else {\n      return resolvedSyncPromise(true);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public close(timeout?: number): PromiseLike<boolean> {\n    return this.flush(timeout).then(result => {\n      this.getOptions().enabled = false;\n      if (this.metricsAggregator) {\n        this.metricsAggregator.close();\n      }\n      return result;\n    });\n  }\n\n  /** Get all installed event processors. */\n  public getEventProcessors(): EventProcessor[] {\n    return this._eventProcessors;\n  }\n\n  /** @inheritDoc */\n  public addEventProcessor(eventProcessor: EventProcessor): void {\n    this._eventProcessors.push(eventProcessor);\n  }\n\n  /**\n   * This is an internal function to setup all integrations that should run on the client.\n   * @deprecated Use `client.init()` instead.\n   */\n  public setupIntegrations(forceInitialize?: boolean): void {\n    if ((forceInitialize && !this._integrationsInitialized) || (this._isEnabled() && !this._integrationsInitialized)) {\n      this._setupIntegrations();\n    }\n  }\n\n  /** @inheritdoc */\n  public init(): void {\n    if (this._isEnabled()) {\n      this._setupIntegrations();\n    }\n  }\n\n  /**\n   * Gets an installed integration by its `id`.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n   * @deprecated Use `getIntegrationByName()` instead.\n   */\n  public getIntegrationById(integrationId: string): Integration | undefined {\n    return this.getIntegrationByName(integrationId);\n  }\n\n  /**\n   * Gets an installed integration by its name.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n   */\n  public getIntegrationByName<T extends Integration = Integration>(integrationName: string): T | undefined {\n    return this._integrations[integrationName] as T | undefined;\n  }\n\n  /**\n   * Returns the client's instance of the given integration class, it any.\n   * @deprecated Use `getIntegrationByName()` instead.\n   */\n  public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n    try {\n      return (this._integrations[integration.id] as T) || null;\n    } catch (_oO) {\n      DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n      return null;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addIntegration(integration: Integration): void {\n    const isAlreadyInstalled = this._integrations[integration.name];\n\n    // This hook takes care of only installing if not already installed\n    setupIntegration(this, integration, this._integrations);\n    // Here we need to check manually to make sure to not run this multiple times\n    if (!isAlreadyInstalled) {\n      afterSetupIntegrations(this, [integration]);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendEvent(event: Event, hint: EventHint = {}): void {\n    this.emit('beforeSendEvent', event, hint);\n\n    let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n    for (const attachment of hint.attachments || []) {\n      env = addItemToEnvelope(\n        env,\n        createAttachmentEnvelopeItem(\n          attachment,\n          this._options.transportOptions && this._options.transportOptions.textEncoder,\n        ),\n      );\n    }\n\n    const promise = this._sendEnvelope(env);\n    if (promise) {\n      promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendSession(session: Session | SessionAggregates): void {\n    const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(env);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public recordDroppedEvent(reason: EventDropReason, category: DataCategory, _event?: Event): void {\n    // Note: we use `event` in replay, where we overwrite this hook.\n\n    if (this._options.sendClientReports) {\n      // We want to track each category (error, transaction, session, replay_event) separately\n      // but still keep the distinction between different type of outcomes.\n      // We could use nested maps, but it's much easier to read and type this way.\n      // A correct type for map-based implementation if we want to go that route\n      // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n      // With typescript 4.1 we could even use template literal types\n      const key = `${reason}:${category}`;\n      DEBUG_BUILD && logger.log(`Adding outcome: \"${key}\"`);\n\n      // The following works because undefined + 1 === NaN and NaN is falsy\n      this._outcomes[key] = this._outcomes[key] + 1 || 1;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureAggregateMetrics(metricBucketItems: Array<MetricBucketItem>): void {\n    DEBUG_BUILD && logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n    const metricsEnvelope = createMetricEnvelope(\n      metricBucketItems,\n      this._dsn,\n      this._options._metadata,\n      this._options.tunnel,\n    );\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(metricsEnvelope);\n  }\n\n  // Keep on() & emit() signatures in sync with types' client.ts interface\n  /* eslint-disable @typescript-eslint/unified-signatures */\n\n  /** @inheritdoc */\n  public on(hook: 'startTransaction', callback: (transaction: Transaction) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'finishTransaction', callback: (transaction: Transaction) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'afterSendEvent',\n    callback: (event: Event, sendResponse: TransportMakeRequestResponse | void) => void,\n  ): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'otelSpanEnd', callback: (otelSpan: unknown, mutableOptions: { drop: boolean }) => void): void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'beforeSendFeedback',\n    callback: (feedback: FeedbackEvent, options?: { includeReplay: boolean }) => void,\n  ): void;\n\n  /** @inheritdoc */\n  public on(hook: 'startPageLoadSpan', callback: (options: StartSpanOptions) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: string, callback: unknown): void {\n    if (!this._hooks[hook]) {\n      this._hooks[hook] = [];\n    }\n\n    // @ts-expect-error We assue the types are correct\n    this._hooks[hook].push(callback);\n  }\n\n  /** @inheritdoc */\n  public emit(hook: 'startTransaction', transaction: Transaction): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'finishTransaction', transaction: Transaction): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse | void): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'otelSpanEnd', otelSpan: unknown, mutableOptions: { drop: boolean }): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay: boolean }): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'startPageLoadSpan', options: StartSpanOptions): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'startNavigationSpan', options: StartSpanOptions): void;\n\n  /** @inheritdoc */\n  public emit(hook: string, ...rest: unknown[]): void {\n    if (this._hooks[hook]) {\n      this._hooks[hook].forEach(callback => callback(...rest));\n    }\n  }\n\n  /* eslint-enable @typescript-eslint/unified-signatures */\n\n  /** Setup integrations for this client. */\n  protected _setupIntegrations(): void {\n    const { integrations } = this._options;\n    this._integrations = setupIntegrations(this, integrations);\n    afterSetupIntegrations(this, integrations);\n\n    // TODO v8: We don't need this flag anymore\n    this._integrationsInitialized = true;\n  }\n\n  /** Updates existing session based on the provided event */\n  protected _updateSessionFromEvent(session: Session, event: Event): void {\n    let crashed = false;\n    let errored = false;\n    const exceptions = event.exception && event.exception.values;\n\n    if (exceptions) {\n      errored = true;\n\n      for (const ex of exceptions) {\n        const mechanism = ex.mechanism;\n        if (mechanism && mechanism.handled === false) {\n          crashed = true;\n          break;\n        }\n      }\n    }\n\n    // A session is updated and that session update is sent in only one of the two following scenarios:\n    // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n    // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n    const sessionNonTerminal = session.status === 'ok';\n    const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n    if (shouldUpdateAndSend) {\n      updateSession(session, {\n        ...(crashed && { status: 'crashed' }),\n        errors: session.errors || Number(errored || crashed),\n      });\n      this.captureSession(session);\n    }\n  }\n\n  /**\n   * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n   * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n   * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n   * `false` otherwise\n   */\n  protected _isClientDoneProcessing(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise(resolve => {\n      let ticked: number = 0;\n      const tick: number = 1;\n\n      const interval = setInterval(() => {\n        if (this._numProcessing == 0) {\n          clearInterval(interval);\n          resolve(true);\n        } else {\n          ticked += tick;\n          if (timeout && ticked >= timeout) {\n            clearInterval(interval);\n            resolve(false);\n          }\n        }\n      }, tick);\n    });\n  }\n\n  /** Determines whether this SDK is enabled and a transport is present. */\n  protected _isEnabled(): boolean {\n    return this.getOptions().enabled !== false && this._transport !== undefined;\n  }\n\n  /**\n   * Adds common information to events.\n   *\n   * The information includes release and environment from `options`,\n   * breadcrumbs and context (extra, tags and user) from the scope.\n   *\n   * Information that is already present in the event is never overwritten. For\n   * nested objects, such as the context, keys are merged.\n   *\n   * @param event The original event.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A new event with more information.\n   */\n  protected _prepareEvent(\n    event: Event,\n    hint: EventHint,\n    scope?: Scope,\n    isolationScope = getIsolationScope(),\n  ): PromiseLike<Event | null> {\n    const options = this.getOptions();\n    const integrations = Object.keys(this._integrations);\n    if (!hint.integrations && integrations.length > 0) {\n      hint.integrations = integrations;\n    }\n\n    this.emit('preprocessEvent', event, hint);\n\n    return prepareEvent(options, event, hint, scope, this, isolationScope).then(evt => {\n      if (evt === null) {\n        return evt;\n      }\n\n      const propagationContext = {\n        ...isolationScope.getPropagationContext(),\n        ...(scope ? scope.getPropagationContext() : undefined),\n      };\n\n      const trace = evt.contexts && evt.contexts.trace;\n      if (!trace && propagationContext) {\n        const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n        evt.contexts = {\n          trace: {\n            trace_id,\n            span_id: spanId,\n            parent_span_id: parentSpanId,\n          },\n          ...evt.contexts,\n        };\n\n        const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n        evt.sdkProcessingMetadata = {\n          dynamicSamplingContext,\n          ...evt.sdkProcessingMetadata,\n        };\n      }\n      return evt;\n    });\n  }\n\n  /**\n   * Processes the event and logs an error in case of rejection\n   * @param event\n   * @param hint\n   * @param scope\n   */\n  protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike<string | undefined> {\n    return this._processEvent(event, hint, scope).then(\n      finalEvent => {\n        return finalEvent.event_id;\n      },\n      reason => {\n        if (DEBUG_BUILD) {\n          // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n          // control flow, log just the message (no stack) as a log-level log.\n          const sentryError = reason as SentryError;\n          if (sentryError.logLevel === 'log') {\n            logger.log(sentryError.message);\n          } else {\n            logger.warn(sentryError);\n          }\n        }\n        return undefined;\n      },\n    );\n  }\n\n  /**\n   * Processes an event (either error or message) and sends it to Sentry.\n   *\n   * This also adds breadcrumbs and context information to the event. However,\n   * platform specific meta data (such as the User's IP address) must be added\n   * by the SDK implementor.\n   *\n   *\n   * @param event The event to send to Sentry.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n   */\n  protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event> {\n    const options = this.getOptions();\n    const { sampleRate } = options;\n\n    const isTransaction = isTransactionEvent(event);\n    const isError = isErrorEvent(event);\n    const eventType = event.type || 'error';\n    const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n    // 1.0 === 100% events are sent\n    // 0.0 === 0% events are sent\n    // Sampling for transaction happens somewhere else\n    if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n      this.recordDroppedEvent('sample_rate', 'error', event);\n      return rejectedSyncPromise(\n        new SentryError(\n          `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n          'log',\n        ),\n      );\n    }\n\n    const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n    return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope)\n      .then(prepared => {\n        if (prepared === null) {\n          this.recordDroppedEvent('event_processor', dataCategory, event);\n          throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n        }\n\n        const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n        if (isInternalException) {\n          return prepared;\n        }\n\n        const result = processBeforeSend(options, prepared, hint);\n        return _validateBeforeSendResult(result, beforeSendLabel);\n      })\n      .then(processedEvent => {\n        if (processedEvent === null) {\n          this.recordDroppedEvent('before_send', dataCategory, event);\n          throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n        }\n\n        const session = scope && scope.getSession();\n        if (!isTransaction && session) {\n          this._updateSessionFromEvent(session, processedEvent);\n        }\n\n        // None of the Sentry built event processor will update transaction name,\n        // so if the transaction name has been changed by an event processor, we know\n        // it has to come from custom event processor added by a user\n        const transactionInfo = processedEvent.transaction_info;\n        if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n          const source = 'custom';\n          processedEvent.transaction_info = {\n            ...transactionInfo,\n            source,\n          };\n        }\n\n        this.sendEvent(processedEvent, hint);\n        return processedEvent;\n      })\n      .then(null, reason => {\n        if (reason instanceof SentryError) {\n          throw reason;\n        }\n\n        this.captureException(reason, {\n          data: {\n            __sentry__: true,\n          },\n          originalException: reason,\n        });\n        throw new SentryError(\n          `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n        );\n      });\n  }\n\n  /**\n   * Occupies the client with processing and event\n   */\n  protected _process<T>(promise: PromiseLike<T>): void {\n    this._numProcessing++;\n    void promise.then(\n      value => {\n        this._numProcessing--;\n        return value;\n      },\n      reason => {\n        this._numProcessing--;\n        return reason;\n      },\n    );\n  }\n\n  /**\n   * @inheritdoc\n   */\n  protected _sendEnvelope(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> | void {\n    this.emit('beforeEnvelope', envelope);\n\n    if (this._isEnabled() && this._transport) {\n      return this._transport.send(envelope).then(null, reason => {\n        DEBUG_BUILD && logger.error('Error while sending event:', reason);\n      });\n    } else {\n      DEBUG_BUILD && logger.error('Transport disabled');\n    }\n  }\n\n  /**\n   * Clears outcomes on this client and returns them.\n   */\n  protected _clearOutcomes(): Outcome[] {\n    const outcomes = this._outcomes;\n    this._outcomes = {};\n    return Object.keys(outcomes).map(key => {\n      const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n      return {\n        reason,\n        category,\n        quantity: outcomes[key],\n      };\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike<Event>;\n\n  /**\n   * @inheritDoc\n   */\n  public abstract eventFromMessage(\n    _message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    _level?: Severity | SeverityLevel,\n    _hint?: EventHint,\n  ): PromiseLike<Event>;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n  beforeSendResult: PromiseLike<Event | null> | Event | null,\n  beforeSendLabel: string,\n): PromiseLike<Event | null> | Event | null {\n  const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n  if (isThenable(beforeSendResult)) {\n    return beforeSendResult.then(\n      event => {\n        if (!isPlainObject(event) && event !== null) {\n          throw new SentryError(invalidValueError);\n        }\n        return event;\n      },\n      e => {\n        throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n      },\n    );\n  } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n    throw new SentryError(invalidValueError);\n  }\n  return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n): PromiseLike<Event | null> | Event | null {\n  const { beforeSend, beforeSendTransaction } = options;\n\n  if (isErrorEvent(event) && beforeSend) {\n    return beforeSend(event, hint);\n  }\n\n  if (isTransactionEvent(event) && beforeSendTransaction) {\n    return beforeSendTransaction(event, hint);\n  }\n\n  return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n  return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n  return event.type === 'transaction';\n}\n\n/**\n * Add an event processor to the current client.\n * This event processor will run for all events processed by this client.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n  const client = getClient();\n\n  if (!client || !client.addEventProcessor) {\n    return;\n  }\n\n  client.addEventProcessor(callback);\n}\n","// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { getGlobalObject } from '../worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n  // NOTE: in Chrome App environment, touching history.pushState, *even inside\n  //       a try/catch block*, will cause Chrome to output an error to console.error\n  // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n  /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const chromeVar = (WINDOW as any).chrome;\n  const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n  /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n  const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n  return !isChromePackagedApp && hasHistoryApi;\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataHistory } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsHistory } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nlet lastHref: string | undefined;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addHistoryInstrumentationHandler(handler: (data: HandlerDataHistory) => void): void {\n  const type = 'history';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory(): void {\n  if (!supportsHistory()) {\n    return;\n  }\n\n  const oldOnPopState = WINDOW.onpopstate;\n  WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n    const to = WINDOW.location.href;\n    // keep track of the current URL state, as we always receive only the updated state\n    const from = lastHref;\n    lastHref = to;\n    const handlerData: HandlerDataHistory = { from, to };\n    triggerHandlers('history', handlerData);\n    if (oldOnPopState) {\n      // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n      // https://github.com/getsentry/sentry-javascript/issues/3344\n      // https://github.com/bugsnag/bugsnag-js/issues/469\n      try {\n        return oldOnPopState.apply(this, args);\n      } catch (_oO) {\n        // no-empty\n      }\n    }\n  };\n\n  function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n    return function (this: History, ...args: any[]): void {\n      const url = args.length > 2 ? args[2] : undefined;\n      if (url) {\n        // coerce to string (this is what pushState does)\n        const from = lastHref;\n        const to = String(url);\n        // keep track of the current URL state, as we always receive only the updated state\n        lastHref = to;\n        const handlerData: HandlerDataHistory = { from, to };\n        triggerHandlers('history', handlerData);\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n\n  fill(WINDOW.history, 'pushState', historyReplacementFunction);\n  fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n"],"sourceRoot":""}